Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
dcf6580a95
|
|
@ -51,6 +51,7 @@ import llc.arma.ble.domain.usecase.FftAxis
|
|||
import llc.arma.ble.domain.usecase.FftFrequency
|
||||
import llc.arma.ble.domain.usecase.FftViewMode
|
||||
import llc.arma.ble.domain.usecase.GetAccelerometerHistoryBySerial
|
||||
import llc.arma.ble.domain.usecase.GetBleBySerial
|
||||
import llc.arma.ble.domain.usecase.MeasureData
|
||||
import java.util.Date
|
||||
|
||||
|
|
@ -78,7 +79,7 @@ fun AccelerometerHistory(
|
|||
val state = viewModel.viewState.value
|
||||
|
||||
LaunchedEffect(ble.serial) {
|
||||
viewModel.setEvent(AccelerometerHistoryContract.Event.OnStart(ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
||||
viewModel.setEvent(AccelerometerHistoryContract.Event.OnStart(ble.name, ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
||||
}
|
||||
|
||||
/*DisposableEffect("ble") {
|
||||
|
|
@ -130,7 +131,7 @@ fun AccelerometerHistory(
|
|||
|
||||
IconButton(
|
||||
onClick = {
|
||||
viewModel.setEvent(AccelerometerHistoryContract.Event.OnRefreshHistory(ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
||||
viewModel.setEvent(AccelerometerHistoryContract.Event.OnRefreshHistory(ble.name, ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
||||
},
|
||||
enabled = when(state){
|
||||
is AccelerometerHistoryContract.State.Display -> state.loadingHistoryState is ProgressState.Finished
|
||||
|
|
@ -425,6 +426,7 @@ class AccelerometerHistoryContract {
|
|||
object OnExport : Event()
|
||||
|
||||
data class OnStart(
|
||||
val bleName: String,
|
||||
val serial: String,
|
||||
val accelScale: AccelScale,
|
||||
val accelMode: AccelViewMode,
|
||||
|
|
@ -434,6 +436,7 @@ class AccelerometerHistoryContract {
|
|||
) : Event()
|
||||
|
||||
data class OnRefreshHistory(
|
||||
val bleName: String,
|
||||
val serial: String,
|
||||
val accelScale: AccelScale,
|
||||
val accelMode: AccelViewMode,
|
||||
|
|
@ -447,6 +450,7 @@ class AccelerometerHistoryContract {
|
|||
sealed class State : ViewState {
|
||||
|
||||
data class Display(
|
||||
val bleName: String,
|
||||
val loadingHistoryState : ProgressState<List<Ble.Accelerometer.HistoryPoint>>
|
||||
) : State()
|
||||
|
||||
|
|
@ -465,7 +469,8 @@ class AccelerometerHistoryContract {
|
|||
@HiltViewModel
|
||||
class AccelerometerHistoryViewModel @Inject constructor(
|
||||
private val getAccelerometerHistoryBySerial: GetAccelerometerHistoryBySerial,
|
||||
private val exportToXlsx: ExportToXlsx
|
||||
private val exportToXlsx: ExportToXlsx,
|
||||
private val getBleBySerial: GetBleBySerial
|
||||
) : BaseViewModel<AccelerometerHistoryContract.State, AccelerometerHistoryContract.Event, AccelerometerHistoryContract.Effect>() {
|
||||
|
||||
var measureJob: Job? = null
|
||||
|
|
@ -473,6 +478,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
|||
private var lastSerial: String? = null
|
||||
|
||||
override fun setInitialState() = AccelerometerHistoryContract.State.Display(
|
||||
"",
|
||||
ProgressState.Indeterminate
|
||||
)
|
||||
|
||||
|
|
@ -492,7 +498,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
|||
|
||||
if(state is AccelerometerHistoryContract.State.Display){
|
||||
if(state.loadingHistoryState is ProgressState.Finished){
|
||||
exportToXlsx.invoke(state.loadingHistoryState.data)
|
||||
exportToXlsx.invoke(state.bleName, state.loadingHistoryState.data)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -526,7 +532,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
|||
lastSerial = event.serial
|
||||
|
||||
setState {
|
||||
AccelerometerHistoryContract.State.Display(ProgressState.Indeterminate)
|
||||
AccelerometerHistoryContract.State.Display(event.bleName, ProgressState.Indeterminate)
|
||||
}
|
||||
|
||||
measureJob?.cancel()
|
||||
|
|
@ -536,7 +542,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
|||
it.fold(
|
||||
onSuccess = {
|
||||
setState {
|
||||
AccelerometerHistoryContract.State.Display(it)
|
||||
AccelerometerHistoryContract.State.Display(event.bleName, it)
|
||||
}
|
||||
},
|
||||
onFailure = {
|
||||
|
|
@ -562,7 +568,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
|||
viewModelScope.launch {
|
||||
|
||||
setState {
|
||||
AccelerometerHistoryContract.State.Display(ProgressState.Indeterminate)
|
||||
AccelerometerHistoryContract.State.Display("", ProgressState.Indeterminate)
|
||||
}
|
||||
|
||||
measureJob?.cancel()
|
||||
|
|
@ -572,7 +578,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
|||
it.fold(
|
||||
onSuccess = {
|
||||
setState {
|
||||
AccelerometerHistoryContract.State.Display(it)
|
||||
AccelerometerHistoryContract.State.Display(event.bleName, it)
|
||||
}
|
||||
},
|
||||
onFailure = {
|
||||
|
|
|
|||
|
|
@ -23,11 +23,17 @@ class XlsxRepositoryImpl @Inject constructor(
|
|||
private val application: Application
|
||||
) : XlsxRepository {
|
||||
|
||||
override fun exportToXls(data: List<Ble.Accelerometer.HistoryPoint>): File {
|
||||
override fun exportToXls(
|
||||
bleName: String,
|
||||
data: List<Ble.Accelerometer.HistoryPoint>
|
||||
): File {
|
||||
|
||||
val fileNameDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
|
||||
val fileName = "$bleName ${fileNameDateFormat.format(Date(System.currentTimeMillis()))}.xlsx"
|
||||
|
||||
val formatter = SimpleDateFormat("dd.MM.yyyy HH:mm")
|
||||
|
||||
val mailFile = File(application.filesDir, "${UUID.randomUUID()}.xlsx")
|
||||
val mailFile = File(application.filesDir, fileName)
|
||||
mailFile.createNewFile()
|
||||
|
||||
when(data.firstOrNull()){
|
||||
|
|
@ -84,7 +90,7 @@ class XlsxRepositoryImpl @Inject constructor(
|
|||
workbook.write(saveFos)
|
||||
saveFos.close()
|
||||
|
||||
val sharedFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "${UUID.randomUUID()}.xlsx")
|
||||
val sharedFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName)
|
||||
sharedFile.createNewFile()
|
||||
|
||||
val sharedSaveFos = FileOutputStream(sharedFile)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@ import java.io.File
|
|||
|
||||
interface XlsxRepository {
|
||||
|
||||
fun exportToXls(data: List<Ble.Accelerometer.HistoryPoint>): File
|
||||
fun exportToXls(
|
||||
bleName: String,
|
||||
data: List<Ble.Accelerometer.HistoryPoint>
|
||||
): File
|
||||
|
||||
}
|
||||
|
|
@ -24,9 +24,12 @@ class ExportToXlsx @Inject constructor(
|
|||
private val emailRepository: EmailRepository
|
||||
) {
|
||||
|
||||
operator fun invoke(data: List<Ble.Accelerometer.HistoryPoint>){
|
||||
operator fun invoke(
|
||||
bleName: String,
|
||||
data: List<Ble.Accelerometer.HistoryPoint>
|
||||
){
|
||||
|
||||
val file = xlsxRepository.exportToXls(data)
|
||||
val file = xlsxRepository.exportToXls(bleName, data)
|
||||
emailRepository.sendFile(file)
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue