Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Dan product left nav update#1445

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
chillenberger merged 23 commits intomasterfromdan-product-left-nav-update
May 13, 2024
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
Show all changes
23 commits
Select commitHold shift + click to select a range
b01f9d7
fix current product nav to maintain state on FE
chillenbergerApr 24, 2024
8122f77
left nav works with shift checkpoint
chillenbergerApr 25, 2024
4bcb252
fixed left nav
chillenbergerApr 25, 2024
dcd197e
product mobile menu full length, change menu-item icon color
chillenbergerApr 25, 2024
b044163
Merge branch 'master' into dan-product-left-nav-update
chillenbergerApr 26, 2024
88ce70b
move product engines dropdown to topnav, set dropdown default formatt…
chillenbergerMay 6, 2024
d5d1ac7
Merge branch 'master' into dan-product-left-nav-update
chillenbergerMay 6, 2024
c1664d1
remove product lower left nav, remove account management nav, style u…
chillenbergerMay 6, 2024
79d0a74
make owl a font, default breadcrumb start is home, remove bc on mobile
chillenbergerMay 7, 2024
7656600
Merge branch 'master' into dan-product-left-nav-update
chillenbergerMay 7, 2024
4442192
fix icomoon 400
chillenbergerMay 7, 2024
66bda1d
reduce dropdown height in topnav
chillenbergerMay 7, 2024
0d815fe
fix left and top borders
chillenbergerMay 7, 2024
12725e3
change dashboard to home
chillenbergerMay 7, 2024
2f14bbf
keep left nav updated, reset dropdown on nav
chillenbergerMay 7, 2024
5d282af
reduce product left nav icon size, gap, images
chillenbergerMay 7, 2024
c9f0354
rename upper left nav to product left nav, add status and tier to das…
chillenbergerMay 8, 2024
0ecac2a
Fix dashboard urls
chillenbergerMay 10, 2024
2bdd96b
Merge branch 'master' into dan-product-left-nav-update
chillenbergerMay 10, 2024
9fb64b0
remove all hardcoded deployment urls, change dashboard url to engine,…
chillenbergerMay 10, 2024
082e942
fix warnings
chillenbergerMay 10, 2024
51a01ef
make left nave recursive
chillenbergerMay 13, 2024
1e49bc5
Merge branch 'master' into dan-product-left-nav-update
chillenbergerMay 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletionpgml-dashboard/src/api/cms.rs
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -1123,7 +1123,7 @@ This is the end of the markdown
}
}

// Ensure Docs render andther are no unparsed gitbook compnents.
// Ensure Docs render andthere are no unparsed gitbook compnents.
#[sqlx::test]
async fn render_guides_test() {
let client = Client::tracked(rocket().await).await.unwrap();
Expand Down
115 changes: 115 additions & 0 deletionspgml-dashboard/src/api/deployment/deployment_models.rs
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
use rocket::route::Route;
use sailfish::TemplateOnce;

use crate::{
guards::ConnectedCluster,
responses::{Error, ResponseOk},
};

use crate::templates::{components::NavLink, *};

use crate::models;
use crate::templates;
use crate::utils::tabs;
use crate::utils::urls;

use std::collections::HashMap;

// Returns models page
#[get("/models")]
pub async fn deployment_models(cluster: ConnectedCluster<'_>) -> Result<ResponseOk, Error> {
let mut layout = crate::templates::WebAppBase::new("Dashboard", &cluster.inner.context);
layout.breadcrumbs(vec![NavLink::new("Models", &urls::deployment_models()).active()]);

let tabs = vec![tabs::Tab {
name: "Models",
content: ModelsTab {}.render_once().unwrap(),
}];

let nav_tabs = tabs::Tabs::new(tabs, Some("Models"), Some("Models"))?;

Ok(ResponseOk(layout.render(templates::Dashboard { tabs: nav_tabs })))
}

// Returns models page
#[get("/models/<model_id>")]
pub async fn model(cluster: ConnectedCluster<'_>, model_id: i64) -> Result<ResponseOk, Error> {
let model = models::Model::get_by_id(cluster.pool(), model_id).await?;
let project = models::Project::get_by_id(cluster.pool(), model.project_id).await?;

let mut layout = crate::templates::WebAppBase::new("Dashboard", &cluster.inner.context);
layout.breadcrumbs(vec![
NavLink::new("Models", &urls::deployment_models()),
NavLink::new(&project.name, &urls::deployment_project_by_id(project.id)),
NavLink::new(&model.algorithm, &urls::deployment_model_by_id(model.id)).active(),
]);

let tabs = vec![tabs::Tab {
name: "Model",
content: ModelTab { model_id }.render_once().unwrap(),
}];

let nav_tabs = tabs::Tabs::new(tabs, Some("Models"), Some("Models"))?;

Ok(ResponseOk(layout.render(templates::Dashboard { tabs: nav_tabs })))
}

#[get("/models_turboframe")]
pub async fn models_index(cluster: ConnectedCluster<'_>) -> Result<ResponseOk, Error> {
let projects = models::Project::all(cluster.pool()).await?;
let mut models = HashMap::new();
// let mut max_scores = HashMap::new();
// let mut min_scores = HashMap::new();

for project in &projects {
let project_models = models::Model::get_by_project_id(cluster.pool(), project.id).await?;
// let mut key_metrics = project_models
// .iter()
// .map(|m| m.key_metric(project).unwrap_or(0.))
// .collect::<Vec<f64>>();
// key_metrics.sort_by(|a, b| a.partial_cmp(b).unwrap());

// max_scores.insert(project.id, key_metrics.iter().last().unwrap_or(&0.).clone());
// min_scores.insert(project.id, key_metrics.iter().next().unwrap_or(&0.).clone());

models.insert(project.id, project_models);
}

Ok(ResponseOk(
templates::Models {
projects,
models,
// min_scores,
// max_scores,
}
.render_once()
.unwrap(),
))
}

#[get("/models_turboframe/<id>")]
pub async fn models_get(cluster: ConnectedCluster<'_>, id: i64) -> Result<ResponseOk, Error> {
let model = models::Model::get_by_id(cluster.pool(), id).await?;
let snapshot = if let Some(snapshot_id) = model.snapshot_id {
Some(models::Snapshot::get_by_id(cluster.pool(), snapshot_id).await?)
} else {
None
};

let project = models::Project::get_by_id(cluster.pool(), model.project_id).await?;

Ok(ResponseOk(
templates::Model {
deployed: model.deployed(cluster.pool()).await?,
model,
snapshot,
project,
}
.render_once()
.unwrap(),
))
}

pub fn routes() -> Vec<Route> {
routes![deployment_models, model, models_index, models_get,]
}
63 changes: 63 additions & 0 deletionspgml-dashboard/src/api/deployment/mod.rs
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
use rocket::route::Route;
use sailfish::TemplateOnce;

use crate::{
guards::ConnectedCluster,
responses::{Error, ResponseOk},
};

use crate::models;
use crate::templates;

use std::collections::HashMap;

pub mod deployment_models;
pub mod notebooks;
pub mod projects;
pub mod snapshots;
pub mod uploader;

#[get("/deployments")]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

This conflicts with our cloud route.

Copy link
ContributorAuthor

@chillenbergerchillenbergerMay 10, 2024
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

This is not new code, I just moved all the deployment/engine stuff out of lib.rs and into an organized file structure. We add /dashboard to the front. So the actual url is /dashboard/deployments, soon to be /engine/deployments.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Right, sorry. Been a while since I looked at this code.

pub async fn deployments_index(cluster: ConnectedCluster<'_>) -> Result<ResponseOk, Error> {
let projects = models::Project::all(cluster.pool()).await?;
let mut deployments = HashMap::new();

for project in projects.iter() {
deployments.insert(
project.id,
models::Deployment::get_by_project_id(cluster.pool(), project.id).await?,
);
}

Ok(ResponseOk(
templates::Deployments { projects, deployments }.render_once().unwrap(),
))
}

#[get("/deployments/<id>")]
pub async fn deployments_get(cluster: ConnectedCluster<'_>, id: i64) -> Result<ResponseOk, Error> {
let deployment = models::Deployment::get_by_id(cluster.pool(), id).await?;
let project = models::Project::get_by_id(cluster.pool(), deployment.project_id).await?;
let model = models::Model::get_by_id(cluster.pool(), deployment.model_id).await?;

Ok(ResponseOk(
templates::Deployment {
project,
deployment,
model,
}
.render_once()
.unwrap(),
))
}

pub fn routes() -> Vec<Route> {
let mut routes = routes![deployments_index, deployments_get,];

routes.extend(deployment_models::routes());
routes.extend(notebooks::routes());
routes.extend(projects::routes());
routes.extend(snapshots::routes());
routes.extend(uploader::routes());
routes
}
Loading

[8]ページ先頭

©2009-2025 Movatter.jp