Skip to content

Commit

Permalink
Timer to query for Machines from the network + Link listener + deseri…
Browse files Browse the repository at this point in the history
…alization, viewmodel passing
  • Loading branch information
gmorell committed Dec 31, 2020
1 parent 300c7ef commit 2683b16
Show file tree
Hide file tree
Showing 9 changed files with 148 additions and 161 deletions.
53 changes: 40 additions & 13 deletions app/src/main/java/io/gmp/does/lambent/droid/LambentDTOs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,26 @@ package io.gmp.does.lambent.droid

import java.time.LocalDate

data class MachineQuery(
val machines: Map<String, Machine>,
val speed_enum: Map<String, String>
) {
companion object {
fun fromNetwork(map: Map<String, String>) = object {
val machines = map["machines"] as Map<String, Map<String, String>>
val machines_ds = machines.map {
it.key to Machine.fromNetwork(it.value)
}.toMap()
val speed_enum = map["speed_enum"] as Map<String, String>

val data = MachineQuery(
machines = machines_ds,
speed_enum = speed_enum
)
}.data
}
}

data class Machine(
val name: String,
val running: RunningEnum,
Expand All @@ -19,7 +39,14 @@ data class Machine(
val speed: String by map
val iname: String? by map

val data = Machine(name, RunningEnum.valueOf(running), id, desc, TickEnum.valueOf(speed), iname)
val data = Machine(
name,
RunningEnum.valueOf(running),
id,
desc,
TickEnum.valueOf(speed),
iname
)
}.data
}
}
Expand All @@ -45,39 +72,39 @@ data class Device(
}

data class LinkSpecSrc(
val listname: String,
val list_name: String,
val ttl: String,
val id: String,
val cls: String
) {
companion object {
fun fromNetwork(map: Map<String, Any>) = object {
val listname: String by map
val list_name: String by map
val ttl: String by map
val id: String by map
val cls: String by map

val data = LinkSpecSrc(listname, ttl, id, cls)
val data = LinkSpecSrc(list_name, ttl, id, cls)
}.data
}
}

data class LinkSpecTgt(
val listname: String,
val list_name: String,
val grp: String,
val iname: String,
val id: String,
val name: String
) {
companion object {
fun fromNetwork(map: Map<String, Any>) = object {
val listname: String by map
val list_name: String by map
val grp: String by map
val iname: String by map
val id: String by map
val name: String by map

val data = LinkSpecTgt(listname, grp, iname, id, name)
val data = LinkSpecTgt(list_name, grp, iname, id, name)
}.data
}
}
Expand Down Expand Up @@ -120,40 +147,40 @@ data class Link(


class LinkSrc(
val listname: String,
val list_name: String,
val ttl: String,
val id: String,
val cls: String
) {
companion object {
fun fromNetwork(map: Map<String, String>) = object {
val listname: String by map
val list_name: String by map
val ttl: String by map
val id: String by map
val cls: String by map

val data = LinkSrc(listname, ttl, id, cls)
val data = LinkSrc(list_name, ttl, id, cls)
}.data
}
}


class LinkSink(
val listname: String,
val list_name: String,
val grp: String,
val iname: String,
val id: String,
val name: String
) {
companion object {
fun fromNetwork(map: Map<String, String>) = object {
val listname: String by map
val list_name: String by map
val grp: String by map
val iname: String by map
val id: String by map
val name: String by map

val data = LinkSink(listname, grp, iname, id, name)
val data = LinkSink(list_name, grp, iname, id, name)
}.data
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,16 @@ class LinkMainViewHolder internal constructor(inflater: LayoutInflater, parent:
Toast.makeText(parent.context, "RM Clicked", Toast.LENGTH_SHORT).show()
}
toggle.setOnCheckedChangeListener { buttonView: CompoundButton, isChecked: Boolean ->
Toast.makeText(parent.context, "Toggle Clicked {$isChecked}", Toast.LENGTH_SHORT).show()
// Toast.makeText(parent.context, "Toggle Clicked {$isChecked}", Toast.LENGTH_SHORT).show()
}

}

fun bind(device: Link) {
item = device
label_name.text = device.list_name
label_from.text = device.full_spec.source.listname
label_to.text = device.full_spec.target.listname
label_from.text = device.full_spec.source.list_name
label_to.text = device.full_spec.target.list_name
toggle.isChecked = device.active

}
Expand Down
62 changes: 35 additions & 27 deletions app/src/main/java/io/gmp/does/lambent/droid/ui/main/MainFragment.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package io.gmp.does.lambent.droid.ui.main

import androidx.lifecycle.ViewModelProviders
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.os.Handler
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.adapter.FragmentStateAdapter
Expand All @@ -19,7 +19,6 @@ import io.gmp.does.lambent.droid.*
import kotlinx.android.synthetic.main.fragment_tab_devices.*
import kotlinx.android.synthetic.main.fragment_tab_links.*
import kotlinx.android.synthetic.main.fragment_tab_machines.*
import kotlinx.android.synthetic.main.main_fragment.*

val Labels = listOf<String>(
"Devices",
Expand All @@ -33,16 +32,17 @@ private const val ARG_ID = "id"
private const val ARG_OBJECT = "object"

class DemoCollectionAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
lateinit var viewModel: MainViewModel

override fun getItemCount(): Int = Labels.size
// lateinit var fragment: Fragment

override fun createFragment(position: Int): Fragment =
// Return a NEW fragment instance in createFragment(int)
when (position) {
0 -> DeviceListFragment()
1 -> MachineListFragment()
2 -> LinkListFragment()
0 -> DeviceListFragment().also { it.viewModel = viewModel }
1 -> MachineListFragment().also { it.viewModel = viewModel }
2 -> LinkListFragment().also { it.viewModel = viewModel }
else -> DemoObjectFragment()
}

Expand Down Expand Up @@ -79,14 +79,26 @@ class MainFragment : Fragment() {
binding.viewModel = viewModel

// trying here
device_recycler = view.findViewById(R.id.device_recycler)
val device_list_adapter = DeviceListAdapter(viewModel)
device_recycler.layoutManager = LinearLayoutManager(context)
device_recycler.adapter = device_list_adapter
// device_recycler = view.findViewById(R.id.device_recycler)
// val device_list_adapter = DeviceListAdapter(viewModel)
// device_recycler.layoutManager = LinearLayoutManager(context)
// device_recycler.adapter = device_list_adapter

// for the viewpager
commandCollectionAdapter = DemoCollectionAdapter(this)
commandCollectionAdapter.viewModel = viewModel

// to update the machines
val handler = Handler()
val delay = 10000L // 10000 milliseconds == 10 second
handler.postDelayed(object : Runnable {
override fun run() {
println("myHandler: here!") // Do your work here
viewModel.machine_collector(viewModel.session)
handler.postDelayed(this, delay)
}
}, delay)

// viewModel.list_devices_l_t.observe(this, Observer {
// log {"observed change $it.length"}
// })

return view
}
Expand All @@ -99,14 +111,13 @@ class MainFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

// commandCollectionAdapter = DemoCollectionAdapter(this)
// viewPager = view.findViewById(R.id.tab_pager)
// viewPager.adapter = commandCollectionAdapter
//
// tabLayout = view.findViewById(R.id.tab_layout)
// TabLayoutMediator(tabLayout, viewPager) { tab, position ->
// tab.text = Labels[position]
// }.attach()
viewPager = view.findViewById(R.id.tab_pager)
viewPager.adapter = commandCollectionAdapter

tabLayout = view.findViewById(R.id.tab_layout)
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
tab.text = Labels[position]
}.attach()

}

Expand All @@ -122,7 +133,6 @@ class DeviceListFragment : Fragment() {
savedInstanceState: Bundle?
): View {
val binding = DataBindingUtil.inflate<SubBindingDevices>(inflater, R.layout.fragment_tab_devices, container, false)
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
val view: View = binding.root
binding.lifecycleOwner = this
binding.viewModel = viewModel
Expand All @@ -131,7 +141,7 @@ class DeviceListFragment : Fragment() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val device_list_adapter = DeviceListAdapter(viewModel)
// device_list_adapter.setDevices(viewModel.list_devices_l_t.value!!)
device_list_adapter.setDevices(viewModel.list_devices_l_t.value!!)
device_recycler.layoutManager = LinearLayoutManager(context)
device_recycler.adapter = device_list_adapter

Expand All @@ -152,7 +162,6 @@ class MachineListFragment : Fragment() {
savedInstanceState: Bundle?
): View {
val binding = DataBindingUtil.inflate<SubBindingMachines>(inflater, R.layout.fragment_tab_machines, container, false)
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
val view: View = binding.root
binding.lifecycleOwner = this
binding.viewModel = viewModel
Expand All @@ -161,7 +170,7 @@ class MachineListFragment : Fragment() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val device_list_adapter = MachineListAdapter()
device_list_adapter.setMachines(viewModel.list_machines.values.toList())
device_list_adapter.setMachines(viewModel.list_machined_l_t.value!!)
machine_recycler.layoutManager = LinearLayoutManager(context)
machine_recycler.adapter = device_list_adapter
}
Expand All @@ -177,7 +186,6 @@ class LinkListFragment : Fragment() {
savedInstanceState: Bundle?
): View {
val binding = DataBindingUtil.inflate<SubBindingLinks>(inflater, R.layout.fragment_tab_links, container, false)
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
val view: View = binding.root
binding.lifecycleOwner = this
binding.viewModel = viewModel
Expand Down
Loading

0 comments on commit 2683b16

Please sign in to comment.