Skip to content

Instantly share code, notes, and snippets.

View hansthen's full-sized avatar

Hans Then hansthen

  • The Netherlands
View GitHub Profile
import streamlit as st
>>from st_aggrid import AgGrid, JsCode, GridOptionsBuilder
>>import pandas as pd
>>df = pd.read_csv('https://raw.githubusercontent.com/fivethirtyeight/data/master/airline-safety/airline-safety.csv')
gb = GridOptionsBuilder.from_dataframe(df)
gb.configure_selection('single', pre_selected_rows=[], use_checkbox=False)
gridOptions = gb.build()
gridOptions['rowClassRules'] = {
import streamlit as st
import streamlit.components.v1 as components
from streamlit_extras.row import row
from streamlit_extras.stylable_container import stylable_container
with st.sidebar:
st.markdown("""
<style>
:root {
--header-height: 50px;
@hansthen
hansthen / gtfs.py
Last active February 10, 2024 19:09
GTFS realtime
import gtfs_realtime_OVapi_pb2 as ovapi
import requests
import urllib.request
from datetime import datetime
import time
from google.protobuf.json_format import MessageToJson, MessageToDict
from IPython import embed
@hansthen
hansthen / dimension2timeline
Created January 22, 2024 20:02
jq for converting timedimension format to timeline format
cat track_bus699.geojson | jq '[([.geometry.coordinates, .properties.times] | transpose | .[] | {"coordinates": .[0], "start": .[1]}) as $features | del(.geometry.coordinates, .properties.times) | .geometry += {"coordinates": $features.coordinates} | .properties += {"start": $features.start, "end": ($features.start | (gsub("\\s"; "T") + "Z") as $date | $date | fromdate | . + 2)}]
@hansthen
hansthen / css.py
Last active December 17, 2023 20:02
Streamlit css
with st.sidebar:
st.markdown("""
<style>
:root {
--header-height: 50px;
}
[data-testid="stHeader"] {
background-image: url(/app/static/icons8-astrolabe-64.png);
background-repeat: no-repeat;
background-size: contain;
@hansthen
hansthen / app.py
Created December 5, 2023 03:49
Customize styling for Aggrid
import streamlit as st
from st_aggrid import AgGrid
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/fivethirtyeight/data/master/airline-safety/airline-safety.csv')
custom_css = {
".ag-row-even": {"background-color": "rgba(0,0,0,0.2) !important"},
".ag-header-cell": {"background-color": "orange !important"},
".ag-theme-streamlit": {"--ag-borders": "none",
@hansthen
hansthen / flow.py
Created December 3, 2023 17:41
Page flow
import streamlit as st
class App():
def __init__(self, default=None):
self.page = default
self.args = []
self.kwargs = {}
def goto(self, page, *args, **kwargs):
self.page = page
@hansthen
hansthen / gist:8696a182a32b49c6927e34315f7bb9e5
Created November 10, 2023 06:44
fullcalendar double click
eventDidMount: function (event) {
event.el.addEventListener('dblclick', () => {
console.log(event);
});
},
@hansthen
hansthen / tdist.py
Created October 26, 2023 07:19
Compare two timeseries for distance
import pandas as pd
import numpy as np
import math
from datetime import datetime, timedelta
df1 = pd.DataFrame()
df1["time"] = pd.date_range('08/12/2021 00:00:01', periods=6, freq="4S")
df1['values'] = [1, 2, 3, 4, 5, 6]
df2 = pd.DataFrame()
@hansthen
hansthen / filter select field.py
Last active July 6, 2023 20:47 — forked from mrjoes/test.py
How to customize options in QuerySelectField.High level idea:1. Hook `create_form` to change options when creating model and `edit_form` when editing model2. Provide different `query_factory` for the field3. Do filtering/population logic in the _get_parent_listAlternatively:1. Can hook `scaffold_form` and change `form.parent.kwargs['query_factor…
from flask import Flask, request, url_for
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.admin.contrib import sqlamodel
from flask.ext import admin
# Create application
app = Flask(__name__)
# Create dummy secrey key so we can use sessions