v1.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace zin;
  3. requireWg('thinkModel');
  4. /**
  5. * 思引师波士顿矩阵模型部件类。
  6. * thinmory bcg model widget class.
  7. */
  8. class thinkBcg extends thinkModel
  9. {
  10. public static function getPageCSS()
  11. {
  12. return <<<'CSS'
  13. .model-bcg .echarts-content canvas:hover {cursor: pointer;}
  14. CSS;
  15. }
  16. public static function getPageJS()
  17. {
  18. return file_get_contents(__DIR__ . DS . 'js' . DS . 'v1.js');
  19. }
  20. protected function buildEcharts()
  21. {
  22. return echarts
  23. (
  24. set::width('1600px'),
  25. set::height('1000px')
  26. );
  27. }
  28. protected function buildBody()
  29. {
  30. global $app, $lang;
  31. $app->loadLang('thinkwizard');
  32. list($mode, $wizard, $previewKey, $blocks) = $this->prop(array('mode', 'wizard', 'previewKey', 'blocks'));
  33. if($mode == 'preview')
  34. {
  35. $config = $wizard->config;
  36. $xAxisName = $config['configureDimension']['xAxisName'] ?? '';
  37. $yAxisName = $config['configureDimension']['yAxisName'] ?? '';
  38. return div
  39. (
  40. setClass('col items-center pb-8'),
  41. div
  42. (
  43. setClass('flex gap-1.5 mt-4 relative text-gray-600'),
  44. div
  45. (
  46. setClass('pt-6 pb-3.5 flex justify-between'),
  47. setStyle(array('writing-mode' => 'vertical-rl')),
  48. span($config['configureDimension']['yAxisOrder'] == 0 ? $lang->thinkwizard->dimension->height : $lang->thinkwizard->dimension->low),
  49. span($lang->thinkwizard->dimension->yAxisNameList[$yAxisName] ?? ''),
  50. span($config['configureDimension']['yAxisOrder'] == 0 ? $lang->thinkwizard->dimension->low : $lang->thinkwizard->dimension->height)
  51. ),
  52. img(set::src("data/thinmory/wizardsetting/bcg/blockGroup$previewKey.svg")),
  53. div
  54. (
  55. setClass('w-full flex justify-between absolute left-0'),
  56. setStyle(array('padding' => '0 22px 0 40px', 'bottom' => '-26px')),
  57. span($config['configureDimension']['xAxisOrder'] == 0 ? $lang->thinkwizard->dimension->low : $lang->thinkwizard->dimension->height),
  58. span($lang->thinkwizard->dimension->xAxisNameList[$xAxisName] ?? ''),
  59. span($config['configureDimension']['xAxisOrder'] == 0 ? $lang->thinkwizard->dimension->height : $lang->thinkwizard->dimension->low)
  60. )
  61. )
  62. );
  63. }
  64. $xAxis = $blocks['runOptions']['configureDimension']['xAxisName'] ?? '';
  65. $yAxis = $blocks['runOptions']['configureDimension']['yAxisName'] ?? '';
  66. return div(setData(array('blocks' => $blocks)), setClass('relative echarts-content text-gray-600'), $this->buildEcharts(), p(setClass('h-full axis-name axis-name-y text-lg absolute top-0 flex justify-center left-0'), setStyle(array('writing-mode' => 'vertical-rl')), $lang->thinkwizard->dimension->yAxisNameList[$yAxis] ?? ''), p(setClass('w-full axis-name text-lg text-center absolute left-0 bottom-0'), $lang->thinkwizard->dimension->xAxisNameList[$xAxis] ?? ''));
  67. }
  68. protected function build()
  69. {
  70. $mode = $this->prop('mode');
  71. return div
  72. (
  73. setClass('model-bcg my-1 flex col flex-wrap justify-between'),
  74. $this->buildBody(),
  75. $mode == 'view' ? on::init()->call('initBcgModel') : null
  76. );
  77. }
  78. }