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 @@