Beispiel #1
0
 public function save(array $data, $type)
 {
     if (!DataCenterPage::userCan('change')) {
         return false;
     }
     switch ($type) {
         case 'plan':
             $plan = DataCenterDBPlan::newFromValues($data['row']);
             $plan->save();
             return true;
         case 'rack':
         case 'object':
             $link = DataCenterDBAssetLink::newFromValues($data['row']);
             $link->save();
             return true;
     }
     return false;
 }
 public function configure($path)
 {
     // Checks if...
     if (!$path['id'] && is_array($path['parameter']) && count($path['parameter']) >= 3 && $path['parameter'][0] == 'rack') {
         $object = DataCenterDB::getAsset('object', $path['parameter'][2]);
         $model = $object->getModel();
         $rackLink = DataCenterDB::getAssetLink($path['parameter'][1]);
         $rack = $rackLink->getAsset();
         $plan = DataCenterDB::getPlan($rackLink->get('plan'));
         $objectLink = DataCenterDBAssetLink::newFromValues(array('name' => $model->get('kind'), 'plan' => $plan->getId(), 'parent_link' => $rackLink->getId(), 'asset_type' => 'object', 'asset_id' => $object->getId(), 'z' => 1, 'orientation' => 0));
         // Sets action specific parameters
         $formParameters = array('label' => 'attach', 'hidden' => array('plan', 'parent_link', 'asset_type', 'asset_id'), 'success' => array('page' => 'plans', 'type' => $path['parameter'][0], 'action' => 'view', 'id' => $path['parameter'][1]));
         $headingParameters = array('message' => 'attaching-type', 'type' => 'object');
     } else {
         // Gets asset from database
         $objectLink = DataCenterDB::getAssetLink($path['id']);
         // Gets object that object link links to
         $object = $objectLink->getAsset();
         // Gets plan from database
         $plan = DataCenterDB::getPlan($objectLink->get('plan'));
         // Gets rack link object is linked to
         $rackLink = DataCenterDB::getAssetLink($objectLink->get('parent_link'));
         // Extracts rack from rack link
         $rack = $rackLink->getAsset();
         // Sets action specific parameters
         $formParameters = array('label' => 'save', 'hidden' => array('id'), 'success' => array('page' => 'plans', 'type' => 'object', 'action' => 'view', 'id' => $path['id']));
         $headingParameters = array('message' => 'configuring-type', 'type' => 'object');
     }
     // Builds javascript that references the renderable asset
     $target = array('dataCenter.renderer.getTarget' => array(DataCenterJs::toScalar('plan')), 'getModule');
     $rackId = $rack->getId();
     $rackModel = $rack->getModel();
     $objectModel = $object->getModel();
     $objectId = $object->getId();
     $maxZ = $rackModel->get('units') - $objectModel->get('units') + 1;
     // Builds form parameters
     $formFields = array('name' => array('type' => 'string'), 'position' => array('type' => 'number', 'field' => 'z', 'min' => 1, 'max' => $maxZ, 'effect' => DataCenterJs::chain(array_merge($target, array('setObjectPosition' => array(DataCenterJs::toScalar($rackId), DataCenterJs::toScalar($objectId), '{this}.value', DataCenterJs::toScalar(true)))), false)), 'orientation' => array('type' => 'number', 'min' => 0, 'max' => 1, 'effect' => DataCenterJs::chain(array_merge($target, array('setObjectOrientation' => array(DataCenterJs::toScalar($rackId), DataCenterJs::toScalar($objectId), '{this}.value', DataCenterJs::toScalar(true)))), false)));
     // Returns 2 columm layout with a form and a scene
     return DataCenterUI::renderLayout('columns', array(DataCenterUI::renderLayout('rows', array(DataCenterUI::renderWidget('heading', $headingParameters), DataCenterUI::renderWidget('form', array_merge($formParameters, array('do' => 'save', 'failure' => $path, 'action' => array('page' => 'plans', 'type' => 'object'), 'row' => $objectLink, 'fields' => $formFields))))), DataCenterUI::renderWidget('plan', array('plan' => $plan, 'current-rack' => $rack->getId(), 'look-at-rack' => $rack->getId(), 'current-object' => $object->getId(), 'include' => !$path['id'] ? $objectLink : null))));
 }
Beispiel #3
0
 public function configure($path)
 {
     // Checks if...
     if (!$path['id'] && is_array($path['parameter']) && count($path['parameter']) >= 3 && $path['parameter'][0] == 'plan') {
         // Gets plan from database
         $plan = DataCenterDB::getPlan($path['parameter'][1]);
         // Creates new asset with default parameters
         $rack = DataCenterDB::getAsset('rack', $path['parameter'][2]);
         // Creates new asset link
         $rackLink = DataCenterDBAssetLink::newFromValues(array('name' => DataCenterUI::message('type', 'rack'), 'plan' => $plan->getId(), 'asset_type' => 'rack', 'asset_id' => $rack->getId(), 'x' => 1, 'y' => 1, 'orientation' => 0));
         // Sets action specific parameters
         $formParameters = array('label' => 'attach', 'hidden' => array('plan', 'asset_type', 'asset_id'), 'success' => array('page' => 'plans', 'type' => 'plan', 'action' => 'view', 'id' => $path['parameter'][1]));
         $headingParameters = array('message' => 'attaching-type', 'type' => 'rack');
     } else {
         // Gets asset from database
         $rackLink = DataCenterDB::getAssetLink($path['id']);
         // Gets rack that rack link links to
         $rack = $rackLink->getAsset();
         // Gets plan from database
         $plan = DataCenterDB::getPlan($rackLink->get('plan'));
         // Sets action specific parameters
         $formParameters = array('label' => 'save', 'hidden' => array('id'), 'success' => array('page' => 'plans', 'type' => 'rack', 'action' => 'view', 'id' => $path['id']));
         $headingParameters = array('message' => 'configuring-type', 'type' => 'rack');
     }
     // Gets parent asset from database
     $space = $plan->getSpace();
     // Builds javascript that references the renderable asset
     $target = array('dataCenter.renderer.getTarget' => array(DataCenterJs::toScalar('plan')), 'getModule');
     $objectId = $rack->getId();
     // Builds form parameters
     $formParameters = array_merge($formParameters, array('do' => 'save', 'failure' => $path, 'action' => array('page' => 'plans', 'type' => 'rack'), 'row' => $rackLink, 'fields' => array('name' => array('type' => 'string'), 'position' => array('fields' => array('x' => array('field' => 'x', 'min' => 1, 'max' => $space->get('width')), 'y' => array('field' => 'y', 'min' => 1, 'max' => $space->get('depth'))), 'type' => 'position', 'effect' => DataCenterJs::chain(array_merge($target, array('setRackPosition' => array(DataCenterJs::toScalar($objectId), '{this.x}.value', '{this.y}.value', DataCenterJs::toScalar(true)))), false), 'mode' => 'iso'), 'orientation' => array('type' => 'number', 'min' => 0, 'max' => 3, 'effect' => DataCenterJs::chain(array_merge($target, array('setRackOrientation' => array(DataCenterJs::toScalar($objectId), '{this}.value', DataCenterJs::toScalar(true)))), false)))));
     // Returns 2 columm layout with a form and a scene
     return DataCenterUI::renderLayout('columns', array(DataCenterUI::renderLayout('rows', array(DataCenterUI::renderWidget('heading', $headingParameters), DataCenterUI::renderWidget('form', $formParameters))), DataCenterUI::renderWidget('plan', array('plan' => $plan, 'zoom-from-rack' => $rack->getIdOrZero(), 'current-rack' => $rack->getId(), 'include' => $rackLink))));
 }