From 17e2762f3b5cd55fbb15324603dd8a9af6002b86 Mon Sep 17 00:00:00 2001 From: Cutiful <113351087+Syaroful@users.noreply.github.com> Date: Thu, 12 Jun 2025 11:43:17 +0700 Subject: [PATCH] feat: implement commodity price prediction and growth recipe features --- .../commodity_price_prediction_icon.png | Bin 565 -> 1629 bytes .../app/src/main/res/drawable/luminosity.png | Bin 0 -> 4896 bytes .../PricePredictionActivity.kt | 48 ++++++++++++++++++ .../GrowthRecipeActivity.kt | 47 +++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 agrilinkvocpro/app/src/main/res/drawable/luminosity.png create mode 100644 agrilinkvocpro/commodity_price_prediction_feature/src/main/java/com/syaroful/agrilinkvocpro/commodity_price_prediction_feature/PricePredictionActivity.kt create mode 100644 agrilinkvocpro/growth_recipe_feature/src/main/java/com/syaroful/agrilinkvocpro/growth_recipe_feature/GrowthRecipeActivity.kt diff --git a/agrilinkvocpro/app/src/main/res/drawable/commodity_price_prediction_icon.png b/agrilinkvocpro/app/src/main/res/drawable/commodity_price_prediction_icon.png index ef8b42adf4b10f99f601b4bdb6a3f37d73490584..2772bafbc31cc6a16d4f317f527c3dd17d764ea0 100644 GIT binary patch literal 1629 zcmYk7dsNbA7{`AkB_h?{mJN=leX*`_KEH_dUuDWSe1D zVgLXz^X2#i8nGS#Kg^*eUjCBPD^*B>Xg?aETnlG000jJ=+X+pS^P4$US{ zPXskA0$5v#U##H>yq)^-&@EbsSHS8f1SgGZB93ZRuq1}wk1ubPGQmmw%O%R1z661C zs-c#<{fK6(^3avXLxbb6EgE!*sGUWuS<)f|8#?NXkK@P$Gwq$y+s(NxLqROZb~ktT zX;&X|uk~ZnrdQVnhOa*QcMb)WCn-lFPK+0-dGN%&`@dd9#d@jtCstiwMDWidUg$|t z)S5&$nXM55uP4t`YDd??CS*x1`cLS4&GO-#(=F{&7t-1e5Jk1C8)UY&$hpBnfnT!M zgJ&Y5xOacc27~3jMS~lv`w6mGFs~LdxuPIjJ#3yKCc3UBpjBT54N)lTg8VqLJ9GI~ z`759{&RGuFjctCF7nVp}m3Pz8#l2hT zm>dE`lW9 zB|uNfVCy@I@|`LJ^ge?Ywy=I55*OcDpKv(n-oD;%f-G?wJM)dEL!DI6RGwKG1u?_` zTa%`Idj>}*NjHJ|nF7s9aEJV$;OuFWM$fpbILPoclBUBb+yB79EB!2lIugju5L8Q(^9z-PiUrDMlIny4pMHBe+ZO-pyH1%WTbR+AN`H!D=Q+%JI22@Vz-{g0AAwoJmPty9gL>dd zO5be$&64IHFw^>tfAp^kzihL^*p-uV#|cRArvAO|be~OqJNu?TdX&u&r^?wqP(dyAkiqw)B)dAlO!|q%gG7_hRLf(L*PDh|iJoJ>264#q&&? z?%;>H-dTg&Kk1OsT+AUsHCqy685~lEih`VtCkS3RZ}G6{&A#&wuHFy1Az+BgXvqA$ zb?GF&rD_JFf$%`5Ao;fKNtcO z8ow~gghGv%T^tEfk!fNVuo32hFTq{-l0dl! z&nx`C*T(zTRR6j4Q!D6ogO7fr z;hh{kE4@MbplW82c`WdSzU_I|4D0$koJx@sU3dN4qRb**{o$^cG2@pkMm$76-AYeR zJyx2ks|_rkL0-A6_DBt!W*w{YD^pZI;XY2LkxA0)6Cgtmr=` C1=peg delta 546 zcmV+-0^R-H47CI{iBL{Q4GJ0x0000DNk~Le0000P0000O2nGNE01vfR#sB~S32;bR za{vGf6951U69E94oEVWdAAbSLNklvWln8^85S8@8BBYsU z6aT=rQMBr8O(|QVKZ!PCHl6jXthY3g#fW+hX@-G}v~L?0FF5ul0$$>oE+cnpOi$Op zq=9+Gc(na=5Xsgte}8ZHie}`SbleIOB559$<|W>pUR~6 zruI^-;%*XePg?f)+CdQpP6aIA7<);=YNYEQtQG%s>C3Ph>0_WrE4?I+Mn*u7R=gx` zjf6#jR=OlwBhnK?G%^y2_Lo0b!^mZg&e?>|qC()bjNuYOLi!O6IQv8F=6D_4%3>5q kqD^JxKX)!4Fh&^s0^&-aRPsiF*Z=?k07*qoM6N<$f+HgK7XSbN diff --git a/agrilinkvocpro/app/src/main/res/drawable/luminosity.png b/agrilinkvocpro/app/src/main/res/drawable/luminosity.png new file mode 100644 index 0000000000000000000000000000000000000000..36685819168bfac80e5f97a6561563d96faf9b23 GIT binary patch literal 4896 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 literal 0 HcmV?d00001 diff --git a/agrilinkvocpro/commodity_price_prediction_feature/src/main/java/com/syaroful/agrilinkvocpro/commodity_price_prediction_feature/PricePredictionActivity.kt b/agrilinkvocpro/commodity_price_prediction_feature/src/main/java/com/syaroful/agrilinkvocpro/commodity_price_prediction_feature/PricePredictionActivity.kt new file mode 100644 index 0000000..519ee8f --- /dev/null +++ b/agrilinkvocpro/commodity_price_prediction_feature/src/main/java/com/syaroful/agrilinkvocpro/commodity_price_prediction_feature/PricePredictionActivity.kt @@ -0,0 +1,48 @@ +package com.syaroful.agrilinkvocpro.commodity_price_prediction_feature + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import com.syaroful.agrilinkvocpro.ui.theme.AgrilinkVocproTheme + +class PricePredictionActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + AgrilinkVocproTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + Greeting( + + name = "Android", + modifier = Modifier.padding(innerPadding) + ) + } + } + } + } +} + +@Composable +fun Greeting(name: String, modifier: Modifier = Modifier) { + Text( + text = "Hello $name!", + modifier = modifier + ) +} + +@Preview(showBackground = true) +@Composable +fun GreetingPreview() { + AgrilinkVocproTheme { + Greeting("Android") + } +} \ No newline at end of file diff --git a/agrilinkvocpro/growth_recipe_feature/src/main/java/com/syaroful/agrilinkvocpro/growth_recipe_feature/GrowthRecipeActivity.kt b/agrilinkvocpro/growth_recipe_feature/src/main/java/com/syaroful/agrilinkvocpro/growth_recipe_feature/GrowthRecipeActivity.kt new file mode 100644 index 0000000..1547fa4 --- /dev/null +++ b/agrilinkvocpro/growth_recipe_feature/src/main/java/com/syaroful/agrilinkvocpro/growth_recipe_feature/GrowthRecipeActivity.kt @@ -0,0 +1,47 @@ +package com.syaroful.agrilinkvocpro.growth_recipe_feature + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import com.syaroful.agrilinkvocpro.ui.theme.AgrilinkVocproTheme + +class GrowthRecipeActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + AgrilinkVocproTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + Greeting( + name = "Android", + modifier = Modifier.padding(innerPadding) + ) + } + } + } + } +} + +@Composable +fun Greeting(name: String, modifier: Modifier = Modifier) { + Text( + text = "Hello $name!", + modifier = modifier + ) +} + +@Preview(showBackground = true) +@Composable +fun GreetingPreview() { + AgrilinkVocproTheme { + Greeting("Android") + } +} \ No newline at end of file