source: Dev/trunk/classes/pipelineSequencer.php @ 146

Last change on this file since 146 was 146, checked in by fpvanagthoven, 13 years ago

Merged step/displaystep class functionality, division is unnecessary.
Added some javascript to manipulate editor objects in sequencerScripts.js

File size: 5.7 KB
Line 
1<?php
2/*
3 * To change this template, choose Tools | Templates
4 * and open the template in the editor.
5 */
6
7/**
8 * Description of Sequencer
9 *
10 * @author HP
11 */
12class PipelineSequencer {
13
14    // properties
15    private $pipeline = array();
16    private $name = "testSequencer";
17    private $numStepsInArray = 0;
18    private $maxNumStepsInArray = 10;
19    private $selectedStep;
20
21    public function __construct($pipeline, $name, $id) {
22        $this->pipeline = $pipeline;
23        $this->name = $name;
24    }
25
26    public function DrawSequencer() {
27        ?>
28        <br /><form name="sequencer" action="pipelineEditor.php" method="post"><fieldset id="sequencer">
29                <div class="title">Name: <?php echo $this->name; ?> </div>
30
31                <div class="seqContent">
32                    <?php $this->DrawSteps(); ?>         
33                </div>
34
35                <div id="controls">
36                    <input type="submit" name="moveSelectedLeft" value="< Move" class="surveyButton" />
37                    <input type="submit" name="moveSelectedRight" value="Move >" class="surveyButton" />
38                    <input type="submit" name="editSelected" value="Edit step" class="surveyButton" />
39                    <input type="submit" name="deleteSelected" value="Delete step" class="surveyButton" />
40                    <input type="submit" name="clearPipeline" value="Clear pipeline" class="surveyButton dis" disabled="true"/>
41                    <input type="checkbox" name="confirmClear" onChange="IsCheckEnabled(this, document.sequencer.clearPipeline);" />Really clear?
42                    <input type="hidden" name="selectedStep" />
43                </div>
44            </fieldset>
45        </form>
46        <?php
47    }
48
49    public function AddStep($newStep) {
50        $n = 1;
51        foreach ($this->pipeline as $existingStep) {
52            if ($existingStep->name == $newStep . " $n") {
53                $n++;
54            }
55        }
56
57        $this->pipeline[] = new Step($newStep, $newStep . " " . $n, count($this->pipeline) + 1);
58        //var_dump($this->pipeline);
59        ?>
60        <script type="text/javascript">
61            document.refresh();
62        </script>
63        <?php
64    }
65
66    public function RemoveStep($targetStep) {
67
68        $tempArray = array();
69        $removed = false;
70        foreach ($this->pipeline as $step) {
71            if ($step->id != $targetStep) {
72                $tempArray[] = $step;
73                if ($removed) {
74                    $step::AdjustID(-1);
75                }
76            } else {
77                $removed = true;
78            }
79        }
80        $this->pipeline = $tempArray;
81    }
82
83    public function GetPipeline() {
84        return $this->pipeline;
85    }
86
87    public function DrawSteps() {
88        //draw the actual icons in the container div.
89        if (!empty($this->pipeline)) {
90            foreach ($this->pipeline as $step) {
91                if ($this->numStepsInArray < $this->maxNumStepsInArray) {
92                    //var_dump($step);
93                    $step->DrawStep();
94                    $this->numStepsInArray++;
95                    if ($this->numStepsInArray < $this->maxNumStepsInArray && $this->numStepsInArray < count($this->pipeline)) {
96                        echo "<div class='divider'></div>";
97                    }
98                }
99            }
100        }
101    }
102
103    public function MoveStep($direction) {
104        $key = array_search($this->selectedStep, $this->pipeline);
105        //echo $key;
106    }
107
108    private function MoveEntry(&$array, $key, $dir) {
109        if ($dir == -1) {   // move up
110            if ($key > 0) {
111                $reverseArray = array_reverse(array_slice($array, $key - 1, 2, true));   // make a reversed array of the two entries, preserving keys
112                array_splice($array, $key - 1, 2, $reverseArray);    // replace the given range in the oldArray with the reversed Array
113            }
114        } else if ($dir == 1) {   // move down
115            if ($key < count($array) - 1) {
116                $reverseArray = array_reverse(array_slice($array, $key, 2, true));   // make a reversed array of the two entries, preserving keys
117                array_splice($array, $key, 2, $reverseArray);    // replace the given range in the oldArray with the reversed Array
118            }
119        }
120    }
121
122    public function SetSelected($key) {
123
124        if ($key > 0 && $key < count($this->pipeline)) {
125            $this->selectedStep = $key;
126        }
127    }
128
129    public function GetName($name) {
130        if ($name && $name != "") {
131            $this->name = $name;
132        }
133    }
134
135    public function GetFromDB() {
136
137        if (isset($_POST['destroy'])) {
138            unset($_POST['destroy']);
139            unset($_SESSION['currentPipeline']);
140        }
141
142        if (isset($_POST['clearPipeline'])) {
143            $this->pipeline = array();
144            $_SESSION['currentPipeline'] = $this->pipeline;
145        }
146
147        if (isset($_SESSION['currentPipeline']) && !empty($_SESSION['currentPipeline'])) {      // take pipeline from session data
148            $this->pipeline = $_SESSION['currentPipeline'];
149        } else {
150            $pipeline = array();
151        }
152
153        if (isset($_POST['objectToCreate'])) {      // user clicked a button in the toolbox.
154            //$this->pipeline[] = new Step($_POST['objectToCreate'], $_POST['objectToCreate'] . " NEW", null);
155            $this::AddStep($_POST['objectToCreate']);
156        }
157
158        if (isset($_POST['deleteSelected'])) {
159            if (isset($_POST['selectedStep'])) {
160                $this->RemoveStep($_POST['selectedStep']);
161            }
162        }
163
164        //var_dump($_POST);
165
166        if (isset($_POST['selectedStep'])) {
167            $this::SetSelected($_POST['selectedStep']);
168        }
169
170        $_SESSION['currentPipeline'] = $this->pipeline;
171    }
172
173}
174?>
Note: See TracBrowser for help on using the repository browser.