示例#1
0
 private static function addPlanJsFunction(array $parameters)
 {
     // Adds script to add plan to scene
     $jsOutput = DataCenterJs::callFunction('scene.setModule', array(DataCenterJs::buildInstance('DataCenterScenePlan', array(DataCenterJs::toScalar($parameters['plan']->getId()), self::buildPhysicalJsObject($parameters), self::buildStateJsObject($parameters)))));
     // Adds script to render scene
     $jsOutput .= DataCenterJs::callFunction('scene.render');
     // Returns JavaScript
     return DataCenterJs::buildFunction(array('scene'), $jsOutput);
 }
示例#2
0
 public function edit($path)
 {
     // Detects mode
     if (!$path['id']) {
         // Creates a new facility location
         $location = DataCenterDBLocation::newFromValues(array('tense' => 'present', 'name' => DataCenterUI::message('default', 'new-type', DataCenterUI::message('type', 'location'))));
         // Sets 'do' specific parameters
         $formParameters = array('label' => 'add', 'success' => array('page' => 'facilities', 'type' => 'location'), 'type' => 'add');
         $headingParameters = array('message' => 'adding-type', 'subject' => DataCenterUI::message('type', $path['type']));
     } else {
         // Gets facility location from database
         $location = DataCenterDB::getLocation($path['id']);
         // Sets 'do' specific parameters
         $formParameters = array('label' => 'save', 'hidden' => array('id'), 'success' => array('page' => 'facilities', 'type' => 'location', 'action' => 'view', 'id' => $path['id']), 'type' => 'edit');
         $headingParameters = array('message' => 'editing-type', 'subject' => DataCenterUI::message('type', $path['type']));
     }
     // Builds JavaScript that hooks the button into the geocoder
     $jsForm = 'document.form_save';
     $jsOut = DataCenterJs::callFunction('addHandler', array("{$jsForm}.field_button_0", DataCenterJs::toScalar('click'), DataCenterJs::buildFunction(null, DataCenterJs::chain(array('dataCenter.renderer.getTarget' => DataCenterJs::toScalar('map'), 'showAddress' => array('document.form_save.field_region.value', DataCenterJs::toObject(array('latField' => "'{$jsForm}.field_latitude'", 'lngField' => "'{$jsForm}.field_longitude'"))))))));
     // Complete form parameters
     $formParameters = array_merge($formParameters, array('do' => 'save', 'failure' => $path, 'action' => array('page' => 'facilities', 'type' => 'location'), 'row' => $location, 'fields' => array('tense' => array('type' => 'tense', 'disable' => !$path['id'] ? array('past') : array()), 'name' => array('type' => 'string'), 'region' => array('type' => 'string'), array('type' => 'button', 'label' => 'lookup'), 'latitude' => array('type' => 'string'), 'longitude' => array('type' => 'string'))));
     // Returns 2 columm layout with a form and a map widget
     return DataCenterUI::renderLayout('columns', array(DataCenterUI::renderLayout('rows', array(DataCenterUI::renderWidget('heading', $headingParameters), DataCenterUI::renderWidget('form', $formParameters))), DataCenterUI::renderWidget('map', !$path['id'] ? array() : array('location' => $location)))) . DataCenterXml::script($jsOut);
 }
示例#3
0
    public static function render(array $parameters)
    {
        // Increment the number of tabbed layouts in existence
        self::$sets++;
        // Gets id for this set
        $set = self::$sets;
        // Begins layout
        $xmlOutput = parent::begin(self::$parameters['class']);
        $xmlOutput .= DataCenterXml::open('div', array('class' => 'tabs'));
        // Loops over each content block
        $state = 'current';
        $tab = 0;
        foreach ($parameters as $name => $content) {
            if ($content !== null) {
                // Adds row
                $xmlOutput .= DataCenterXml::div(array('class' => 'item-' . $state, 'id' => 'tabs_' . $set . '_tab_' . $tab, 'onclick' => DataCenterJs::callFunction('dataCenter.ui.layouts.tabs.select', array(DataCenterJs::toScalar($set), DataCenterJs::toScalar($tab)))), DataCenterUI::message('tab', $name));
                $state = 'normal';
                $tab++;
            } else {
                $xmlOutput .= DataCenterXml::div(array('class' => 'item-disabled'), DataCenterUI::message('tab', $name));
            }
        }
        $xmlOutput .= DataCenterXml::close('div');
        $xmlOutput .= DataCenterXml::clearFloating();
        // Loops over each content block
        $display = 'block';
        $tab = 0;
        foreach ($parameters as $content) {
            if ($content !== null) {
                // Adds row
                $xmlOutput .= DataCenterXml::div(DataCenterXml::div(array('class' => 'page', 'id' => 'tabs_' . $set . '_page_' . $tab, 'style' => 'display:' . $display), $content));
                $display = 'none';
                $tab++;
            }
        }
        // Ends layout
        $xmlOutput .= parent::end();
        // Builds javascript for layout
        $jsOutput = <<<END
\t\t\tif ( !dataCenter.ui.layouts.tabs ) {
\t\t\t\tdataCenter.ui.layouts.tabs = {
\t\t\t\t\tsets: {},
\t\t\t\t\tselect: function(
\t\t\t\t\t\tsetID, tabID
\t\t\t\t\t) {
\t\t\t\t\t\tif ( this.sets[setID] ) {
\t\t\t\t\t\t\tfor ( var i = 0; i < this.sets[setID].count; i++ ) {
\t\t\t\t\t\t\t\tvar page = document.getElementById(
\t\t\t\t\t\t\t\t\t'tabs_' + setID + '_page_' + i
\t\t\t\t\t\t\t\t);
\t\t\t\t\t\t\t\tvar tab = document.getElementById(
\t\t\t\t\t\t\t\t\t'tabs_' + setID + '_tab_' + i
\t\t\t\t\t\t\t\t);
\t\t\t\t\t\t\t\tif ( tab && page ) {
\t\t\t\t\t\t\t\t\tif ( i == tabID ) {
\t\t\t\t\t\t\t\t\t\tpage.style.display = 'block';
\t\t\t\t\t\t\t\t\t\ttab.className = 'item-current';
\t\t\t\t\t\t\t\t\t} else {
\t\t\t\t\t\t\t\t\t\tpage.style.display = 'none';
\t\t\t\t\t\t\t\t\t\ttab.className = 'item-normal';
\t\t\t\t\t\t\t\t\t}
\t\t\t\t\t\t\t\t}
\t\t\t\t\t\t\t}
\t\t\t\t\t\t}
\t\t\t\t\t},
\t\t\t\t\taddSet: function( name, count ) {
\t\t\t\t\t\tthis.sets[name] = {};
\t\t\t\t\t\tthis.sets[name].count = count;
\t\t\t\t\t}
\t\t\t\t}
\t\t\t}
\t\t\t// Add information for this set
\t\t\tdataCenter.ui.layouts.tabs.addSet( {$set}, {$tab} );
END;
        // Adds script
        $xmlOutput .= DataCenterXml::script($jsOutput);
        // Returns results
        return $xmlOutput;
    }