| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- <?php
- /**
- * The design view file of pivot module of ZenTaoPMS.
- * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
- * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
- * @author Chenxuan Song <songchenxuan@easycorp.ltd>
- * @package pivot
- * @link https://www.zentao.net
- */
- namespace zin;
- jsVar('pivotID', $pivot->id);
- jsVar('pivot', $pivot);
- jsVar('designActions', $config->pivot->designActions);
- jsVar('actionLoadTarget', $config->pivot->actionLoadTarget);
- jsVar('confirmLeave', $lang->pivot->confirmLeave);
- jsVar('prefix', $config->db->prefix);
- jsVar('resetSettingsTip', $lang->pivot->resetSettings);
- jsVar('draftSave', $lang->pivot->draftSave);
- jsVar('confirmDraft', $lang->pivot->confirm->draft);
- jsVar('confirmPublish', $lang->pivot->confirm->publish);
- jsVar('objectFields', $objectFields);
- jsVar('tableOptions', $tableOptions);
- jsVar('stepOrder', $this->config->pivot->stepOrder);
- jsVar('changeModeTip', $lang->bi->changeModeTip);
- jsVar('cannotNextStep', $lang->pivot->cannotNextStep);
- jsVar('clearLang', $lang->pivot->clear);
- jsVar('keepLang', $lang->pivot->keep);
- $step = $pivotState->step;
- $this->app->loadLang('dataview');
- $this->loadModel('bi');
- $fnGenerateNav = function($currStep) use ($lang)
- {
- $items = array();
- $selected = true;
- foreach($this->config->pivot->stepOrder as $step)
- {
- $title = $lang->pivot->designStepNav[$step];
- $isCurrStep = $currStep == $step;
- if($isCurrStep) $selected = false;
- $items[] = array('text' => $title, 'active' => $isCurrStep, 'selected' => $selected, 'step' => $step);
- }
- return div
- (
- setID('stepNav'),
- setClass('self-center m-auto absolute'),
- nav
- (
- setClass('step-nav'),
- set::type('steps'),
- set::items($items),
- on::click()->do('changeStep(event)')
- )
- );
- };
- $fnGenerateCommonFilters = function() use ($pivotState)
- {
- if(empty($pivotState->pivotFilters)) return null;
- list($queryFilters, $resultFilters) = $pivotState->pivotFilters;
- $filters = array();
- if(!empty($queryFilters)) foreach($queryFilters as $filter) $filters[] = filter(set($filter));
- if(!empty($resultFilters) && $pivotState->step !== 'query') foreach($resultFilters as $filter) $filters[] = resultFilter(set($filter));
- return $filters;
- };
- $biPath = $this->app->getModuleExtPath('bi', 'ui');
- $pivotPath = $this->app->getModuleExtPath('pivot', 'ui');
- include $biPath['common'] . 'query.dictionary.html.php';
- include $biPath['common'] . 'aclbox.html.php';
- include $pivotPath['common'] . 'exportdata.html.php';
- include "./block/query.step.html.php";
- include "./block/design.step.html.php";
- include "./block/drill.step.html.php";
- include "./block/filter.step.html.php";
- include "./block/publish.step.html.php";
- featurebar
- (
- setClass('relative'),
- div
- (
- setClass('row gap-2'),
- backBtn
- (
- setClass('px-1'),
- set::icon('back'),
- set::type('ghost'),
- set::back('pivot-browse'),
- $lang->pivot->cancelAndBack
- ),
- div(setClass('divider h-5 mt-1.5')),
- div
- (
- setClass('entity-label flex items-center gap-x-2 text-normal'),
- $lang->pivot->design
- )
- ),
- to::trailing
- (
- $fnGenerateNav($step)
- )
- );
- toolbar
- (
- setID('saveAsDraft'),
- btn
- (
- set::type('ghost'),
- set::icon('save'),
- $lang->pivot->draft,
- on::click()->do('savePivot("draft")')
- )
- );
- div
- (
- setID('pivotState'),
- setClass('hidden'),
- set('data-state', $pivotState),
- set('data-changed', array()),
- set('data-url', createLink('pivot', 'design', "pivotID={$pivot->id}")),
- set('data-actions', $config->pivot->designActions),
- h::js(<<<JS
- $(function(){
- $('html').css('overflow', 'auto');
- });
- JS
- )
- );
- $fnGenerateDictionary($pivotState->mode == 'text' && $step == 'query');
- div(setID('stepContent'), $step == 'query' ? $fnGenerateStepQueryContent() : div(setID("step$step"), setClass('flex gap-4'), pivotTable
- (
- setClass('h-full overflow-auto', array('hidden' => $step == 'query')),
- set::width('calc(100% - 450px)'),
- set::title($pivotState->name),
- set::cols($pivotState->pivotCols),
- set::data($pivotState->pivotData),
- set::cellSpan($pivotState->pivotCellSpan),
- set::filters($fnGenerateCommonFilters()),
- set::onCellClick(jsRaw('clickCell')),
- to::heading
- (
- !empty($pivotState->pivotData) ? array
- (
- toolbar
- (
- hasPriv('pivot', 'export') ? item(set(array
- (
- 'text' => $this->lang->export,
- 'icon' => 'export',
- 'class' => 'ghost',
- 'data-target' => '#export',
- 'data-toggle' => 'modal',
- 'data-size' => 'sm'
- ))) : null
- ),
- div
- (
- setClass('hidden'),
- rawContent(),
- !empty($originData) ? html($this->pivot->buildPivotTable($originData, $originConfigs)) : null
- )
- ) : null
- )
- ), $step == 'design' ? $fnGenerateStepDesignConfig($pivotState) : null, $step == 'drill' ? $fnGenerateStepDrillConfig($pivotState) : null, $step == 'filter' ? $fnGenerateStepFilterConfig($pivotState) : null, $step == 'publish' ? $fnGenerateStepPublishConfig($pivotState) : null), on::click('#export-data-button')->do('exportData()'), on::click('.next-step')->do('nextStep()'), on::click('.load-custom-pivot')->do('loadCustomPivot(event)'));
|