@@ -49,12 +49,17 @@ def show
4949 # GET /benthic_covers/new
5050 # GET /benthic_covers/new.json
5151 def new
52- @benthic_cover = BenthicCover . new
53-
54- @benthic_cover . build_invert_belt
55- @benthic_cover . build_presence_belt
56- @benthic_cover . point_intercepts . build
57- @benthic_cover . build_rugosity_measure
52+ @draft = Draft . latest_for ( diver_id : current_diver . id , model_klass : BenthicCover , model_id : nil )
53+ if @draft
54+ @benthic_cover = BenthicCover . new ( @draft . model_attributes )
55+ else
56+ @benthic_cover = BenthicCover . new . tap do |b |
57+ b . build_invert_belt
58+ b . build_presence_belt
59+ b . point_intercepts . build
60+ b . build_rugosity_measure
61+ end
62+ end
5863
5964 respond_to do |format |
6065 format . html # new.html.erb
@@ -64,7 +69,12 @@ def new
6469
6570 # GET /benthic_covers/1/edit
6671 def edit
67- @benthic_cover = BenthicCover . find ( params [ :id ] )
72+ @draft = Draft . latest_for ( diver_id : current_diver . id , model_klass : BenthicCover , model_id : params [ :id ] )
73+ if @draft
74+ @benthic_cover = BenthicCover . new ( @draft . model_attributes . merge ( id : params [ :id ] ) )
75+ else
76+ @benthic_cover = BenthicCover . find ( params [ :id ] )
77+ end
6878 end
6979
7080 # POST /benthic_covers
@@ -74,6 +84,8 @@ def create
7484
7585 respond_to do |format |
7686 if @benthic_cover . save
87+ Draft . destroy_for ( diver_id : current_diver . id , model_klass : BenthicCover , model_id : nil )
88+
7789 format . html { redirect_to benthic_covers_path , notice : 'Benthic cover was successfully created.' }
7890 format . json { render json : @benthic_cover , status : :created , location : @benthic_cover }
7991 else
@@ -90,6 +102,8 @@ def update
90102
91103 respond_to do |format |
92104 if @benthic_cover . update ( benthic_cover_params )
105+ Draft . destroy_for ( diver_id : current_diver . id , model_klass : BenthicCover , model_id : @benthic_cover . id )
106+
93107 format . html { redirect_to benthic_covers_path , notice : 'Benthic cover was successfully updated.' }
94108 format . json { head :no_content }
95109 else
@@ -111,6 +125,31 @@ def destroy
111125 end
112126 end
113127
128+ # PUT /draft
129+ def draft
130+ # Handle intentional delete of draft data
131+ unless params [ :benthic_cover ] . present?
132+ Draft . destroy_for ( diver_id : current_diver . id , model_klass : BenthicCover , model_id : params [ :id ] )
133+
134+ head :ok
135+ return
136+ end
137+
138+ draft = Draft . new (
139+ diver_id : current_diver . id ,
140+ model_klass : BenthicCover ,
141+ model_id : benthic_cover_params [ :id ] ,
142+ model_attributes : benthic_cover_params ,
143+ sequence : params [ :sequence ] ,
144+ focused_dom_id : params [ :focused_dom_id ] ,
145+ )
146+ if draft . save
147+ render json : { } , status : :created
148+ else
149+ render json : draft . errors , status : :unprocessable_entity
150+ end
151+ end
152+
114153 private
115154
116155 def benthic_cover_params
0 commit comments