Parcourir la source

add entity and modelDb for Measure
add mapper, DAO

MrOzOn il y a 5 ans
Parent
commit
36a74ed4fc

+ 2 - 1
core_api/src/main/java/com/mrozon/core_api/db/HealthDiaryDao.kt

@@ -1,9 +1,10 @@
 package com.mrozon.core_api.db
 
 import androidx.room.Dao
+import com.mrozon.core_api.db.dao.MeasureDao
 import com.mrozon.core_api.db.dao.MeasureTypeDao
 import com.mrozon.core_api.db.dao.PersonDao
 import com.mrozon.core_api.db.dao.UserDao
 
 @Dao
-interface HealthDiaryDao: UserDao, PersonDao, MeasureTypeDao
+interface HealthDiaryDao: UserDao, PersonDao, MeasureTypeDao, MeasureDao

+ 29 - 0
core_api/src/main/java/com/mrozon/core_api/db/dao/MeasureDao.kt

@@ -0,0 +1,29 @@
+package com.mrozon.core_api.db.dao
+
+import androidx.room.*
+import com.mrozon.core_api.db.model.MeasureTypeDb
+import com.mrozon.core_api.db.model.PersonDb
+import kotlinx.coroutines.flow.Flow
+
+@Dao
+interface MeasureDao {
+
+//    @Insert(onConflict = OnConflictStrategy.REPLACE)
+//    suspend fun insertAllMeasureType(persons: List<MeasureTypeDb>)
+//
+//    @Query("DELETE FROM measure_type_table")
+//    suspend fun deleteAllMeasureType()
+//
+//    @Transaction
+//    suspend fun reloadMeasureType(measureTypes: List<MeasureTypeDb>) {
+//        deleteAllMeasureType()
+//        insertAllMeasureType(measureTypes)
+//    }
+//
+//    @Query("SELECT * FROM measure_type_table")
+//    fun getMeasureTypes(): Flow<List<MeasureTypeDb>>
+//
+//    @Query("SELECT * FROM measure_type_table")
+//    fun getListMeasureTypes(): List<MeasureTypeDb>
+
+}

+ 31 - 0
core_api/src/main/java/com/mrozon/core_api/db/model/MeasureDb.kt

@@ -0,0 +1,31 @@
+package com.mrozon.core_api.db.model
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import java.util.*
+
+@Entity(tableName = "measure_table")
+data class MeasureDb (
+    @PrimaryKey(autoGenerate = true)
+    @ColumnInfo(name = "measure_id")
+    var id: Long = 0L,
+
+    @ColumnInfo(name = "measure_value1")
+    val value1: String = "",
+
+    @ColumnInfo(name = "measure_value2")
+    val value2: String = "",
+
+    @ColumnInfo(name = "measure_value_added")
+    val added: Date = Date(),
+
+    @ColumnInfo(name = "measure_comment")
+    val comment: String = "",
+
+    @ColumnInfo(name = "measure_person")
+    val personID: Long = 0L,
+
+    @ColumnInfo(name = "measure_mtype")
+    val measureTypeId: Long = 0L
+)

+ 13 - 0
core_api/src/main/java/com/mrozon/core_api/entity/Measure.kt

@@ -0,0 +1,13 @@
+package com.mrozon.core_api.entity
+
+import java.util.*
+
+data class Measure (
+    val id: Long = 0L,
+    val value1: String,
+    val value2: String,
+    val valueAdded: Date,
+    val comment: String,
+    val personId: Long,
+    val measureTypeId: Long
+)

+ 39 - 0
core_api/src/main/java/com/mrozon/core_api/mapper/MeasureToMeasureDbMapper.kt

@@ -0,0 +1,39 @@
+package com.mrozon.core_api.mapper
+
+import com.mrozon.core_api.db.model.MeasureDb
+import com.mrozon.core_api.entity.Measure
+import com.mrozon.utils.base.BaseMapper
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class MeasureToMeasureDbMapper @Inject constructor(): BaseMapper<Measure, MeasureDb>()  {
+
+    override fun map(entity: Measure?): MeasureDb? {
+        entity?.let {
+            return MeasureDb(id = it.id,
+                value1 = it.value1,
+                value2 = it.value2,
+                added = it.valueAdded,
+                comment = it.comment,
+                personID = it.personId,
+                measureTypeId = it.measureTypeId
+            )
+        }
+        return null
+    }
+
+    override fun reverseMap(model: MeasureDb?): Measure? {
+        model?.let {
+            return Measure(id = it.id,
+                value1 = it.value1,
+                value2 = it.value2,
+                valueAdded = it.added,
+                comment = it.comment,
+                personId = it.personID,
+                measureTypeId = it.measureTypeId
+            )
+        }
+        return null
+    }
+}

+ 2 - 1
core_impl/src/main/java/com/mrozon/core_impl/db/HealthDiaryDb.kt

@@ -3,9 +3,10 @@ package com.mrozon.core_impl.db
 import androidx.room.Database
 import androidx.room.RoomDatabase
 import com.mrozon.core_api.db.HealthDiaryDatabaseContract
+import com.mrozon.core_api.db.model.MeasureDb
 import com.mrozon.core_api.db.model.MeasureTypeDb
 import com.mrozon.core_api.db.model.PersonDb
 import com.mrozon.core_api.db.model.UserDb
 
-@Database(entities = [UserDb::class, PersonDb::class, MeasureTypeDb::class], version = 1)
+@Database(entities = [UserDb::class, PersonDb::class, MeasureTypeDb::class, MeasureDb::class], version = 1)
 abstract class HealthDiaryDb : RoomDatabase(), HealthDiaryDatabaseContract

+ 3 - 0
feature_measure/src/main/java/com/mrozon/feature_measure/data/MeasureRepository.kt

@@ -1,5 +1,6 @@
 package com.mrozon.feature_measure.data
 
+import com.mrozon.core_api.entity.Measure
 import com.mrozon.core_api.entity.MeasureType
 import com.mrozon.core_api.entity.Person
 import com.mrozon.utils.network.Result
@@ -8,4 +9,6 @@ import kotlinx.coroutines.flow.Flow
 interface MeasureRepository {
 
     fun loadProfilePersonAndMeasureTypes(id: Long): Flow<Result<Pair<Person,List<MeasureType>>>>
+
+    fun loadMeasure(personId: Long, measureTypeId: Long): Flow<Result<List<Measure>>>
 }

+ 5 - 0
feature_measure/src/main/java/com/mrozon/feature_measure/data/MeasureRepositoryImpl.kt

@@ -1,6 +1,7 @@
 package com.mrozon.feature_measure.data
 
 import com.mrozon.core_api.db.HealthDiaryDao
+import com.mrozon.core_api.entity.Measure
 import com.mrozon.core_api.entity.MeasureType
 import com.mrozon.core_api.entity.Person
 import com.mrozon.core_api.mapper.MeasureTypeToMeasureTypeDbMapper
@@ -32,5 +33,9 @@ class MeasureRepositoryImpl @Inject constructor(
         }
     }
 
+    override fun loadMeasure(personId: Long, measureTypeId: Long): Flow<Result<List<Measure>>> {
+        TODO("Not yet implemented")
+    }
+
 
 }

+ 5 - 2
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/ListMeasureFragment.kt

@@ -23,14 +23,17 @@ class ListMeasureFragment : BaseFragment<FragmentListMeasureBinding>() {
                 putLong(ARG_PERSON_ID, personId)
                 putLong(ARG_MEASURE_TYPE_ID, measureTypeId)
             }
-            Timber.d("getInstance measureTypeId=$measureTypeId")
             return fragment
         }
     }
 
     override fun onResume() {
         super.onResume()
-        Timber.d("onResume")
+        arguments?.let {
+            val personId = requireArguments().getLong(ARG_PERSON_ID, -1)
+            val measureTypeId = requireArguments().getLong(ARG_MEASURE_TYPE_ID, -1)
+            show("personId=$personId, measureTypeId=$measureTypeId")
+        }
     }
 
     override fun getLayoutId(): Int = R.layout.fragment_list_measure

+ 14 - 0
feature_measure/src/main/res/drawable/ic_day.xml

@@ -0,0 +1,14 @@
+<vector android:height="55dp" android:viewportHeight="300"
+    android:viewportWidth="300" android:width="55dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillAlpha="0.75" android:fillColor="#5CCAFF" android:pathData="M300,150C300,232.843 232.843,300 150,300C87.232,300 33.468,261.447 11.098,206.728C3.943,189.228 0,170.075 0,150C0,67.157 67.157,0 150,0C232.843,0 300,67.157 300,150Z"/>
+    <path android:fillColor="#D6FFFB" android:fillType="evenOdd" android:pathData="M92.682,288.483C88.062,280.647 85.411,271.511 85.411,261.756C85.411,244.682 93.532,229.504 106.123,219.875C104.266,214.489 103.258,208.708 103.258,202.691C103.258,173.591 126.848,150 155.949,150C160.978,150 165.842,150.704 170.448,152.02C179.914,137.984 195.961,128.754 214.164,128.754C237.036,128.754 256.504,143.326 263.79,163.693C267.642,162.797 271.655,162.323 275.779,162.323C284.26,162.323 292.272,164.326 299.369,167.886C290.528,242.297 227.215,300 150.425,300C129.962,300 110.456,295.902 92.682,288.483Z"/>
+    <path android:fillColor="#FFE021" android:pathData="M118.98,78.399a31.657,31.657 0,1 0,63.314 0a31.657,31.657 0,1 0,-63.314 0z"/>
+    <path android:fillColor="#FFE021" android:pathData="M196.53,73.513L211.402,73.513A4.887,4.887 0,0 1,216.289 78.399L216.289,78.399A4.887,4.887 0,0 1,211.402 83.286L196.53,83.286A4.887,4.887 0,0 1,191.643 78.399L191.643,78.399A4.887,4.887 0,0 1,196.53 73.513z"/>
+    <path android:fillColor="#FFE021" android:pathData="M88.598,73.513L103.47,73.513A4.887,4.887 0,0 1,108.357 78.399L108.357,78.399A4.887,4.887 0,0 1,103.47 83.286L88.598,83.286A4.887,4.887 0,0 1,83.711 78.399L83.711,78.399A4.887,4.887 0,0 1,88.598 73.513z"/>
+    <path android:fillColor="#FFE021" android:pathData="M185.861,107.988L196.378,118.505A4.887,4.887 0,0 1,196.378 125.416L196.378,125.416A4.887,4.887 0,0 1,189.467 125.416L178.951,114.899A4.887,4.887 90,0 1,178.951 107.988L178.951,107.988A4.887,4.887 90,0 1,185.861 107.988z"/>
+    <path android:fillColor="#FFE021" android:pathData="M109.799,31.501L120.316,42.017A4.887,4.887 45.169,0 1,120.316 48.928L120.316,48.928A4.887,4.887 45.169,0 1,113.405 48.928L102.889,38.412A4.887,4.887 45.169,0 1,102.889 31.501L102.889,31.501A4.887,4.887 45.169,0 1,109.799 31.501z"/>
+    <path android:fillColor="#FFE021" android:pathData="M145.751,31.232L145.751,16.36A4.887,4.887 0,0 1,150.638 11.473L150.638,11.473A4.887,4.887 0,0 1,155.524 16.36L155.524,31.232A4.887,4.887 0,0 1,150.638 36.119L150.638,36.119A4.887,4.887 0,0 1,145.751 31.232z"/>
+    <path android:fillColor="#FFE021" android:pathData="M145.751,139.164L145.751,124.292A4.887,4.887 0,0 1,150.638 119.405L150.638,119.405A4.887,4.887 0,0 1,155.524 124.292L155.524,139.164A4.887,4.887 0,0 1,150.638 144.051L150.638,144.051A4.887,4.887 0,0 1,145.751 139.164z"/>
+    <path android:fillColor="#FFE021" android:pathData="M102.889,117.23L113.405,106.713A4.887,4.887 45.169,0 1,120.316 106.713L120.316,106.713A4.887,4.887 45.169,0 1,120.316 113.624L109.8,124.14A4.887,4.887 45.169,0 1,102.889 124.14L102.889,124.14A4.887,4.887 45.169,0 1,102.889 117.23z"/>
+    <path android:fillColor="#FFE021" android:pathData="M178.951,42.017L189.468,31.501A4.887,4.887 90,0 1,196.379 31.501L196.379,31.501A4.887,4.887 90,0 1,196.379 38.412L185.862,48.928A4.887,4.887 0,0 1,178.951 48.928L178.951,48.928A4.887,4.887 0,0 1,178.951 42.017z"/>
+</vector>

+ 16 - 0
feature_measure/src/main/res/drawable/ic_edit.xml

@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
+  <path
+      android:pathData="M3.3333,4.1667C3.1123,4.1667 2.9004,4.2545 2.7441,4.4107C2.5878,4.567 2.5,4.779 2.5,5V16.6667C2.5,16.8877 2.5878,17.0996 2.7441,17.2559C2.9004,17.4122 3.1123,17.5 3.3333,17.5H15C15.221,17.5 15.433,17.4122 15.5892,17.2559C15.7455,17.0996 15.8333,16.8877 15.8333,16.6667V12.2167C15.8333,11.7564 16.2064,11.3833 16.6667,11.3833C17.1269,11.3833 17.5,11.7564 17.5,12.2167V16.6667C17.5,17.3297 17.2366,17.9656 16.7678,18.4344C16.2989,18.9033 15.663,19.1667 15,19.1667H3.3333C2.6703,19.1667 2.0344,18.9033 1.5656,18.4344C1.0967,17.9656 0.8333,17.3297 0.8333,16.6667V5C0.8333,4.337 1.0967,3.7011 1.5656,3.2322C2.0344,2.7634 2.6703,2.5 3.3333,2.5H7.7833C8.2436,2.5 8.6167,2.8731 8.6167,3.3333C8.6167,3.7936 8.2436,4.1667 7.7833,4.1667H3.3333Z"
+      android:fillColor="#000000"
+      android:fillAlpha="0.5"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M14.4107,1.0775C14.7362,0.752 15.2638,0.752 15.5893,1.0775L18.9226,4.4108C19.248,4.7362 19.248,5.2639 18.9226,5.5893L10.5893,13.9226C10.433,14.0789 10.221,14.1667 10,14.1667H6.6667C6.2064,14.1667 5.8333,13.7936 5.8333,13.3334V10C5.8333,9.779 5.9211,9.5671 6.0774,9.4108L14.4107,1.0775ZM7.5,10.3452V12.5H9.6548L17.1548,5L15,2.8452L7.5,10.3452Z"
+      android:fillColor="#000000"
+      android:fillAlpha="0.5"
+      android:fillType="evenOdd"/>
+</vector>

+ 6 - 0
feature_measure/src/main/res/drawable/ic_evening.xml

@@ -0,0 +1,6 @@
+<vector android:height="55dp" android:viewportHeight="300"
+    android:viewportWidth="300" android:width="55dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#FF9170" android:pathData="M300,149.797C300,232.527 232.843,299.593 150,299.593C87.232,299.593 33.468,261.092 11.098,206.448C3.943,188.971 0,169.844 0,149.797C0,67.066 67.157,0 150,0C232.843,0 300,67.066 300,149.797Z"/>
+    <path android:fillColor="#FFD545" android:fillType="evenOdd" android:pathData="M154.72,165.383C146.296,183.014 128.226,195.202 107.295,195.202C86.248,195.202 68.096,182.88 59.732,165.094C63.076,163.678 65.014,161.997 65.014,160.193C65.014,157.794 61.585,155.611 55.978,153.982C55.217,150.444 54.816,146.772 54.816,143.007C54.816,136.99 55.84,131.211 57.723,125.832C66.973,124.204 73.088,121.386 73.088,118.182C73.088,115.907 70.005,113.827 64.906,112.229C74.452,99.245 89.883,90.812 107.295,90.812C125.02,90.812 140.692,99.552 150.194,112.935C146.324,114.419 144.051,116.229 144.051,118.182C144.051,121.058 148.977,123.623 156.675,125.295C158.68,130.825 159.773,136.789 159.773,143.007C159.773,146.682 159.391,150.269 158.665,153.73C152.525,155.382 148.725,157.668 148.725,160.193C148.725,162.121 150.94,163.91 154.72,165.383Z"/>
+    <path android:fillColor="#6D6B6C" android:pathData="M292.351,199.074C285.309,218.622 296.58,189.512 289.041,207.66C281.501,225.808 270.451,242.298 256.52,256.188C242.588,270.078 226.05,281.096 207.848,288.614C189.646,296.131 170.138,300 150.436,300C130.735,300 111.226,296.131 93.024,288.614C74.823,281.096 58.284,270.078 44.353,256.188C30.422,242.298 19.371,225.808 11.832,207.66C4.292,189.512 8.521,201.199 3.399,182.511C21.017,169.347 31.629,164.486 52.269,161.678C52.269,161.678 71.903,161.678 81.933,164.866C91.963,168.053 106.261,174.852 106.261,174.852C111.17,178.039 112.877,178.676 118.639,182.511C122.866,186.725 127.388,190.15 132.51,193.337C138.912,199.074 143.607,203.111 150.436,207.66C156.198,213.31 159.866,216.497 165.375,220.109C174.124,225.846 183.941,229.246 189.703,229.246C198.879,229.246 221.287,220.109 225.982,216.497C256.52,193.003 266.643,195.804 275.492,195.804L292.351,199.074Z"/>
+</vector>

+ 9 - 0
feature_measure/src/main/res/drawable/ic_morning.xml

@@ -0,0 +1,9 @@
+<vector android:height="55dp" android:viewportHeight="300"
+    android:viewportWidth="300" android:width="55dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#A8E2FA" android:pathData="M300,150C300,232.843 232.843,300 150,300C87.232,300 33.468,261.447 11.098,206.728C3.943,189.228 0,170.075 0,150C0,67.157 67.157,0 150,0C232.843,0 300,67.157 300,150Z"/>
+    <path android:fillColor="#B4A5FA" android:fillType="evenOdd" android:pathData="M288.467,207.365C265.737,261.294 212.381,299.15 150.183,299.15C87.985,299.15 34.628,261.294 11.898,207.365L288.467,207.365Z"/>
+    <path android:fillColor="#FFE694" android:fillType="evenOdd" android:pathData="M220.113,17.422L205.666,10.836V168.976C200.173,170.058 194.982,172.362 190.487,175.725L51.822,37.061C47.539,40.4 45.694,42.38 42.878,46.005L181.784,184.911C179.05,189.008 177.152,193.608 176.2,198.442H7.649L11.048,206.941H289.164L291.714,198.442H249.579C248.654,193.746 246.837,189.272 244.227,185.264L299.018,130.473L295.751,114.094L234.167,174.915C229.939,171.99 225.154,169.969 220.113,168.976V17.422Z"/>
+    <path android:fillColor="#FFFFFA" android:pathData="M204.391,216.289C215.483,224.118 221.034,228.659 229.783,237.004C209.033,225.7 197.936,225.968 178.999,237.004C187.05,228.61 192.46,224.05 204.391,216.289Z"/>
+    <path android:fillColor="#FFFFFA" android:pathData="M150.321,249.009C161.413,256.838 166.964,261.378 175.713,269.724C154.964,258.419 143.866,258.688 124.929,269.724C132.98,261.329 138.39,256.769 150.321,249.009Z"/>
+    <path android:fillColor="#FFFFFA" android:pathData="M95.93,216.289C107.022,224.118 112.573,228.659 121.322,237.004C100.573,225.7 89.476,225.968 70.538,237.004C78.589,228.61 84,224.05 95.93,216.289Z"/>
+</vector>

+ 7 - 0
feature_measure/src/main/res/drawable/ic_night.xml

@@ -0,0 +1,7 @@
+<vector android:height="55dp" android:viewportHeight="300"
+    android:viewportWidth="300" android:width="55dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#7373C9" android:pathData="M300,150C300,232.843 232.843,300 150,300C87.232,300 33.468,261.447 11.098,206.728C3.943,189.228 0,170.075 0,150C0,67.157 67.157,0 150,0C232.843,0 300,67.157 300,150Z"/>
+    <path android:fillColor="#FFF795" android:fillType="evenOdd" android:pathData="M147.533,233.709C181.797,233.709 209.573,205.838 209.573,171.457C209.573,153.406 201.916,137.15 189.684,125.779C223.714,126.053 251.216,153.818 251.216,188.029C251.216,222.41 223.44,250.281 189.176,250.281C172.902,250.281 158.091,243.994 147.025,233.707C147.195,233.708 147.364,233.709 147.533,233.709Z"/>
+    <path android:fillColor="#FFDF00" android:pathData="M75.637,119.405L83.505,135.347L101.098,137.903L88.368,150.312L91.373,167.833L75.637,159.561L59.902,167.833L62.907,150.312L50.177,137.903L67.77,135.347L75.637,119.405Z"/>
+    <path android:fillColor="#FFDF00" android:pathData="M140.652,38.244L150.268,57.601L171.77,60.706L156.211,75.773L159.884,97.049L140.652,87.004L121.42,97.049L125.093,75.773L109.534,60.706L131.036,57.601L140.652,38.244Z"/>
+</vector>

+ 76 - 7
feature_measure/src/main/res/layout/item_measure.xml

@@ -7,17 +7,86 @@
 
     </data>
 
-    <androidx.cardview.widget.CardView
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_width="match_parent">
+        android:id="@+id/layoutMeasure">
 
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/ivTimeOfDay"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:layout_marginStart="16dp"
+            android:layout_marginLeft="16dp"
+            android:layout_marginTop="8dp"
+            android:layout_marginBottom="8dp"
+            android:contentDescription="@string/ivTimeOfDay"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:srcCompat="@drawable/ic_day" />
 
 
-        </androidx.constraintlayout.widget.ConstraintLayout>
+        <ImageView
+            android:id="@+id/ivMeasureComment"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginTop="8dp"
+            android:contentDescription="@string/ivMeasureComment"
+            app:layout_constraintBottom_toTopOf="@+id/indicator_value"
+            app:layout_constraintStart_toEndOf="@+id/ivTimeOfDay"
+            app:layout_constraintTop_toTopOf="parent"
+            app:srcCompat="@drawable/ic_edit" />
 
-    </androidx.cardview.widget.CardView>
+        <TextView
+            android:id="@+id/indicator_value"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginEnd="8dp"
+            android:gravity="center"
+            android:text="120/70 мм рт.ст."
+            android:textAlignment="center"
+            android:textColor="#000000"
+            android:textSize="24sp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/ivTimeOfDay"
+            app:layout_constraintTop_toTopOf="parent"
+            tools:ignore="UnknownId" />
+
+        <TextView
+            android:id="@+id/indicator_dt"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginEnd="16dp"
+            android:layout_marginRight="16dp"
+            android:layout_marginBottom="2dp"
+            android:gravity="center"
+            android:text="27 мар. 17:40"
+            android:textAlignment="center"
+            android:textColor="#99000000"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/indicator_value"
+            tools:text="27 мар. 17:40" />
+
+        <TextView
+            android:id="@+id/indicator_comment_text"
+            android:layout_width="0dp"
+            android:layout_height="20dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginLeft="8dp"
+            android:layout_marginEnd="8dp"
+            android:layout_marginRight="8dp"
+            android:text="TextView"
+            app:layout_constraintBottom_toTopOf="@+id/indicator_value"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/ivMeasureComment" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
 </layout>

+ 5 - 0
feature_measure/src/main/res/values/strings.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="ivTimeOfDay">Time of day</string>
+    <string name="ivMeasureComment">comment</string>
+</resources>