Skip to content

Commit

Permalink
impl task update
Browse files Browse the repository at this point in the history
  • Loading branch information
Spxg committed Aug 23, 2020
1 parent b37b415 commit f851135
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 26 deletions.
49 changes: 38 additions & 11 deletions src/routes/console/task/edit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use status_protoc::status::console::task::TaskStatus;
use yew::prelude::*;
use yew::services::fetch::FetchTask;
use log::debug;
use std::str::FromStr;

pub struct TaskEdit {
tr: TaskRequest,
Expand All @@ -23,6 +24,8 @@ pub enum Msg {
UpdateRequest,
Response(Result<TaskStatus, Error>),
ReadResponse(Result<Vec<Task>, Error>),
UpdateTaskName(String),
UpdateActive(ChangeData),
}

#[derive(Properties, Clone)]
Expand Down Expand Up @@ -58,8 +61,19 @@ impl Component for TaskEdit {
Msg::ReadResponse(ts) => self.props.callback.emit(ts),
Msg::DeleteRequest => {
self.task = Some(self.tr.delete(self.props.task.id, self.response.clone()));
}
Msg::UpdateRequest => {}
},
Msg::UpdateRequest => {
self.task = Some(self.tr.put(self.props.task.id
, self.request.clone()
, self.response.clone()));
},
Msg::UpdateTaskName(n) => self.request.edit_name(&n),
Msg::UpdateActive(select) => {
if let ChangeData::Select(select) = select {
debug!("{:?}", select);
self.request.edit_active(bool::from_str(&select.value()).unwrap())
}
},
}
true
}
Expand All @@ -71,29 +85,42 @@ impl Component for TaskEdit {

fn view(&self) -> Html {
let delete = self.link.callback(|_| Msg::DeleteRequest);
let onsubmit = self.link.callback(|_| Msg::UpdateRequest);
let oninput_name = self
.link
.callback(|ev: InputData| Msg::UpdateTaskName(ev.value));
let onchange_active = self
.link
.callback(|ev: ChangeData| Msg::UpdateActive(ev));

html! {
<div class="modal-dialog">
<div id="edit" class="modal-content">
<div id="edit" class="modal-content" onsubmit=onsubmit>
<form>
<h1 class="text-center">{ "Pipe" }<sup>{ "alpha" }</sup></h1>
<div id="run-result"></div>
<div class="form-group">
<label class="control-label">
<a id="siteurl" href="" target="_blank" style="color:black;">{ "任务名" }</a>
</label>
<input type="text" class="form-control" name="cookie" placeholder="请输入 cookie"/>
<label class="control-label"><span>{ "任务名" }</span></label>
<input type="text" class="form-control" placeholder="请输入 任务名"
value=&self.request.name
oninput=oninput_name
/>
</div>

<div id="variables">
<div class="form-group">
<label class="control-label" for="input-cookie"><span>{ "激活" }</span></label>
<input type="text" class="form-control" name="cookie" placeholder="请输入 cookie"/>
<label class="control-label"><span>{ "状态" }</span></label>
<select class="form-control" onchange=onchange_active>
<option value=&self.request.active>{ "不修改" }</option>
<option value="true">{ "激活" }</option>
<option value="false">{ "禁用" }</option>
</select>
</div>
</div>

<div class="text-right">
<a class="btn btn-default" onclick=delete data-confirm="是否要删除任务?">{ "删除" }</a>
<button type="submit" data-loading-text="loading..." class="btn btn-primary">{ "提交" }</button>
<a class="btn btn-default" onclick=delete>{ "删除" }</a>
<button type="submit" class="btn btn-primary">{ "提交" }</button>
</div>
</form>
</div>
Expand Down
4 changes: 3 additions & 1 deletion src/routes/console/task/view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ impl Component for TaskView {
fn update(&mut self, msg: Self::Message) -> bool {
match msg {
Msg::Response(Ok(ts)) => {
unShow();
deleteBackDrop();
self.this_task = None;
self.tasks = ts;
Expand Down Expand Up @@ -87,7 +88,7 @@ impl Component for TaskView {
<td>{ t.succeed_count }</td>
<td>{ t.failed_count }</td>
<td>{ t.last_executed }</td>
<td>{ "正常" }</td>
<td>{ if t.active { "激活" } else { "禁用" } }</td>
<td>{ "10 小时后" }</td>

<td>
Expand Down Expand Up @@ -144,5 +145,6 @@ impl Component for TaskView {
extern "C" {
fn addEditEvent();
fn show();
fn unShow();
fn deleteBackDrop();
}
2 changes: 1 addition & 1 deletion src/services/requests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ impl Requests {
}

/// Put request with a body
pub fn _put<B, T>(
pub fn put<B, T>(
&mut self,
url: String,
body: B,
Expand Down
15 changes: 14 additions & 1 deletion src/services/task.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::services::requests::Requests;
use crate::error::Error;
use yew::Callback;
use crate::types::task::Task;
use crate::types::task::{Task, NewTask};
use yew::services::fetch::FetchTask;
use status_protoc::status::console::task::TaskStatus;

Expand Down Expand Up @@ -48,4 +48,17 @@ impl TaskRequest {
callback,
)
}

pub fn put(
&mut self,
id: i32,
info: NewTask,
callback: Callback<Result<TaskStatus, Error>>,
) -> FetchTask {
self.requests.put::<NewTask, TaskStatus>(
format!("/console/task/update/{}", id),
info,
callback,
)
}
}
18 changes: 6 additions & 12 deletions src/types/task.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ pub struct Task {

#[derive(Serialize, Deserialize, Clone)]
pub struct NewTask {
name: String,
pub name: String,
succeed_count: i32,
failed_count: i32,
last_executed: NaiveDateTime,
owner: String,
command: String,
execute_time: NaiveTime,
device_token: String,
active: bool,
pub active: bool,
}

impl Default for Task {
Expand All @@ -48,18 +48,12 @@ impl Default for Task {
}
}
impl NewTask {
pub fn edit_name(self, name: &str) -> Self {
Self {
name: name.into(),
..self
}
pub fn edit_name(&mut self, name: &str) {
self.name = name.into();
}

pub fn edit_active(self, active: bool) -> Self {
Self {
active,
..self
}
pub fn edit_active(&mut self, active: bool) {
self.active = active;
}

pub fn from(task: &Task) -> Self {
Expand Down
5 changes: 5 additions & 0 deletions static/my.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ function addEditEvent() {
)
}

function unShow() {
let edit = document.getElementById("modal_load");
edit.click();
}

function show() {
let edit = document.getElementById("modal_load");
addBackDrop();
Expand Down

0 comments on commit f851135

Please sign in to comment.