{"id":20279749,"url":"https://github.com/genieframework/stipplekeplergl.jl","last_synced_at":"2026-02-13T12:09:06.860Z","repository":{"id":231526750,"uuid":"781973322","full_name":"GenieFramework/StippleKeplerGL.jl","owner":"GenieFramework","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-20T23:37:07.000Z","size":523,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-10T02:39:18.642Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GenieFramework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-04T11:53:27.000Z","updated_at":"2024-12-20T23:11:22.000Z","dependencies_parsed_at":"2024-04-04T13:29:30.783Z","dependency_job_id":"c50b0577-22a5-479e-94be-ba7bf8d7c732","html_url":"https://github.com/GenieFramework/StippleKeplerGL.jl","commit_stats":null,"previous_names":["genieframework/stipplekeplergl.jl"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/GenieFramework/StippleKeplerGL.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStippleKeplerGL.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStippleKeplerGL.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStippleKeplerGL.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStippleKeplerGL.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GenieFramework","download_url":"https://codeload.github.com/GenieFramework/StippleKeplerGL.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStippleKeplerGL.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29404990,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T13:32:57.784Z","updated_at":"2026-02-13T12:09:06.820Z","avatar_url":"https://github.com/GenieFramework.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StippleKeplerGL.jl\n\n\u003ch3\u003e\u003c/h3\u003e\n\n\u003cimg width=\"600\" alt=\"StippleKeplerGL Demo\" src=\"docs/src/assets/StippleKeplerGL.png\"\u003e\n\nJulia package to integrate KeplerGL maps into Genie/Stipple applications.\n\n## Acknowledgement\n\nThis package uses the great package `KeplerGL.jl` under the hood.\n\n## Installation\n\nTo install the package, type in the Julia command prompt\n\n```\n] add StippleKeplerGL\n```\n## Example\n\n\n```julia\nusing Stipple, Stipple.ReactiveTools\nusing StippleUI\nusing StippleKeplerGL\nusing DataFrames\nusing CSV\nusing Colors\nusing ColorBrewer\n\nkeplergl_path = Base.pkgdir(isdefined(@__MODULE__, :KeplerGLBase) ? KeplerGLBase : KeplerGL)\ndf = CSV.read(joinpath(keplergl_path, \"assets\", \"example_data\", \"data.csv\"), DataFrame)\n\n# token = \"token please\"\n\nm1 = KeplerGL.KeplerGLMap(token, center_map=false)\n\nKeplerGL.add_point_layer!(m1, df, :Latitude, :Longitude,\n    color = colorant\"rgb(23,184,190)\", color_field = :Magnitude, color_scale = \"quantize\", \n    color_range = ColorBrewer.palette(\"PRGn\", 6),\n    radius_field = :Magnitude, radius_scale = \"sqrt\", radius_range = [4.2, 96.2], radius_fixed = false,\n    filled = true, opacity = 0.39, outline = false\n)\n\nm1.config[:config][:mapState][:latitude] = 38.32068477880718\nm1.config[:config][:mapState][:longitude]= -120.42806781055732\nm1.config[:config][:mapState][:zoom] = 4.886825331541375\nm1.window[:map_legend_show] = m1.window[:map_legend_active] = m1.window[:visible_layers_show] = m1.window[:visible_layers_active] = false\n\nm2 = KeplerGL.KeplerGLMap(token, center_map=false)\n\nKeplerGL.add_point_layer!(m2, df, :Latitude, :Longitude,\n    color = colorant\"rgb(23,184,190)\", color_field = :Magnitude, color_scale = \"quantize\", \n    color_range = ColorBrewer.palette(\"RdYlGn\", 6),\n    radius_field = :Magnitude, radius_scale = \"sqrt\", radius_range = [4.2, 96.2], radius_fixed = false,\n    filled = true, opacity = 0.39, outline = false\n)\n\nm2.config[:config][:mapState][:latitude] = 38.32068477880718\nm2.config[:config][:mapState][:longitude]= -122.42806781055732\nm2.config[:config][:mapState][:zoom] = 4.886825331541375\nm2.window[:map_legend_show] = m2.window[:map_legend_active] = m2.window[:visible_layers_show] = m2.window[:visible_layers_active] = false\n\nd1, d2 = m1.datasets, m2.datasets\n\n@app begin\n    @out map1 = m1\n    @out map2 = m2\n    @in clear_data = false\n    @in restore_data = false\n    @in show_legend = false\n    @in go_west = false\n    @in go_east = false\n\n    @onbutton clear_data begin\n        __model__[\"map1.datasets\"] = []\n        __model__[\"map2.datasets\"] = []\n    end\n\n    @onbutton restore_data begin\n        __model__[\"map1.datasets\"] = d1\n        __model__[\"map2.datasets\"] = d2\n    end\n\n    @onbutton go_west begin\n        map1.config[:config][:mapState][:longitude] -= 1\n        __model__[\"map1.config.config.mapState.longitude\"] = map1.config[:config][:mapState][:longitude]\n\n        map2.config[:config][:mapState][:longitude] -= 1\n        __model__[\"map2.config.config.mapState.longitude\"] = map2.config[:config][:mapState][:longitude]\n    end\n\n    @onbutton go_east begin\n        map1.config[:config][:mapState][:longitude] += 1\n        __model__[\"map1.config.config.mapState.longitude\"] = map1.config[:config][:mapState][:longitude]\n\n        map2.config[:config][:mapState][:longitude] += 1\n        __model__[\"map2.config.config.mapState.longitude\"] = map2.config[:config][:mapState][:longitude]\n    end\n\n    @onchange show_legend begin\n        __model__[\"map1.window.map_legend_show\"] = show_legend\n        __model__[\"map2.window.map_legend_show\"] = show_legend\n\n        # alternatively, one could use the following lines to show the legend via the backend\n        # but this will transmit the full map data to the frontend\n\n        # map1.window[:map_legend_show] = show_legend\n        # notify(map1)\n    end\nend\n\n@deps StippleKeplerGL\nisdefined(Stipple, :register_global_components) \u0026\u0026 Stipple.register_global_components(\"VueKeplerGl\", legacy = true)\n\nui() = [\n    column(class = \"full-height\", [\n        row(col = :auto, class = \"items-center\", [\n            h5(class = \"col-auto q-pl-lg q-py-md\", \"KeplerGL Demo\")\n            cell()\n            btn(col = :auto, \"\", icon = \"west\", @click(:go_west), class = \"q-mr-md\", [tooltip(\"go west\")])\n            btn(col = :auto, \"\", icon = \"east\", @click(:go_east), class = \"q-mr-md\", [tooltip(\"go east\")])\n            btn(col = :auto, \"\", icon = \"delete\", @click(:clear_data), class = \"q-mr-md\", [tooltip(\"clear data\")])\n            btn(col = :auto, \"\", icon = \"restore_from_trash\", @click(:restore_data), class = \"q-mr-md\", [tooltip(\"restore data\")])\n            toggle(col = :auto, \"legend\", :show_legend, class = \"q-mr-md\")\n        ])\n        \n        cell(keplergl(:map1, ref = \"map1\", id = \"map1\"))\n        cell(keplergl(:map2, ref = \"map2\"))\n    ])\n]\n\nroute(\"/\") do\n    # uncomment next line for testing / debugging\n    global model\n    model = @init\n    page(class = \"fixed-full\", model, ui) |\u003e html\nend\n\nup(open_browser = true)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenieframework%2Fstipplekeplergl.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenieframework%2Fstipplekeplergl.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenieframework%2Fstipplekeplergl.jl/lists"}