Update and deletion of schedules

pull/157/head
Rick Carlino 2015-02-26 10:31:10 +07:00
parent c68307500c
commit 0bb7248dd2
6 changed files with 64 additions and 46 deletions

View File

@ -1,5 +1,6 @@
controller = ($scope, Data) ->
nope = (e) -> alert 'Doh!'; console.error e
$scope.clear = -> $scope.form = {}
$scope.repeats = [{show: 'Minutes', value: 'minutely'},
{show: 'Hours', value: 'hourly'},
{show: 'Days', value: 'daily'},
@ -18,32 +19,20 @@ controller = ($scope, Data) ->
new Date(s.start_time).toDateString().substring(4, 10)
$scope.prettyDates = pretty
console.log $scope.prettyDates
$scope.submit = ->
Data
.create('schedule', $scope.jsonPayload())
.create('schedule', $scope.form)
.catch(nope)
.then(-> $scope.form = {})
# Data transfer from angular format to API consumable format.
$scope.jsonPayload = ->
submission =
start_time: $scope.form.dstart
end_time: $scope.form.dend
time_unit: $scope.form.timeUnit
repeat: $scope.form.repeat
sequence_id: $scope.form.sequenceId
if $scope.form.tstart
if submission.start_time
submission.start_time.setHours $scope.form.tstart.getHours()
submission.start_time.setMinutes $scope.form.tstart.getMinutes()
if submission.end_time
submission.end_time.setMinutes $scope.form.tstart.getMinutes()
submission.end_time.setHours $scope.form.tstart.getHours()
submission
.then($scope.clear)
$scope.destroy = ->
if !!$scope.form._id
Data
.destroy('schedule', $scope.form._id)
.catch(nope)
.then($scope.clear)
else
$scope.clear()
$scope.edit = (sched) -> _.assign($scope.form, sched)
angular.module('FarmBot').controller "ScheduleController", [
'$scope'
'Data'

View File

@ -16,26 +16,31 @@ module Api
# render json: schedule
# end
# def update
# mutate Schedules::Update.run(params[:schedule],
# user: current_user)
# end
def update
if schedule.user != current_user
raise Errors::Forbidden, "Not your schedule."
end
mutate Schedules::Update.run(params[:schedule],
user: current_user,
schedule: schedule)
end
# def destroy
# if (schedule.user == current_user) && schedule.destroy
# render nothing: true
# else
# raise Errors::Forbidden, "Not your schedule."
# end
# end
def destroy
if (schedule.user == current_user) && schedule.destroy
render nothing: true
else
raise Errors::Forbidden, "Not your schedule."
end
end
private
def sequence
@sequence ||= Sequence.find(params[:sequence_id])
end
# def schedule
# @schedule ||= Schedule.find(params[:id])
# end
def schedule
@schedule ||= Schedule.find(params[:id])
end
end
end

View File

@ -0,0 +1,24 @@
require 'mutations/time_filter'
module Schedules
class Update < Mutations::Command
using MongoidRefinements
required do
model :schedule, class: Schedule
model :user, class: User
end
optional do
string :sequence_id
integer :repeat
string :time_unit, in: Schedule::UNITS_OF_TIME
time :start_time
time :end_time
end
def execute
update_attributes(schedule, inputs.except(:schedule))
end
end
end

View File

@ -19,4 +19,4 @@
.event-time {{ s.start_time | date: 'h a' }}
%i.event-icon.fi-target
.event-title {{ s.sequence_name }}
%i.edit-icon.fi-pencil.right
%i.edit-icon.fi-pencil.right{'ng-click' => 'edit(s)'}

View File

@ -17,17 +17,17 @@
.small-3.columns
%span.prefix.uppercase Starts
.small-9.columns
%input{'pick-a-date' => "form.dstart", placeholder: "Today", :type => "text"}
%input{'pick-a-date' => "form.start_time", placeholder: "Today", :type => "text"}
.row.collapse.prefix-radius
.small-3.columns
%span.prefix.uppercase Ends
.small-9.columns
%input{'pick-a-date' => "form.dend", :placeholder => "Never", :type => "text"}
%input{'pick-a-date' => "form.end_time", :placeholder => "Never", :type => "text"}
.row.collapse.prefix-radius
.small-3.columns
%span.prefix.uppercase Time
.small-9.columns
%input{'pick-a-time' => "form.tstart", placeholder: "Now", type: "text"}
%input{'pick-a-time' => "form.start_time", placeholder: "Now", type: "text"}
.large-6.columns
.row.collapse.prefix-radius
.small-4.columns
@ -35,7 +35,7 @@
.small-4.columns
%input{:placeholder => "4", :type => "text", ng_model: 'form.repeat', required: true}
.small-4.columns
%select{'ng-options' => 'item.value as item.show for item in repeats', 'ng-model' => 'form.timeUnit', required: true}
%select{'ng-options' => 'item.value as item.show for item in repeats', 'ng-model' => 'form.time_unit', required: true}
.row.collapse.prefix-radius
.small-4.columns
%span.prefix.uppercase Tool-ID
@ -45,12 +45,12 @@
.small-4.columns
%span.prefix.uppercase * Sequence
.small-8.columns
%select{'ng-options' => 'item._id as item.name for item in sequences', 'ng-model' => 'form.sequenceId', required: true}
%select{'ng-options' => 'item._id as item.name for item in sequences', 'ng-model' => 'form.sequence_id', required: true}
.row
.small-12.columns
%button.green.button-like{'ng-disabled' => 'form.$invalid'}
%button.green.button-like{'ng-disabled' => 'form.$invalid', type: 'submit'}
Schedule
%button.red.button-like.left{"ng-click" => "deleteEvent(event)"}
%button.red.button-like.left{"ng-click" => "destroy()", type: 'button'}
Delete
.row.padding-bottom
.small-12.columns

View File

@ -6,7 +6,7 @@ Dss::Application.routes.draw do
resources :sequences, only: [:create, :update, :destroy, :index, :show] do
resources :steps, only: [:show, :create, :index, :update, :destroy]
end
resources :schedules, only: [:create, :index]
resources :schedules, only: [:create, :update, :destroy, :index]
end
devise_for :users, :controllers => {:registrations => "registrations"}