From 3d7aeea9787f8a92f3273fac80490281cdfcd23c Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 28 Jan 2015 23:55:20 +0100 Subject: [PATCH] Improved handling with form changes. --- .../app/controllers/ticket_zoom.js.coffee | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom.js.coffee b/app/assets/javascripts/app/controllers/ticket_zoom.js.coffee index 2a6f337b6..e45c0c095 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom.js.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom.js.coffee @@ -79,7 +79,7 @@ class App.TicketZoom extends App.Controller return false if !@ticket formCurrent = @formParam( @el.find('.edit') ) ticket = App.Ticket.find(@ticket_id).attributes() - modelDiff = @getDiff( ticket, formCurrent ) + modelDiff = App.Utils.formDiff( formCurrent, ticket ) return false if !modelDiff || _.isEmpty( modelDiff ) return true @@ -269,7 +269,7 @@ class App.TicketZoom extends App.Controller defaults = ticket.attributes() task_state = @taskGet('ticket') - modelDiff = @getDiff( defaults, task_state ) + modelDiff = App.Utils.formDiff( task_state, defaults ) #if @isRole('Customer') # delete defaults['state_id'] # delete defaults['state'] @@ -483,18 +483,19 @@ class App.TicketZoom extends App.Controller currentParams = ticket: @formParam( @el.find('.edit') ) article: @formParam( @el.find('.article-add') ) + #console.log('lll', currentStore) + # remove not needed attributes + delete currentParams.article.form_id # get diff of model modelDiff = - ticket: @getDiff( currentStore.ticket, currentParams.ticket ) - article: @getDiff( currentStore.article, currentParams.article ) + ticket: App.Utils.formDiff( currentParams.ticket, currentStore.ticket ) + article: App.Utils.formDiff( currentParams.article, currentStore.article ) #console.log('modelDiff', modelDiff) # get diff of last save changedBetweenLastSave = _.isEqual(currentParams, @autosaveLast ) - #console.log('changedBetweenLastSave', changedBetweenLastSave) if !changedBetweenLastSave - #console.log('autosave DIFF result', changedBetweenLastSave) console.log('model DIFF ', modelDiff) @autosaveLast = clone(currentParams) @@ -503,21 +504,11 @@ class App.TicketZoom extends App.Controller @taskUpdateAll( modelDiff ) @interval( update, 3000, 'autosave' ) - getDiff: (model, params) => - - # do type convertation to compare it against form - modelClone = clone(model) - for key, value of modelClone - if key is 'owner_id' && modelClone[key] is 1 - modelClone[key] = '' - else if typeof value is 'number' - modelClone[key] = value.toString() - #console.log('LLL', modelClone) - result = difference( modelClone, params ) - markFormDiff: (diff = {}) => - ticketForm = @$('.edit') - articleForm = @$('.article-add') + ticketForm = @$('.edit') + ticketSidebar = @$('.tabsSidebar-tab[data-tab="ticket"]') + articleForm = @$('.article-add') + resetButton = @$('.js-reset') params = {} params.ticket = @formParam( ticketForm ) @@ -526,23 +517,30 @@ class App.TicketZoom extends App.Controller # clear all changes if _.isEmpty(diff.ticket) && _.isEmpty(diff.article) + ticketSidebar.removeClass('is-changed') ticketForm.removeClass('form-changed') ticketForm.find('.form-group').removeClass('is-changed') - @$('.js-reset').addClass('hide') + resetButton.addClass('hide') # set changes else ticketForm.addClass('form-changed') + if !_.isEmpty(diff.ticket) + ticketSidebar.addClass('is-changed') + else + ticketSidebar.removeClass('is-changed') for currentKey, currentValue of params.ticket element = @$('.edit [name="' + currentKey + '"]').parents('.form-group') - if diff.ticket[currentKey] + if !element.get(0) + element = @$('.edit [data-name="' + currentKey + '"]').parents('.form-group') + if currentKey of diff.ticket if !element.hasClass('is-changed') element.addClass('is-changed') else if element.hasClass('is-changed') element.removeClass('is-changed') - @$('.js-reset').removeClass('hide') + resetButton.removeClass('hide') submit: (e) => @@ -700,9 +698,13 @@ class App.TicketZoom extends App.Controller App.TaskManager.update( @task_key, { 'state': @localTaskData }) taskReset: => + # hide reset button @$('.js-reset').addClass('hide') + # remove change flag on tab + @$('.tabsSidebar-tab[data-tab="ticket"]').removeClass('is-changed') + # reset task state @localTaskData = ticket: {}