Add games and kda to title item set
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d02a3c6a1d
commit
3212938a2a
4 changed files with 33 additions and 14 deletions
|
@ -6,7 +6,7 @@ use serde_json::{json, Value};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
|
|
||||||
use crate::data_source::DataSource;
|
use crate::data_source::{DataSource, Stat};
|
||||||
use crate::ChampInfo;
|
use crate::ChampInfo;
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug)]
|
||||||
|
@ -132,13 +132,12 @@ impl DataSource for CGGDataSource {
|
||||||
let mut champions: IndexMap<String, Vec<String>> = IndexMap::new();
|
let mut champions: IndexMap<String, Vec<String>> = IndexMap::new();
|
||||||
for champ in &datas.lol.champions_report {
|
for champ in &datas.lol.champions_report {
|
||||||
let id = champ.champion_id.to_string();
|
let id = champ.champion_id.to_string();
|
||||||
|
|
||||||
if champions.contains_key(&id) {
|
if champions.contains_key(&id) {
|
||||||
let mut roles = champions.get(&id).unwrap().clone();
|
let mut roles = champions.get(&id).unwrap().clone();
|
||||||
roles.push(champ.role.clone());
|
roles.push(champ.role.clone());
|
||||||
champions.insert(id, roles);
|
champions.insert(id, roles);
|
||||||
} else {
|
} else {
|
||||||
champions.insert(id, [champ.role.clone()].to_vec());
|
champions.insert(id, vec![champ.role.clone()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +153,7 @@ impl DataSource for CGGDataSource {
|
||||||
champ: &ChampInfo,
|
champ: &ChampInfo,
|
||||||
position: &str,
|
position: &str,
|
||||||
_client: &ureq::Agent,
|
_client: &ureq::Agent,
|
||||||
) -> Option<(Vec<Value>, f64)> {
|
) -> Option<(Vec<Value>, Stat)> {
|
||||||
let mut some_champ: Option<&ChampionReport> = None;
|
let mut some_champ: Option<&ChampionReport> = None;
|
||||||
let reports = CHAMPIONS_REPORT.lock().unwrap();
|
let reports = CHAMPIONS_REPORT.lock().unwrap();
|
||||||
for champion in reports.iter() {
|
for champion in reports.iter() {
|
||||||
|
@ -197,9 +196,16 @@ impl DataSource for CGGDataSource {
|
||||||
key = val.stats.as_ref().unwrap().id.clone();
|
key = val.stats.as_ref().unwrap().id.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let win_rate = champs_stats.get(&key).unwrap().win_rate;
|
|
||||||
|
|
||||||
return Some((blocks, win_rate.unwrap()));
|
let stat = champs_stats.get(&key).unwrap();
|
||||||
|
return Some((
|
||||||
|
blocks,
|
||||||
|
Stat {
|
||||||
|
win_rate: stat.win_rate.unwrap(),
|
||||||
|
games: stat.games.unwrap(),
|
||||||
|
kda: stat.kda.unwrap(),
|
||||||
|
},
|
||||||
|
));
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,12 @@ pub struct Item {
|
||||||
pub count: u8,
|
pub count: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct Stat {
|
||||||
|
pub win_rate: f64,
|
||||||
|
pub games: u32,
|
||||||
|
pub kda: f64,
|
||||||
|
}
|
||||||
|
|
||||||
pub trait DataSource {
|
pub trait DataSource {
|
||||||
fn get_alias(&self) -> &str;
|
fn get_alias(&self) -> &str;
|
||||||
|
|
||||||
|
@ -46,7 +52,7 @@ pub trait DataSource {
|
||||||
champ: &ChampInfo,
|
champ: &ChampInfo,
|
||||||
position: &str,
|
position: &str,
|
||||||
client: &ureq::Agent,
|
client: &ureq::Agent,
|
||||||
) -> Option<(Vec<Value>, f64)>;
|
) -> Option<(Vec<Value>, Stat)>;
|
||||||
|
|
||||||
fn write_item_set(
|
fn write_item_set(
|
||||||
&self,
|
&self,
|
||||||
|
@ -62,7 +68,7 @@ pub trait DataSource {
|
||||||
match data {
|
match data {
|
||||||
Some(data) => {
|
Some(data) => {
|
||||||
let item_set = ItemSet {
|
let item_set = ItemSet {
|
||||||
title: format!("{} {} {} - {:.2}%", self.get_alias(), pos, ver, data.1),
|
title: format!("{} {} {} - {:.2}% wins - {} games - {:.2} kda", self.get_alias(), pos, ver, data.1.win_rate, data.1.games, data.1.kda),
|
||||||
type_: "custom".to_string(),
|
type_: "custom".to_string(),
|
||||||
map: "any".to_string(),
|
map: "any".to_string(),
|
||||||
mode: "any".to_string(),
|
mode: "any".to_string(),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::data_source::{Build, DataSource, Item};
|
use crate::data_source::{Build, DataSource, Item, Stat};
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use crate::time::Duration;
|
use crate::time::Duration;
|
||||||
use crate::ChampInfo;
|
use crate::ChampInfo;
|
||||||
|
@ -211,7 +211,7 @@ impl DataSource for KBDataSource {
|
||||||
champ: &ChampInfo,
|
champ: &ChampInfo,
|
||||||
position: &str,
|
position: &str,
|
||||||
client: &ureq::Agent,
|
client: &ureq::Agent,
|
||||||
) -> Option<(Vec<Value>, f64)> {
|
) -> Option<(Vec<Value>, Stat)> {
|
||||||
let token = match self.token.clone() {
|
let token = match self.token.clone() {
|
||||||
Some(t) => t,
|
Some(t) => t,
|
||||||
None => return None,
|
None => return None,
|
||||||
|
@ -338,7 +338,14 @@ impl DataSource for KBDataSource {
|
||||||
items: final_items
|
items: final_items
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
Some((blocks, winrate))
|
Some((
|
||||||
|
blocks,
|
||||||
|
Stat {
|
||||||
|
win_rate: winrate,
|
||||||
|
games: data.builds2[0].games as u32,
|
||||||
|
kda: 0.0,
|
||||||
|
},
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use indexmap::IndexMap;
|
use indexmap::IndexMap;
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
|
|
||||||
use crate::data_source::DataSource;
|
use crate::data_source::{DataSource, Stat};
|
||||||
use crate::ChampInfo;
|
use crate::ChampInfo;
|
||||||
|
|
||||||
pub struct PBDataSource;
|
pub struct PBDataSource;
|
||||||
|
@ -26,7 +26,7 @@ impl DataSource for PBDataSource {
|
||||||
_champ: &ChampInfo,
|
_champ: &ChampInfo,
|
||||||
_position: &str,
|
_position: &str,
|
||||||
_client: &ureq::Agent,
|
_client: &ureq::Agent,
|
||||||
) -> Option<(Vec<Value>, f64)> {
|
) -> Option<(Vec<Value>, Stat)> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue