Skip to content

Commit abf735c

Browse files
authored
Merge pull request #35 from packetdima/feature/attr-find
[bugfix] Исправить поиск местоположения
2 parents 6897c46 + a23170a commit abf735c

File tree

5 files changed

+67
-51
lines changed

5 files changed

+67
-51
lines changed

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ exposed = "0.60.0"
44
poi = "5.4.0"
55
compose = "1.7.3"
66
ktor = "3.1.1"
7-
datascanner = "1.1.1"
7+
datascanner = "1.1.3"
88
progressbar = "0.10.1"
99
log4j = "2.24.3"
1010
koin = "4.0.2"
@@ -49,7 +49,7 @@ sql-flyway = { module = "org.flywaydb:flyway-core", version.ref = "flyway" }
4949
ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor"}
5050
ktor-network = { module = "io.ktor:ktor-network", version.ref = "ktor"}
5151

52-
datascanner = { module = "info.downdetector.bigdatascanner:datascanner", version.ref = "datascanner"}
52+
datascanner = { module = "info.downdetector.bigdatascanner:core", version.ref = "datascanner"}
5353

5454
console-progressbar = { module = "me.tongfei:progressbar", version.ref = "progressbar" }
5555

shared/src/commonMain/composeResources/values-ru/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@
177177

178178
<string name="LocationWindow-Title">Местоположение атрибутов: %1$s</string>
179179
<string name="LocationWindow-Error">При поиске местоположения атрибутов произошла ошибка.</string>
180+
<string name="LocationWindow-NotFound">Местоположение не найдено.</string>
180181
<string name="Location-LongScanTitle">Глубокий поиск местонахождения атрибутов</string>
181182
<string name="Location-LongScanText">Поиск местонахождения атрибутов занимает много времени. Вы уверены, что хотите продолжить?</string>
182183
<string name="Location-LineNumber">Строка %1$d</string>

shared/src/commonMain/composeResources/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@
181181

182182
<string name="LocationWindow-Title">Searching location for %1$s</string>
183183
<string name="LocationWindow-Error">Error while searching location.</string>
184+
<string name="LocationWindow-NotFound">Location not found.</string>
184185
<string name="Location-LongScanTitle">Attribute location deep search</string>
185186
<string name="Location-LongScanText">Searching for attribute location takes a long time to scan. Are you sure you want to scan it?</string>
186187
<string name="Location-LineNumber">Line %1$d</string>

shared/src/commonMain/kotlin/ru/packetdima/datascanner/scan/common/files/types/IFileType.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ interface IFileType: KoinComponent {
2121
suspend fun findLocation(
2222
filePath: String,
2323
detectFunction: IDetectFunction,
24-
fastScan: Boolean = true
24+
fastScan: Boolean = false
2525
): List<Location>
2626

2727
fun getEntries(text: String, detectFunction: IDetectFunction): List<String> {

shared/src/desktopMain/kotlin/ru/packetdima/datascanner/ui/windows/screens/scans/components/AttributeLocationWindow.kt

Lines changed: 62 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import org.jetbrains.compose.resources.getString
2323
import org.jetbrains.compose.resources.stringResource
2424
import ru.packetdima.datascanner.resources.Error_FileOpen
2525
import ru.packetdima.datascanner.resources.LocationWindow_Error
26+
import ru.packetdima.datascanner.resources.LocationWindow_NotFound
2627
import ru.packetdima.datascanner.resources.LocationWindow_Title
2728
import ru.packetdima.datascanner.resources.Res
2829
import ru.packetdima.datascanner.scan.common.files.Location
@@ -47,13 +48,17 @@ fun AttributeLocationWindow(
4748

4849
var errorSearching by remember { mutableStateOf(false) }
4950

51+
var failedToFind by remember { mutableStateOf(false) }
52+
5053
coroutineScope.launch {
5154
searching = true
5255
try {
5356
locations = LocationFinder.findLocations(
5457
filePath,
5558
attribute
5659
)
60+
if (locations.isEmpty())
61+
failedToFind = true
5762
} catch (_: Exception) {
5863
errorSearching = true
5964
}
@@ -163,63 +168,72 @@ fun AttributeLocationWindow(
163168
if (searching) {
164169
CircularProgressIndicator()
165170
} else {
166-
Scaffold(
167-
modifier = Modifier
168-
.fillMaxSize(),
169-
snackbarHost = { SnackbarHost(snackbarHostState) }
170-
) {
171-
Box(
171+
if (failedToFind) {
172+
Spacer(Modifier.height(20.dp))
173+
Text(
174+
text = stringResource(Res.string.LocationWindow_NotFound),
175+
style = MaterialTheme.typography.bodyLarge,
176+
color = MaterialTheme.colorScheme.primary
177+
)
178+
} else {
179+
Scaffold(
172180
modifier = Modifier
173-
.fillMaxSize()
174-
.padding(8.dp)
175-
.background(color = MaterialTheme.colorScheme.surface)
176-
.padding(vertical = 8.dp)
181+
.fillMaxSize(),
182+
snackbarHost = { SnackbarHost(snackbarHostState) }
177183
) {
178-
179-
LazyColumn(
180-
verticalArrangement = Arrangement.spacedBy(12.dp),
184+
Box(
181185
modifier = Modifier
182-
.padding(
183-
start = 8.dp,
184-
end = if (scrollState.canScrollBackward || scrollState.canScrollForward) 20.dp else 8.dp
185-
),
186-
state = scrollState
186+
.fillMaxSize()
187+
.padding(8.dp)
188+
.background(color = MaterialTheme.colorScheme.surface)
189+
.padding(vertical = 8.dp)
187190
) {
188-
items(locations) { location ->
189-
Row(
190-
horizontalArrangement = Arrangement.spacedBy(12.dp),
191-
modifier = Modifier
192-
.fillMaxWidth()
193-
) {
194-
Text(
195-
modifier = Modifier
196-
.weight(0.8f)
197-
.fillMaxWidth(),
198-
text = location.entry,
199-
style = MaterialTheme.typography.bodySmall
200-
)
201-
Text(
191+
192+
LazyColumn(
193+
verticalArrangement = Arrangement.spacedBy(12.dp),
194+
modifier = Modifier
195+
.padding(
196+
start = 8.dp,
197+
end = if (scrollState.canScrollBackward || scrollState.canScrollForward) 20.dp else 8.dp
198+
),
199+
state = scrollState
200+
) {
201+
items(locations) { location ->
202+
Row(
203+
horizontalArrangement = Arrangement.spacedBy(12.dp),
202204
modifier = Modifier
203-
.weight(0.2f)
204-
.fillMaxWidth(),
205-
text = location.location,
206-
style = MaterialTheme.typography.bodySmall
207-
)
205+
.fillMaxWidth()
206+
) {
207+
Text(
208+
modifier = Modifier
209+
.weight(0.8f)
210+
.fillMaxWidth(),
211+
text = location.entry,
212+
style = MaterialTheme.typography.bodySmall
213+
)
214+
Text(
215+
modifier = Modifier
216+
.weight(0.2f)
217+
.fillMaxWidth(),
218+
text = location.location,
219+
style = MaterialTheme.typography.bodySmall
220+
)
221+
}
208222
}
209223
}
210-
}
211224

212-
VerticalScrollbar(
213-
adapter = rememberScrollbarAdapter(scrollState),
214-
modifier = Modifier
215-
.align(Alignment.CenterEnd)
216-
.padding(end = 6.dp)
217-
.width(10.dp),
218-
style = LocalScrollbarStyle.current.copy(
219-
hoverColor = MaterialTheme.colorScheme.primary,
220-
unhoverColor = MaterialTheme.colorScheme.secondary
225+
VerticalScrollbar(
226+
adapter = rememberScrollbarAdapter(scrollState),
227+
modifier = Modifier
228+
.align(Alignment.CenterEnd)
229+
.padding(end = 6.dp)
230+
.width(10.dp),
231+
style = LocalScrollbarStyle.current.copy(
232+
hoverColor = MaterialTheme.colorScheme.primary,
233+
unhoverColor = MaterialTheme.colorScheme.secondary
234+
)
221235
)
222-
)
236+
}
223237
}
224238
}
225239
}

0 commit comments

Comments
 (0)