From db4f7d15a95e03f0f77bb562afd5b6fdec762afa Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 17 Mar 2016 15:24:09 +0100 Subject: [PATCH] move JS generation to Python; reset date/time when selecting 'finish' in state 'done' --- browser/loops.js | 9 +++++++++ organize/work/browser.py | 28 +++++++++++++++++++++++++++- organize/work/work_macros.pt | 10 +--------- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/browser/loops.js b/browser/loops.js index 361417e..340cbe2 100755 --- a/browser/loops.js +++ b/browser/loops.js @@ -56,6 +56,15 @@ function setIfIn(node, conditions) { }) } +function setIf(node, cond, acts) { + if (node.value == cond) { + dojo.forEach(acts, function(act) { + target = dijit.byId(act[0]); + target.setValue(act[1]); + }) + } +} + function destroyWidgets(node) { dojo.forEach(dojo.query('[widgetId]', node), function(n) { w = dijit.byNode(n); diff --git a/organize/work/browser.py b/organize/work/browser.py index 920a73d..d170d76 100644 --- a/organize/work/browser.py +++ b/organize/work/browser.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2015 Helmut Merz helmutm@cy55.de +# Copyright (c) 2016 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -606,6 +606,32 @@ class CreateWorkItemForm(ObjectForm, BaseTrackView): def comment(self): return self.track.comment or u'' + def onChangeAction(self): + js = [self.actionJs['setDefault'], + self.actionJs['showIf'], + self.actionJs['setIfStart']] + if self.state in ('done',): + js.append(self.actionJs['setIfFinish']) + return ';\n'.join(js) + + actionJs = dict(setDefault="defValue = this.form.default_date.value", + showIf=""" +showIfIn(this, [['move', 'target_task'], + ['delegate', 'target_party']])""", + setIfStart=""" +setIf(this, 'start', [['start_date', defValue], + ['start_time', defValue], + ['end_time', null], + ['duration', ''], + ['effort', '']])""", + setIfFinish=""" +setIf(this, 'finish', [['start_date', defValue], + ['start_time', defValue], + ['end_time', defValue], + ['duration', ''], + ['effort', '']])""", +) + class CreateWorkItem(EditObject, BaseTrackView): diff --git a/organize/work/work_macros.pt b/organize/work/work_macros.pt index 45b8e00..0dabee7 100644 --- a/organize/work/work_macros.pt +++ b/organize/work/work_macros.pt @@ -120,15 +120,7 @@