Doing anything else keeps refreshing the timeline to its initial state.
A fix would be releasing or deleting any items will update the state.
@st.experimental_fragment
def timeline_part():
"""
"""
core_colors = ['#ec008c', '#68217a', '#00188f', '#00bcf2', '#00b294', '#009e49', '#bad80a', '#fff100', '#ff8c00', '#e81123']
items = []
groups = []
i_counter = 0
g_counter = 0
start_time = 1
instrument_dict = {}
# loop through tracks and add to items and groups
for k,v in state['track_db'].items():
instrument_id = v['instrument']
# add instrument to groups if not already added
if instrument_id not in instrument_dict:
instrument_dict[v['instrument']] = g_counter
groups.append({
"id": g_counter,
"content": mp.database.reverse_instruments[instrument_id],
"style": f"color: black; background-color: {core_colors[(g_counter-1) % len(core_colors)]};", # color cycling
})
g_counter += 1
# add track to items
items.append({
"id": i_counter,
'track_id': v['track_id'],
"content": v['name'],
"start": start_time,
"end": start_time + v['bars'],
"group": instrument_dict[instrument_id],
"editable": True,
"selectable": True,
})
i_counter += 1
# create timeline obj in frontend
timeline = st_timeline(items, groups=groups, options={}, height="300px")
st.subheader("Selected item")
st.write(timeline)
print(items)
print(groups)
print(timeline)
>>>
[{'id': 0, 'track_id': '2lI5Tpyo', 'content': '090 S09 Outro', 'start': 1, 'end': 9, 'group': 0, 'editable': True, 'selectable': True}, {'id': 1, 'track_id': 'LjgWhimi', 'content': '090 S09 Verse F3', 'start': 1, 'end': 9, 'group': 0, 'editable': True, 'selectable': True}, {'id': 2, 'track_id': 'DlPX7fv4', 'content': '090 S09 Verse Fill 04', 'start': 1, 'end': 2, 'group': 0, 'editable': True, 'selectable': True}, {'id': 3, 'track_id': 'fXEwzinj', 'content': '090 S09 Verse Ride', 'start': 1, 'end': 9, 'group': 0, 'editable': True, 'selectable': True}]
[{'id': 0, 'content': 'Acoustic Grand Piano', 'style': 'color: black; background-color: #e81123;'}]
{'id': 2, 'track_id': 'DlPX7fv4', 'content': '090 S09 Verse Fill 04', 'start': 1, 'end': 2, 'group': 0, 'editable': True, 'selectable': True}