Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into zentaopms_304
@@ -14087,7 +14087,6 @@ REPLACE INTO `zt_chart` (`id`, `name`, `dimension`, `type`, `group`, `stage`, `d
|
||||
(1045, '宏观数据-产品数据概览',1,'table',0,'published','','','{\"group\":[],\"column\":[\r\n{\"field\":\"program\",\"valOrAgg\":\"value\",\"name\":\"一级项目集\"},{\"field\":\"productLine\",\"valOrAgg\":\"value\",\"name\":\"产品线\"},\r\n{\"field\":\"product\",\"valOrAgg\":\"value\",\"name\":\"产品\"},\r\n{\"field\":\"story\",\"valOrAgg\":\"value\",\"name\":\"需求数\"},\r\n{\"field\":\"bug\",\"valOrAgg\":\"value\",\"name\":\"Bug数\"},\r\n{\"field\":\"plan\",\"valOrAgg\":\"value\",\"name\":\"计划数\"},\r\n{\"field\":\"release\",\"valOrAgg\":\"value\",\"name\":\"发布数\"}],\"filter\":[]}','[]','','SELECT \r\n t1.name AS product, \r\n IFNULL(t2.name, \'/\') AS program, \r\n IFNULL(t3.name, \'/\') AS productLine, \r\n IFNULL(t4.plan, 0) AS plan, \r\n IFNULL(t5.release, 0) AS `release`, \r\n IFNULL(t6.story, 0) AS story, \r\n IFNULL(t7.bug, 0) AS bug \r\nFROM \r\n zt_product AS t1 \r\n LEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \r\n LEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \r\n LEFT JOIN (SELECT product, COUNT(1) AS plan FROM zt_productplan WHERE deleted = \'0\' GROUP BY product) AS t4 ON t1.id = t4.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS `release` FROM zt_release WHERE deleted = \'0\' GROUP BY product) AS t5 ON t1.id = t5.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' GROUP BY product) AS t6 ON t1.id = t6.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' GROUP BY product) AS t7 ON t1.id = t7.product \r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\'AND t1.vision = \'rnd\'\r\nORDER BY t1.order',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
|
||||
(1046, '宏观数据-产品需求完成率',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"product\",\"name\":\"产品\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"closedRate\",\"agg\":\"value\",\"name\":\"需求完成率\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT\r\n t1.name AS product,\r\n IFNULL(t2.name, \'/\') AS program, \r\n IFNULL(t3.name, \'/\') AS productLine, \r\n IFNULL(t4.story, 0) AS closedStory, \r\n t5.story AS totalStory, \r\n ROUND(IFNULL(t4.story, 0) / t5.story * 100, 2) AS closedRate \r\nFROM zt_product AS t1 \r\nLEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \r\nLEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \r\nLEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' AND closedReason = \'done\' GROUP BY product) AS t4 ON t1.id = t4.product \r\nLEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' AND ( closedReason = \'done\' OR status != \'closed\') GROUP BY product) AS t5 ON t1.id = t5.product \r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\' AND t1.vision = \'rnd\' AND t5.story IS NOT NULL \r\nORDER BY t1.order DESC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
|
||||
(1047, '宏观数据-产品Bug修复率',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"product\",\"name\":\"产品\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"fixedRate\",\"agg\":\"value\",\"name\":\"Bug修复率\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT \r\n t1.name AS product,\r\n IFNULL(t2.name, \'/\') AS program,\r\n IFNULL(t3.name, \'/\') AS productLine,\r\n IFNULL(t4.bug, 0) AS fixedBug,\r\n t5.bug AS totalBug,\r\n ROUND(IFNULL(t4.bug, 0) / t5.bug * 100, 2) AS fixedRate\r\nFROM zt_product AS t1\r\nLEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1\r\nLEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\'\r\nLEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' AND resolution = \'fixed\' AND status = \'closed\' GROUP BY product) AS t4 ON t1.id = t4.product\r\nLEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' AND (resolution = \'fixed\' OR resolution = \'postponed\' OR status = \'active\') GROUP BY product) AS t5 ON t1.id = t5.product\r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\' AND t1.vision = \'rnd\' AND t5.bug IS NOT NULL\r\nORDER BY t1.order DESC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
|
||||
(1048, '宏观数据-公司组织结构图',1,'org',0,'published','','','','[]','','',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
|
||||
(1049, '宏观数据-部门人员分布图',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"deptName\",\"name\":\"部门\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"count\",\"agg\":\"value\",\"name\":\"部门人数\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT IF(t3.id IS NOT NULL, t3.`name`, \'空\') AS deptName,count(1) as count, \r\nIF(t3.id IS NOT NULL, t3.`order`, 9999) AS deptOrder \r\nFROM `zt_user` AS t1 \r\nLEFT JOIN `zt_dept` AS t2 ON t1.dept = t2.id\r\nLEFT JOIN `zt_dept` AS t3 ON FIND_IN_SET(TRIM(\',\' FROM t3.path), TRIM(\',\' FROM t2.path)) AND t3.grade = \'1\'\r\nWHERE t1.deleted = \'0\'\r\nGROUP BY deptName, deptOrder \r\nORDER BY deptOrder ASC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
|
||||
(1050, '宏观数据-公司角色分布图',1,'pie',0,'published','','','{\"group\":[{\"field\":\"role\",\"name\":\"类型\"}],\"metric\":[{\"type\":\"agg\",\"field\":\"account\",\"agg\":\"count\",\"name\":\"人数\",\"valOrAgg\":\"count\"}]}','[]','','SELECT\n account,\nCASE\n ROLE \n WHEN \'dev\' THEN\n \'研发\' \n WHEN \'qa\' THEN\r\n \'测试\'\r\n WHEN \'pm\' THEN\r\n \'项目经理\'\r\n WHEN \'others\' THEN\r\n \'其他\'\r\n WHEN \'td\' THEN\r\n \'研发主管\'\r\n WHEN \'pd\' THEN\r\n \'产品主管\'\r\n WHEN \'po\' THEN\r\n \'产品经理\'\r\n WHEN \'qd\' THEN\r\n \'测试主管\'\r\n WHEN \'top\' THEN\r\n \'高层管理\'\r\n ELSE\r\n \'未知\'\r\n END\r\n role\n FROM\n `zt_user` \n WHERE\n deleted = \'0\' ',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
|
||||
(1051, '宏观数据-人员工龄分布图',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"joinDate\",\"name\":\"工龄\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"count\",\"agg\":\"value\",\"name\":\"人数\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT count(1) as count, \'0-1年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 1 YEAR)\r\nunion\r\nSELECT count(1) as count, \'1-3年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 3 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 1 YEAR)\r\nunion\r\nSELECT count(1) as count, \'3-5年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 5 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 3 YEAR)\r\nunion\r\nSELECT count(1) as count, \'5-10年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 10 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 5 YEAR)\r\nunion\r\nSELECT count(1) as count, \'10年以上\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` < DATE_SUB(NOW(), INTERVAL 10 YEAR) AND LEFT(`join`, 4) != \'0000\'\r\nunion \r\nSELECT count(1) as count, \'未知\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND LEFT(`join`, 4) = \'0000\'',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
|
||||
|
||||
@@ -2206,7 +2206,7 @@ class block extends control
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->andWhere('type')->eq('project')
|
||||
->andWhere('model')->ne('kanban')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->orderBy('order_asc,id_desc')
|
||||
->fetchAll('id');
|
||||
|
||||
|
||||
@@ -248,12 +248,13 @@ class buildModel extends model
|
||||
$selectedBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => $this->lang->trunk);
|
||||
$productIdList = is_array($products) ? array_keys($products) : $products;
|
||||
if($buildIdList)
|
||||
{
|
||||
$buildIdList = str_replace('trunk', '0', $buildIdList);
|
||||
$selectedBuilds = $this->dao->select('id, name')->from(TABLE_BUILD)
|
||||
->where('id')->in($buildIdList)
|
||||
->beginIF($products)->andWhere('product')->in(array_keys($products))->fi()
|
||||
->beginIF($products)->andWhere('product')->in($productIdList)->fi()
|
||||
->beginIF($objectType === 'execution' and $objectID)->andWhere('execution')->eq($objectID)->fi()
|
||||
->beginIF($objectType === 'project' and $objectID)->andWhere('project')->eq($objectID)->fi()
|
||||
->beginIF(strpos($params, 'hasdeleted') === false)->andWhere('deleted')->eq(0)->fi()
|
||||
@@ -261,7 +262,6 @@ class buildModel extends model
|
||||
}
|
||||
$branchPairs = $this->dao->select('id,name')->from(TABLE_BRANCH)->fetchPairs();
|
||||
|
||||
$productIdList = is_array($products) ? array_keys($products) : $products;
|
||||
$shadows = $this->dao->select('shadow')->from(TABLE_RELEASE)->where('product')->in($productIdList)->fetchPairs('shadow', 'shadow');
|
||||
$branchs = strpos($params, 'separate') === false ? "0,$branch" : $branch;
|
||||
$allBuilds = $this->dao->select('t1.id, t1.name, t1.branch, t1.execution, t1.date, t1.deleted, t2.status as objectStatus, t3.id as releaseID, t3.status as releaseStatus, t4.type as productType')->from(TABLE_BUILD)->alias('t1')
|
||||
|
||||
@@ -570,6 +570,8 @@ class chartModel extends model
|
||||
*/
|
||||
public static function isClickable($chart, $action)
|
||||
{
|
||||
global $config;
|
||||
if($chart->builtin and in_array($chart->id, $config->screen->builtinChart)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,4 +4,114 @@ $config->dimension->changeDimensionLink['screen-browse'] = 'screen|browse|dimens
|
||||
$config->dimension->changeDimensionLink['pivot-preview'] = 'pivot|preview|dimensionID=%s';
|
||||
$config->dimension->changeDimensionLink['chart-preview'] = 'chart|preview|dimensionID=%s';
|
||||
|
||||
$config->dimension->defaultDimension = array('macro', 'efficiency', 'quality');
|
||||
$config->dimension->defaultDimension = array('macro', 'efficiency', 'quality');
|
||||
|
||||
/* Pivot second module list. */
|
||||
$config->dimension->pivotModuleList = array();
|
||||
$config->dimension->pivotModuleList['macro'] = array();
|
||||
$config->dimension->pivotModuleList['macro']['staff'] = 'program';
|
||||
$config->dimension->pivotModuleList['macro']['product'] = 'product';
|
||||
|
||||
$config->dimension->pivotModuleList['efficiency'] = array();
|
||||
$config->dimension->pivotModuleList['efficiency']['project'] = 'project,progress,cost,timelimit';
|
||||
|
||||
$config->dimension->pivotModuleList['quality'] = array();
|
||||
$config->dimension->pivotModuleList['quality']['test'] = 'bug';
|
||||
|
||||
/* Chart second module list. */
|
||||
$config->dimension->chartModuleList = array();
|
||||
$config->dimension->chartModuleList['macro'] = array();
|
||||
$config->dimension->chartModuleList['macro']['staff'] = 'program,project,product,plan,execution,release,story,task,bug,doc,cost,personnel,effort,behavior';
|
||||
$config->dimension->chartModuleList['macro']['product'] = 'story,release';
|
||||
$config->dimension->chartModuleList['macro']['test'] = 'bug';
|
||||
$config->dimension->chartModuleList['macro']['project'] = 'project,task,execution,cost,timelimit,story';
|
||||
|
||||
$config->dimension->chartModuleList['efficiency'] = array();
|
||||
$config->dimension->chartModuleList['efficiency']['staff'] = 'project,execution,release,story,task,bug,cost';
|
||||
$config->dimension->chartModuleList['efficiency']['project'] = 'progress,cost,timelimit';
|
||||
|
||||
$config->dimension->chartModuleList['quality'] = array();
|
||||
$config->dimension->chartModuleList['quality']['staff'] = 'story,bug,testcase';
|
||||
$config->dimension->chartModuleList['quality']['test'] = 'bug,testcase';
|
||||
|
||||
/* Pivot upgrade group. */
|
||||
$config->dimension->pivotUpgrade = array();
|
||||
$config->dimension->pivotUpgrade['macro'] = array();
|
||||
$config->dimension->pivotUpgrade['macro']['staff'] = array();
|
||||
$config->dimension->pivotUpgrade['macro']['staff']['program'] = array('chart' => '1041,1073,1074');
|
||||
$config->dimension->pivotUpgrade['macro']['product'] = array();
|
||||
$config->dimension->pivotUpgrade['macro']['product']['product'] = array('chart' => '1045,1075,1076');
|
||||
|
||||
$config->dimension->pivotUpgrade['efficiency'] = array();
|
||||
$config->dimension->pivotUpgrade['efficiency']['project'] = array();
|
||||
$config->dimension->pivotUpgrade['efficiency']['project']['project'] = array('chart' => '10118,10119');
|
||||
$config->dimension->pivotUpgrade['efficiency']['project']['progress'] = array('chart' => '10116,10117');
|
||||
$config->dimension->pivotUpgrade['efficiency']['project']['cost'] = array('pivot' => '1001');
|
||||
$config->dimension->pivotUpgrade['efficiency']['project']['timelimit'] = array('pivot' => '1000');
|
||||
|
||||
$config->dimension->pivotUpgrade['quality'] = array();
|
||||
$config->dimension->pivotUpgrade['quality']['test'] = array();
|
||||
$config->dimension->pivotUpgrade['quality']['test']['bug'] = array('pivot' => '1002');
|
||||
|
||||
/* Chart upgrade group. */
|
||||
$config->dimension->chartUpgrade['macro'] = array();
|
||||
$config->dimension->chartUpgrade['macro']['staff'] = array();
|
||||
$config->dimension->chartUpgrade['macro']['staff']['program'] = array('chart' => '1018,1033,1042,1043,1055,1083');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['project'] = array('chart' => '1019,1036,1060,1066');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['product'] = array('chart' => '1020,1035,1056');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['plan'] = array('chart' => '1021,1037,1059');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['execution'] = array('chart' => '1022,1038,1061,1067');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['release'] = array('chart' => '1023,1064,1068');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['story'] = array('chart' => '1024,1034,1057,1069');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['task'] = array('chart' => '1025,1040,1062,1071');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['bug'] = array('chart' => '1026,1039,1058,1070');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['doc'] = array('chart' => '1027,1063');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['cost'] = array('chart' => '1028,1029');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['personnel'] = array('chart' => '1049,1050,1051,1065,1105,1106,1107,1108,1109,1110');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['effort'] = array('chart' => '1072');
|
||||
$config->dimension->chartUpgrade['macro']['staff']['behavior'] = array('chart' => '1030');
|
||||
|
||||
$config->dimension->chartUpgrade['macro']['product'] = array();
|
||||
$config->dimension->chartUpgrade['macro']['product']['story'] = array('chart' => '1031,1046,1077,1088,1089,1091,1092,1099,1101,1102');
|
||||
$config->dimension->chartUpgrade['macro']['product']['release'] = array('chart' => '1082');
|
||||
|
||||
$config->dimension->chartUpgrade['macro']['test'] = array();
|
||||
$config->dimension->chartUpgrade['macro']['test']['bug'] = array('chart' => '1032,1047,1078,1090,1093,1103,1104');
|
||||
|
||||
$config->dimension->chartUpgrade['macro']['project'] = array();
|
||||
$config->dimension->chartUpgrade['macro']['project']['project'] = array('chart' => '1044,1080');
|
||||
$config->dimension->chartUpgrade['macro']['project']['task'] = array('chart' => '1079');
|
||||
$config->dimension->chartUpgrade['macro']['project']['execution'] = array('chart' => '1081');
|
||||
$config->dimension->chartUpgrade['macro']['project']['cost'] = array('chart' => '1085,1086,1097,1087,1098');
|
||||
$config->dimension->chartUpgrade['macro']['project']['timelimit'] = array('chart' => '1094,1096');
|
||||
$config->dimension->chartUpgrade['macro']['project']['story'] = array('chart' => '1091,1100');
|
||||
|
||||
$config->dimension->chartUpgrade['efficiency'] = array();
|
||||
$config->dimension->chartUpgrade['efficiency']['staff'] = array();
|
||||
$config->dimension->chartUpgrade['efficiency']['staff']['project'] = array('chart' => '10000,10001,10002,10101,10103,10105,10107');
|
||||
$config->dimension->chartUpgrade['efficiency']['staff']['execution'] = array('chart' => '10007,10008,10009,10102,10104,10106,10107');
|
||||
$config->dimension->chartUpgrade['efficiency']['staff']['release'] = array('chart' => '10005');
|
||||
$config->dimension->chartUpgrade['efficiency']['staff']['story'] = array('chart' => '10003,10004,10109,10111');
|
||||
$config->dimension->chartUpgrade['efficiency']['staff']['task'] = array('chart' => '10010,10110');
|
||||
$config->dimension->chartUpgrade['efficiency']['staff']['bug'] = array('chart' => '1070');
|
||||
$config->dimension->chartUpgrade['efficiency']['staff']['cost'] = array('chart' => '10011,10012,10013,10112,10113');
|
||||
|
||||
$config->dimension->chartUpgrade['efficiency']['project'] = array();
|
||||
$config->dimension->chartUpgrade['efficiency']['project']['progress'] = array('chart' => '10114,10115');
|
||||
$config->dimension->chartUpgrade['efficiency']['project']['cost'] = array();
|
||||
$config->dimension->chartUpgrade['efficiency']['project']['timelimit'] = array('chart' => '10014,10015,10016,10017,10020,10021,10018,10019');
|
||||
|
||||
$config->dimension->chartUpgrade['quality'] = array();
|
||||
$config->dimension->chartUpgrade['quality']['staff'] = array();
|
||||
$config->dimension->chartUpgrade['quality']['staff']['story'] = array('chart' => '10201,10202');
|
||||
$config->dimension->chartUpgrade['quality']['staff']['bug'] = array('chart' => '10204,10205,10206');
|
||||
$config->dimension->chartUpgrade['quality']['staff']['testcase'] = array('chart' => '10203');
|
||||
|
||||
$config->dimension->chartUpgrade['quality']['test'] = array();
|
||||
$config->dimension->chartUpgrade['quality']['test']['bug'] = array('chart' => '10209,10210,1014,10211,10219,10212,10218,10214,10220,10213,10216');
|
||||
$config->dimension->chartUpgrade['quality']['test']['testcase'] = array('chart' => '10208,10215');
|
||||
|
||||
$config->dimension->secondModuleList = array();
|
||||
$config->dimension->secondModuleList['macro'] = array('pivot' => $config->dimension->pivotModuleList['macro'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['macro'], 'chart' => $config->dimension->chartModuleList['macro'], 'chartUpgrade' => $config->dimension->chartUpgrade['macro']);
|
||||
$config->dimension->secondModuleList['efficiency'] = array('pivot' => $config->dimension->pivotModuleList['efficiency'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['efficiency'], 'chart' => $config->dimension->chartModuleList['efficiency'], 'chartUpgrade' => $config->dimension->chartUpgrade['efficiency']);
|
||||
$config->dimension->secondModuleList['quality'] = array('pivot' => $config->dimension->pivotModuleList['quality'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['quality'], 'chart' => $config->dimension->chartModuleList['quality'], 'chartUpgrade' => $config->dimension->chartUpgrade['quality']);
|
||||
|
||||
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
|
||||
$lang->dimension->moduleList['project'] = $lang->projectCommon;
|
||||
$lang->dimension->moduleList['test'] = 'QA';
|
||||
$lang->dimension->moduleList['staff'] = 'Company';
|
||||
|
||||
$lang->dimension->modules = array();
|
||||
$lang->dimension->modules['program'] = $lang->program->common;
|
||||
$lang->dimension->modules['project'] = $lang->projectCommon;
|
||||
$lang->dimension->modules['product'] = $lang->productCommon;
|
||||
$lang->dimension->modules['plan'] = 'Plan';
|
||||
$lang->dimension->modules['execution'] = $lang->executionCommon;
|
||||
$lang->dimension->modules['release'] = $lang->release->common;
|
||||
$lang->dimension->modules['story'] = $lang->SRCommon;
|
||||
$lang->dimension->modules['task'] = $lang->task->common;
|
||||
$lang->dimension->modules['bug'] = $lang->bug->common;
|
||||
$lang->dimension->modules['doc'] = $lang->doc->common;
|
||||
$lang->dimension->modules['cost'] = 'Cost';
|
||||
$lang->dimension->modules['personnel'] = 'Personnel';
|
||||
$lang->dimension->modules['effort'] = 'Effort';
|
||||
$lang->dimension->modules['timelimit'] = 'Time limit';
|
||||
$lang->dimension->modules['progress'] = 'Progress';
|
||||
$lang->dimension->modules['testcase'] = $lang->testcase->common;
|
||||
$lang->dimension->modules['behavior'] = 'Behavior';
|
||||
|
||||
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
|
||||
$lang->dimension->moduleList['project'] = $lang->projectCommon;
|
||||
$lang->dimension->moduleList['test'] = 'QA';
|
||||
$lang->dimension->moduleList['staff'] = 'Company';
|
||||
|
||||
$lang->dimension->modules = array();
|
||||
$lang->dimension->modules['program'] = $lang->program->common;
|
||||
$lang->dimension->modules['project'] = $lang->projectCommon;
|
||||
$lang->dimension->modules['product'] = $lang->productCommon;
|
||||
$lang->dimension->modules['plan'] = 'Plan';
|
||||
$lang->dimension->modules['execution'] = $lang->executionCommon;
|
||||
$lang->dimension->modules['release'] = $lang->release->common;
|
||||
$lang->dimension->modules['story'] = $lang->SRCommon;
|
||||
$lang->dimension->modules['task'] = $lang->task->common;
|
||||
$lang->dimension->modules['bug'] = $lang->bug->common;
|
||||
$lang->dimension->modules['doc'] = $lang->doc->common;
|
||||
$lang->dimension->modules['cost'] = 'Cost';
|
||||
$lang->dimension->modules['personnel'] = 'Personnel';
|
||||
$lang->dimension->modules['effort'] = 'Effort';
|
||||
$lang->dimension->modules['timelimit'] = 'Time limit';
|
||||
$lang->dimension->modules['progress'] = 'Progress';
|
||||
$lang->dimension->modules['testcase'] = $lang->testcase->common;
|
||||
$lang->dimension->modules['behavior'] = 'Behavior';
|
||||
|
||||
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
|
||||
$lang->dimension->moduleList['project'] = $lang->projectCommon;
|
||||
$lang->dimension->moduleList['test'] = 'QA';
|
||||
$lang->dimension->moduleList['staff'] = 'Company';
|
||||
|
||||
$lang->dimension->modules = array();
|
||||
$lang->dimension->modules['program'] = $lang->program->common;
|
||||
$lang->dimension->modules['project'] = $lang->projectCommon;
|
||||
$lang->dimension->modules['product'] = $lang->productCommon;
|
||||
$lang->dimension->modules['plan'] = 'Plan';
|
||||
$lang->dimension->modules['execution'] = $lang->executionCommon;
|
||||
$lang->dimension->modules['release'] = $lang->release->common;
|
||||
$lang->dimension->modules['story'] = $lang->SRCommon;
|
||||
$lang->dimension->modules['task'] = $lang->task->common;
|
||||
$lang->dimension->modules['bug'] = $lang->bug->common;
|
||||
$lang->dimension->modules['doc'] = $lang->doc->common;
|
||||
$lang->dimension->modules['cost'] = 'Cost';
|
||||
$lang->dimension->modules['personnel'] = 'Personnel';
|
||||
$lang->dimension->modules['effort'] = 'Effort';
|
||||
$lang->dimension->modules['timelimit'] = 'Time limit';
|
||||
$lang->dimension->modules['progress'] = 'Progress';
|
||||
$lang->dimension->modules['testcase'] = $lang->testcase->common;
|
||||
$lang->dimension->modules['behavior'] = 'Behavior';
|
||||
|
||||
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
|
||||
$lang->dimension->moduleList['project'] = $lang->projectCommon;
|
||||
$lang->dimension->moduleList['test'] = '测试';
|
||||
$lang->dimension->moduleList['staff'] = '组织';
|
||||
|
||||
$lang->dimension->modules = array();
|
||||
$lang->dimension->modules['program'] = $lang->program->common;
|
||||
$lang->dimension->modules['project'] = $lang->projectCommon;
|
||||
$lang->dimension->modules['product'] = $lang->productCommon;
|
||||
$lang->dimension->modules['plan'] = '计划';
|
||||
$lang->dimension->modules['execution'] = $lang->executionCommon;
|
||||
$lang->dimension->modules['release'] = $lang->release->common;
|
||||
$lang->dimension->modules['story'] = $lang->SRCommon;
|
||||
$lang->dimension->modules['task'] = $lang->task->common;
|
||||
$lang->dimension->modules['bug'] = $lang->bug->common;
|
||||
$lang->dimension->modules['doc'] = $lang->doc->common;
|
||||
$lang->dimension->modules['cost'] = '成本';
|
||||
$lang->dimension->modules['personnel'] = '人员';
|
||||
$lang->dimension->modules['effort'] = '工时';
|
||||
$lang->dimension->modules['timelimit'] = '工期';
|
||||
$lang->dimension->modules['progress'] = '进度';
|
||||
$lang->dimension->modules['testcase'] = $lang->testcase->common;
|
||||
$lang->dimension->modules['behavior'] = '行为';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.drop-title {padding: 0 15px;}
|
||||
.drop-title {padding: 0 15px!important;}
|
||||
.split-row > .side-col,
|
||||
.split-row > .main-col {padding: 0;}
|
||||
.col-spliter {width: 20px; position: relative; z-index: 10; cursor: ew-resize;}
|
||||
|
||||
@@ -85,12 +85,12 @@
|
||||
#editorMenu {max-height: 200px; overflow-y: auto; overflow-x: hidden; margin-left: 4px; max-width: 100%;}
|
||||
[lang^=zh] #editorMenu {max-width: calc(100% - 10px);}
|
||||
#editorMenu > li {color: #838A9D; font-weight: 400; padding: 5px 12px; text-overflow: clip; white-space: nowrap;}
|
||||
.doc-version-menu {padding: 10px 5px;}
|
||||
.doc-version-menu {padding: 10px 0;}
|
||||
#changeBtn > i {font-size: 24px;}
|
||||
|
||||
#docVersionMenu > .drop-body {max-height: 200px; overflow-y: auto;}
|
||||
#docVersionMenu > .drop-body > li.li-item {display: flex; position: relative;}
|
||||
#docVersionMenu > .drop-body > li.li-item > .checkbox-primary {display: none; position: absolute; top: 4px; left: 10px;}
|
||||
#docVersionMenu > .drop-body > li.li-item > .checkbox-primary {display: none; position: absolute; top: 4px; left: 10px; width: 230px;}
|
||||
#docVersionMenu > .drop-body > li > a {flex: 1; padding-left: 20px; height: 30px; display: flex; align-items: center;}
|
||||
#docVersionMenu > .drop-bottom > button {margin-right: 10px; display: none;}
|
||||
|
||||
|
||||
@@ -367,4 +367,3 @@ function submit(object)
|
||||
$('#dataform').submit();
|
||||
setTimeout(function(){$(object).attr('type', 'button').removeAttr('disabled')}, 2000);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul id="docVersionMenu" class='dropdown-menu doc-version-menu' style='width: 250px; overflow-y:auto'>
|
||||
<li class="drop-title flex-between"><div><?php echo $lang->doc->allVersion?></div></li>
|
||||
<li class="drop-title flex-between dropdown-header not-clear-menu"><div><?php echo $lang->doc->allVersion?></div></li>
|
||||
<div class="drop-body menu-active-primary menu-hover-primary">
|
||||
<?php for($itemVersion = $doc->version; $itemVersion > 0; $itemVersion--):?>
|
||||
<li class="li-item <?php if($itemVersion == $version) echo 'active';?>"><div class="checkbox-primary"><input type="checkbox" <?php echo "data-id=".$doc->id." data-version=".$itemVersion;?> ></input><label for=""></label></div><a href='javascript:void(0)' data-url='<?php echo $this->createLink('doc', 'view', "docID=$doc->id&version=$itemVersion"); ?>'>#<?php echo $itemVersion;?></a></li>
|
||||
|
||||
@@ -1401,11 +1401,11 @@ class myModel extends model
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->andWhere($condition)
|
||||
->groupBy('objectType,objectID')
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchPairs();
|
||||
$actions = $this->dao->select('objectType,objectID,actor,action,`date`,extra')->from(TABLE_ACTION)
|
||||
->where('id')->in($actionIdList)
|
||||
->orderBy($orderBy)
|
||||
->fetchAll();
|
||||
$objectTypeList = array();
|
||||
foreach($actions as $action) $objectTypeList[$action->objectType][] = $action->objectID;
|
||||
|
||||
@@ -8223,13 +8223,68 @@ class upgradeModel extends model
|
||||
$this->dao->insert(TABLE_DIMENSION)->data($dimension)->exec();
|
||||
$dimensionID = $this->dao->lastInsertID();
|
||||
|
||||
$this->addDefaultModules4BI('chart', $dimensionID);
|
||||
$this->addDefaultModules4BI('pivot', $dimensionID);
|
||||
$chartModules = $this->addDefaultModules4BI('chart', $dimensionID);
|
||||
$this->addSecondModule4BI($dimensionID, $dimensionName, 'chart', $chartModules);
|
||||
|
||||
$pivotModules = $this->addDefaultModules4BI('pivot', $dimensionID);
|
||||
$this->addSecondModule4BI($dimensionID, $dimensionName, 'pivot', $pivotModules);
|
||||
|
||||
}
|
||||
return !dao::isError();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add second modules for bi, move buildin chart and pivot to second modules.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function addSecondModule4BI($dimensionID, $dimensionName, $module, $modules)
|
||||
{
|
||||
$this->loadModel('dimension');
|
||||
|
||||
$listIndex = $module . 'Upgrade';
|
||||
$secondModules = $this->config->dimension->secondModuleList[$dimensionName][$module];
|
||||
$updateInfos = $this->config->dimension->secondModuleList[$dimensionName][$listIndex];
|
||||
|
||||
foreach($modules as $moduleName => $parentID)
|
||||
{
|
||||
$insertModules = isset($secondModules[$moduleName]) ? explode(',', $secondModules[$moduleName]) : array();
|
||||
if(empty($insertModules)) continue;
|
||||
|
||||
$i = 1;
|
||||
foreach($insertModules as $moduleCode)
|
||||
{
|
||||
$data = new stdclass();
|
||||
$data->root = $dimensionID;
|
||||
$data->name = $this->lang->dimension->modules[$moduleCode];
|
||||
$data->parent = $parentID;
|
||||
$data->grade = 2;
|
||||
$data->order = 10 * $i;
|
||||
$data->type = $module;
|
||||
$i ++;
|
||||
|
||||
$this->dao->insert(TABLE_MODULE)->data($data)->exec();
|
||||
$lastGroupID = $this->dao->lastInsertID();
|
||||
|
||||
$path = ',' . $parentID . ',' . $lastGroupID . ',';
|
||||
$this->dao->update(TABLE_MODULE)->set("`path`")->eq($path)->where('id')->eq($lastGroupID)->exec();
|
||||
|
||||
$updateArr = isset($updateInfos[$moduleName][$moduleCode]) ? $updateInfos[$moduleName][$moduleCode] : array();
|
||||
if(!empty($updateArr))
|
||||
{
|
||||
foreach($updateArr as $type => $idString)
|
||||
{
|
||||
$table = $type == 'chart' ? TABLE_CHART : TABLE_PIVOT;
|
||||
$idList = explode(',', $idString);
|
||||
|
||||
$this->dao->update($table)->set('group')->eq($lastGroupID)->set('dimension')->eq($dimensionID)->where('id')->in($idList)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add update2BI mark to zt_config.
|
||||
*
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 136 KiB |