diff --git a/application/config/language.php b/application/config/language.php index 14d4113..e3f6632 100644 --- a/application/config/language.php +++ b/application/config/language.php @@ -17,7 +17,7 @@ */ $config['supported_languages'] = array( 'en' => array('name' => 'English', 'locale' => 'en_US'), - 'de' => array('name' => 'Deutsch', 'locale' => 'de_DE'), + //'de' => array('name' => 'Deutsch', 'locale' => 'de_DE'), ); /* diff --git a/application/controllers/experiments.php b/application/controllers/experiments.php index ab9376d..8fd5f92 100644 --- a/application/controllers/experiments.php +++ b/application/controllers/experiments.php @@ -47,14 +47,12 @@ class Experiments extends MY_Controller { * @param string $projectId */ public function create($projectId = '', $copyId = '') { - // TODO: Handle copying of experiments - $project = $this->project->getByID($projectId); - if (empty($projectId) || !isset($project['id'])){ + if (empty($projectId) || !isset($project['id'])) { show_404(); } - + $programs = $this->program->getAll(); // get the parameters for a specific program @@ -125,6 +123,12 @@ class Experiments extends MY_Controller { $data['programs'] = $programs; $data['project'] = $project; + // handle copying of experiments + if (!empty($copyId)) { + $data['copy'] = $this->experiment->getById($copyId); + $data['copy_params'] = $this->experiment->getParameters($copyId); + } + $this->load->view('experiments/new', $data); } @@ -155,6 +159,13 @@ class Experiments extends MY_Controller { $this->load->helper('typography'); + // update parameters + foreach ($_POST as $key => $value) { + if (preg_match('/^param-[0-9a-z]+/', $key)) { + $this->experiment->updateParameter($this->input->post($key), $experiment['id'], substr($key, 6, 16)); + } + } + $data['experiment'] = $experiment; $data['parameters'] = $this->experiment->getParameters($experiment['id']); $data['job'] = $this->job->getByExperimentId($experiment['id']); diff --git a/application/libraries/programs/Scatt.php b/application/libraries/programs/Scatt.php index 262f8c2..522924d 100644 --- a/application/libraries/programs/Scatt.php +++ b/application/libraries/programs/Scatt.php @@ -54,6 +54,10 @@ class Scatt extends Program_runner { $path = FCPATH . 'uploads/' . $experiment['project_id'] . '/' . $experiment['id'] . '/'; $handler = fopen($path . 'default.calc', "w"); + + if (!file_exists($path . 'default.obj')) { + @copy(FCPATH . 'uploads/' . $experiment['project_id'] . '/defaultmodel.obj', $path . 'default.obj'); + } $data['parameters'] = $this->CI->experiment->getParameters($experimentId); diff --git a/application/models/experiment.php b/application/models/experiment.php index 93f105e..26c0313 100644 --- a/application/models/experiment.php +++ b/application/models/experiment.php @@ -96,7 +96,7 @@ class Experiment extends CI_Model { return false; } - $experiment = $this->get($experimentId); + $experiment = $this->getById($experimentId); $parameter = $this->db->get_where('parameters', array('id' => $data['parameter_id']))->row_array(); if (isset($experiment['id']) && $experiment['program_id'] == $parameter['program_id']) { @@ -106,6 +106,30 @@ class Experiment extends CI_Model { return $this->db->affected_rows() == 1 ? $experimentId : false; } + /** + * Updates a specific parameter for the specified experiment. + * + * @param string $value + * @param string $experimentId + * @param string $parameterId + * @return boolean + */ + public function updateParameter($value, $experimentId, $parameterId) { + if (!empty($value)) { + // replace into, to overwrite existing parameters + $this->db->query("REPLACE INTO `experiments_parameters`" + . " (`experiment_id`, `parameter_id`, `value`) VALUES" + . " ('{$experimentId}', '{$parameterId}', '{$value}')"); + } else { + // delete table entry, if value is empty + $this->db->where('experiment_id', $experimentId); + $this->db->where('parameter_id', $parameterId); + $this->db->delete('experiments_parameters'); + } + + return $this->db->affected_rows() > 0; + } + /** * Gets all parameters for the specified experiment. * @@ -113,11 +137,14 @@ class Experiment extends CI_Model { * @return array */ public function getParameters($experimentId) { - $this->db->select('experiments_parameters.*, parameters.readable, parameters.name, parameters.type, parameters.unit'); - $this->db->join('parameters', 'experiments_parameters.parameter_id = parameters.id', 'left'); - $this->db->where('experiment_id', $experimentId); + $programId = $this->db->get_where('experiments', array('id' => $experimentId))->row()->program_id; - $query = $this->db->get('experiments_parameters'); + $query = $this->db->query("SELECT `experiments_parameters`.*, `parameters`.`readable`," + . " `parameters`.`name`, `parameters`.`type`, `parameters`.`unit`," + . " `parameters`.`description`, `parameters`.`id` AS parameter_id" + . " FROM `parameters` LEFT JOIN `experiments_parameters`" + . " ON (`experiments_parameters`.`parameter_id` = `parameters`.`id`" + . " AND `experiment_id` = '{$experimentId}') WHERE `program_id` = '{$programId}' ORDER BY `sort_number` ASC"); return $query->num_rows() > 0 ? $query->result_array() : false; } diff --git a/application/views/experiments/detail.php b/application/views/experiments/detail.php index 523cf06..5a8709a 100644 --- a/application/views/experiments/detail.php +++ b/application/views/experiments/detail.php @@ -31,44 +31,46 @@
-

- - - - - - - - - + +

+
+ + + + + + + + - - - + + - - + + + + - -
- +
+ - -   - + +   + - -
-

- -

+ + +

+ +

+
-

+

- + @@ -95,26 +95,28 @@ - +   @@ -132,4 +134,11 @@ + + + + load->view('footer');?> diff --git a/assets/css/style.css b/assets/css/style.css index 983231c..4844caa 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -841,36 +841,62 @@ div.progress_bar strong { padding: 4px 8px; } -#jt_arrow_left { - background: url(../images/arrow-left.gif) left top no-repeat; - position: absolute; - z-index: 101; - left: -11px; - height: 23px; - width: 10px; - top: -3px; -} - -#jt_arrow_right { - background: url(../images/arrow-right.gif) left top no-repeat; - position: absolute; - z-index: 101; - height: 23px; - width: 11px; - top: -2px; -} - #jt { position: absolute; z-index: 100; border: 1px solid #ccc; background-color: #fff; - margin-top: 5px; font-size: 10px; } +#jt.jt_left { + margin-right: 10px; +} + +#jt.jt_right { + margin-left: 6px; +} + +#jt:before { + content: ""; + position: absolute; + top: 10px; + left: -16px; + border-width: 0 15px 15px 0; + border-style: solid; + border-color: transparent #ccc; + width: 0; + display: block; +} + +#jt:after { + content: ""; + position: absolute; + top: 11px; + left: -14px; + border-width: 0 14px 14px 0; + border-style: solid; + border-color: transparent #fff; + width: 0; + display: block; +} + +#jt.jt_left:before { + left: auto; + right: -16px; + border-width: 15px 15px 0 0; + border-color: #ccc transparent; +} + +#jt.jt_left:after { + left: auto; + right: -14px; + border-width: 14px 14px 0 0; + border-color: #fff transparent; +} + #jt_copy { - padding: 5px; + padding: 10px; color: #666; } @@ -880,26 +906,6 @@ div.progress_bar strong { height: 12px; } -#jt_close_left { - background-color: #ccc; - text-align: left; - padding-left: 4px; - padding-bottom: 2px; - padding-top: 1px; - font-weight: bold; - color: #000; -} - -#jt_close_right { - background-color: #ccc; - text-align: left; - padding-left: 4px; - padding-bottom: 2px; - padding-top: 1px; - font-weight: bold; - color: #000; -} - #jt_copy p { margin: 0; line-height: 12px; diff --git a/assets/js/jtip.js b/assets/js/jtip.js index 1254e01..cfc2b8a 100644 --- a/assets/js/jtip.js +++ b/assets/js/jtip.js @@ -37,14 +37,14 @@ function JT_show(url, linkId, title) { var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; var hasArea = w - getAbsoluteLeft(linkId); - var clickElementY = getAbsoluteTop(linkId) - 3; // set y position + var clickElementY = getAbsoluteTop(linkId) + 2; // set y position var clickElementX = 0; var queryString = url.replace(/^[^\?]+\??/,''); var params = parseQuery(queryString); if (params['width'] === undefined) { - params['width'] = 250; + params['width'] = 200; } if (params['link'] !== undefined) { $('#' + linkId).bind('click', function() { @@ -54,11 +54,11 @@ function JT_show(url, linkId, title) { } if (hasArea > (params['width'] * 1) + 75) { - $('body').append('

' + title + '
'); // right side + $('body').append('
'); // right side var arrowOffset = getElementWidth(linkId) + 11; clickElementX = getAbsoluteLeft(linkId) + arrowOffset; // set x position } else { - $('body').append('
' + title + '
'); // left side + $('body').append('
'); // left side clickElementX = getAbsoluteLeft(linkId) - ((params['width']*1) + 15); //set x position } diff --git a/assets/js/scattport.js b/assets/js/scattport.js index 19c1fc9..9b8126c 100644 --- a/assets/js/scattport.js +++ b/assets/js/scattport.js @@ -122,8 +122,12 @@ $(document).ready(function() { $('.tab_content').hide(); // hide all tab content var activeTab = $(this).find('a').attr('href'); - $(activeTab).fadeIn(); // fade in the active tab content - return false; + if (activeTab.match(/^#.*/g)) { + $(activeTab).fadeIn(); // fade in the active tab content + return false; + } else { + return true; + } }); /*