Workbench.less 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. @import "~assets/less/variable";
  2. .workbench {
  3. background-color: @body-bg;
  4. font-size: 12px;
  5. position: absolute;
  6. top: 0;
  7. bottom: 0;
  8. left: 0;
  9. right: 0;
  10. display: flex;
  11. flex-direction: column;
  12. .header {
  13. flex-shrink: 0;
  14. }
  15. .body {
  16. position: relative;
  17. min-height: 0;
  18. flex: 1;
  19. display: flex;
  20. flex-direction: row;
  21. .operatingPanel {
  22. flex: 1;
  23. display: flex;
  24. flex-direction: row;
  25. min-width: 0;
  26. .model {
  27. flex: 9;
  28. background-color: @light-bg;
  29. display: flex;
  30. flex-direction: column;
  31. min-width: 0;
  32. }
  33. .config {
  34. flex: 11;
  35. width: 241px;
  36. background-color: @white;
  37. border-left: 1px solid @border-color-base;
  38. box-shadow: @left-side-box-shadow;
  39. display: flex;
  40. flex-direction: column;
  41. }
  42. }
  43. .viewPanel {
  44. flex: 1;
  45. min-width: 0;
  46. padding: 16px;
  47. display: flex;
  48. flex-direction: column;
  49. .widgetBlock {
  50. flex: 1;
  51. background-color: @white;
  52. padding: 16px;
  53. box-shadow: @block-box-shadow;
  54. display: flex;
  55. flex-direction: column;
  56. min-height: 0;
  57. }
  58. }
  59. }
  60. }
  61. .viewSelect {
  62. padding: 8px;
  63. line-height: 24px;
  64. :global {
  65. .ant-select {
  66. width: 100%;
  67. }
  68. .ant-select-selection {
  69. background: none !important;
  70. border: none !important;
  71. box-shadow: none !important;
  72. }
  73. }
  74. }
  75. .columnContainer {
  76. min-height: 0;
  77. border-top: 1px solid @border-color-base;
  78. list-style-type: none;
  79. flex: 1;
  80. display: flex;
  81. flex-direction: column;
  82. .title {
  83. flex-shrink: 0;
  84. display: flex;
  85. align-items: center;
  86. padding: 0 8px;
  87. margin-top: 4px;
  88. h4 {
  89. flex: 1;
  90. color: @light-text-color;
  91. line-height: 30px;
  92. }
  93. }
  94. .columnList {
  95. flex: 1;
  96. overflow-y: auto;
  97. li {
  98. padding: 0 8px;
  99. line-height: 24px;
  100. display: flex;
  101. flex-direction: row;
  102. cursor: pointer;
  103. &:hover {
  104. i {
  105. color: @text-color;
  106. }
  107. .more{
  108. display: block;
  109. }
  110. }
  111. i {
  112. width: 36px;
  113. font-size: 0.8em;
  114. text-align: center;
  115. flex-shrink: 0;
  116. }
  117. .more{
  118. display: none;
  119. }
  120. .iconDate {
  121. font-size: 1.75em;
  122. }
  123. p {
  124. flex: 1;
  125. .ellipsis;
  126. }
  127. }
  128. }
  129. }
  130. .categories {
  131. li {
  132. &:hover {
  133. background-color: lighten(@primary-color, 30%);
  134. }
  135. i {
  136. color: @primary-color;
  137. }
  138. }
  139. .computed {
  140. &:hover {
  141. background-color: lighten(orange, 30%);
  142. }
  143. i {
  144. color: orange;
  145. }
  146. }
  147. }
  148. .values {
  149. li {
  150. &:hover {
  151. background-color: lighten(@light-green, 30%);
  152. }
  153. i {
  154. color: @light-green;
  155. }
  156. }
  157. .computed {
  158. &:hover {
  159. background-color: lighten(orange, 30%);
  160. }
  161. i {
  162. color: orange;
  163. }
  164. }
  165. }
  166. .mode {
  167. flex-shrink: 0;
  168. height: 36px;
  169. padding-top: 8px;
  170. display: flex;
  171. flex-direction: row;
  172. justify-content: center;
  173. align-items: center;
  174. .radio {
  175. font-size: 12px;
  176. .selected {
  177. color: @disabled-text-color;
  178. }
  179. }
  180. }
  181. .charts {
  182. padding: 0 5px 4px 4px;
  183. border-bottom: 1px solid @border-color-base;
  184. flex-shrink: 0;
  185. display: flex;
  186. flex-flow: row wrap;
  187. i {
  188. width: 33px;
  189. height: 33px;
  190. border: 1px solid transparent;
  191. border-radius: 2px;
  192. font-size: 1.8em;
  193. color: @disabled-icon-color;
  194. text-align: center;
  195. line-height: 33px;
  196. cursor: pointer;
  197. &:hover {
  198. background-color: @body-bg;
  199. }
  200. &.enabled {
  201. color: @primary-color;
  202. }
  203. &.multipleSelect {
  204. border-bottom-color: @primary-color;
  205. border-bottom-style: dashed;
  206. }
  207. &.selected {
  208. border-bottom-color: @primary-color;
  209. border-bottom-style: solid;
  210. &:hover {
  211. background-color: transparent;
  212. }
  213. }
  214. }
  215. }
  216. .manualQuery {
  217. flex-shrink: 0;
  218. height: 48px;
  219. background-color: @light-bg;
  220. border-bottom: 1px solid @border-color-base;
  221. font-size: 1.08em;
  222. user-select: none;
  223. cursor: pointer;
  224. display: flex;
  225. justify-content: center;
  226. align-items: center;
  227. &:hover {
  228. background-color: lighten(@primary-color, 40%);
  229. }
  230. &:active {
  231. background-color: lighten(@primary-color, 30%);
  232. }
  233. i {
  234. font-size: 1.5em;
  235. margin-right: 4px;
  236. }
  237. }
  238. .params {
  239. min-height: 0;
  240. flex: 1;
  241. display: flex;
  242. flex-direction: column;
  243. .paramsTab {
  244. border-bottom: 1px solid @border-color-base;
  245. flex-shrink: 0;
  246. display: flex;
  247. flex-direction: row;
  248. li {
  249. padding: 0 16px;
  250. margin-top: 2px;
  251. font-size: 1.08em;
  252. line-height: 24px;
  253. color: @light-text-color;
  254. position: relative;
  255. bottom: -1px;
  256. cursor: pointer;
  257. &.selected {
  258. color: @primary-color;
  259. border-bottom: 2px solid @primary-color;
  260. }
  261. }
  262. }
  263. .paramsPane {
  264. flex: 1;
  265. position: relative;
  266. overflow-y: auto;
  267. &.dropPane {
  268. padding: 4px 8px;
  269. }
  270. .paneBlock {
  271. padding: 8px;
  272. border-bottom: 1px solid @border-color-base;
  273. &:first-child {
  274. padding-top: 4px;
  275. }
  276. h4 {
  277. margin-top: 4px;
  278. color: @light-text-color;
  279. line-height: 18px;
  280. font-weight: bold;
  281. display: flex;
  282. flex-direction: row;
  283. align-items: center;
  284. span {
  285. flex: 1;
  286. }
  287. i:hover {
  288. cursor: pointer;
  289. }
  290. i + i {
  291. margin-left: 8px;
  292. }
  293. }
  294. .blockBody {
  295. }
  296. .blockRow {
  297. height: 32px;
  298. }
  299. .blockElm {
  300. width: 100%;
  301. }
  302. .addVariable {
  303. text-align: right;
  304. cursor: pointer;
  305. &:hover {
  306. color: @primary-color;
  307. }
  308. }
  309. }
  310. .toggleRowsAndCols {
  311. right: 10px;
  312. }
  313. .switchRowsAndCols {
  314. right: 90px;
  315. }
  316. .toggleRowsAndCols,
  317. .switchRowsAndCols {
  318. position: absolute;
  319. top: 8px;
  320. font-weight: bold;
  321. color: @disabled-text-color;
  322. z-index: 1;
  323. cursor: pointer;
  324. &:hover {
  325. color: @light-text-color;
  326. }
  327. i {
  328. font-size: 1.125em;
  329. }
  330. }
  331. :global(.ant-select),
  332. :global(.ant-radio-group),
  333. :global(.ant-checkbox-wrapper),
  334. :global(.ant-input-number) {
  335. font-size: 12px;
  336. }
  337. :global(.ant-select-selection--single),
  338. :global(.ant-input-number) {
  339. height: 28px;
  340. }
  341. :global(.ant-select-selection--multiple) {
  342. min-height: 28px;
  343. padding-bottom: 2px;
  344. }
  345. :global(.ant-select-selection--multiple > ul > li),
  346. :global(.ant-select-selection--multiple .ant-select-selection__rendered > ul > li) {
  347. margin-top: 2px;
  348. height: 22px;
  349. line-height: 20px;
  350. }
  351. :global(.ant-input-number-input) {
  352. height: 26px;
  353. }
  354. :global(.ant-select-selection__rendered){
  355. line-height: 26px;
  356. }
  357. }
  358. }
  359. .dropbox {
  360. .title {
  361. margin-top: 4px;
  362. color: @light-text-color;
  363. line-height: 18px;
  364. font-weight: bold;
  365. position: relative;
  366. .setting {
  367. position: absolute;
  368. right: 2px;
  369. top: 0;
  370. color: @disabled-text-color;
  371. cursor: pointer;
  372. &:hover {
  373. color: @light-text-color;
  374. }
  375. }
  376. }
  377. .dropContainer {
  378. min-height: 54px;
  379. padding: 4px;
  380. border: 1px dashed @border-color-base;
  381. border-radius: 2px;
  382. line-height: 22px;
  383. position: relative;
  384. transition: all 100ms ease;
  385. display: flex;
  386. flex-flow: row wrap;
  387. align-items: center;
  388. .dropboxContent {
  389. position: absolute;
  390. top: 0;
  391. left: 0;
  392. bottom: 0;
  393. right: 0;
  394. color: @disabled-text-color;
  395. display: flex;
  396. justify-content: center;
  397. align-items: center;
  398. cursor: pointer;
  399. i {
  400. margin-right: 4px;
  401. }
  402. }
  403. &.dragOver {
  404. border-color: transparent;
  405. }
  406. .mask {
  407. position: absolute;
  408. top: 0;
  409. left: 0;
  410. bottom: 0;
  411. right: 0;
  412. display: none;
  413. &.onTop {
  414. border-radius: 2px;
  415. display: block;
  416. &.category {
  417. background-color: fade(@primary-color, 20);
  418. }
  419. &.value {
  420. background-color: fade(@light-green, 20);
  421. }
  422. }
  423. &.enter {
  424. border: 1px dashed;
  425. &.category {
  426. border-color: @primary-color;
  427. }
  428. &.value {
  429. border-color: @light-green;
  430. }
  431. }
  432. }
  433. }
  434. }
  435. .dropItem {
  436. width: 100%;
  437. background-color: transparent;
  438. padding: 2px;
  439. flex-shrink: 0;
  440. .dropItemContent {
  441. padding: 0 24px;
  442. border-radius: 3px;
  443. color: @white;
  444. text-align: center;
  445. line-height: 22px;
  446. position: relative;
  447. cursor: pointer;
  448. .ellipsis;
  449. &.category {
  450. background-color: lighten(@primary-color, 5%);
  451. border: 1px solid lighten(@primary-color, 5%);
  452. }
  453. &.value {
  454. background-color: lighten(@light-green, 5%);
  455. border: 1px solid lighten(@light-green, 5%);
  456. }
  457. &.add {
  458. background-color: @white;
  459. border: 1px dashed @border-color-base;
  460. color: @light-text-color;
  461. }
  462. &.dragging {
  463. position: relative;
  464. z-index: 1;
  465. }
  466. &.dragged {
  467. transform: translateX(-9999px);
  468. }
  469. .sort {
  470. font-size: 1.08em;
  471. }
  472. .remove {
  473. position: absolute;
  474. top: 5px;
  475. right: 4px;
  476. color: @white;
  477. font-size: 1.125em;
  478. display: none;
  479. }
  480. .chart {
  481. width: 23px;
  482. height: 23px;
  483. line-height: 23px;
  484. position: absolute;
  485. top: 0;
  486. left: 2px;
  487. color: @white;
  488. font-size: 1.5em;
  489. }
  490. &:hover {
  491. .remove {
  492. display: block;
  493. }
  494. }
  495. }
  496. }
  497. .chartSelectorList {
  498. background-color: @white;
  499. border: 1px solid @border-color-base;
  500. border-radius: 2px;
  501. .item {
  502. width: 28px;
  503. height: 28px;
  504. border-bottom: 1px solid @border-color-base;
  505. display: flex;
  506. justify-content: center;
  507. align-items: center;
  508. cursor: pointer;
  509. &:hover {
  510. background-color: @light-bg;
  511. }
  512. &:last-child {
  513. border-bottom: 0;
  514. }
  515. }
  516. .icon {
  517. color: @primary-color;
  518. font-size: 1.5em;
  519. }
  520. }
  521. .valueDropDown {
  522. li:hover,
  523. li > div:hover {
  524. background-color: color(~`colorPalette("@{light-green}", 1)`);
  525. }
  526. }
  527. .colorPanel {
  528. height: 310px;
  529. margin: -8px -16px;
  530. display: flex;
  531. flex-direction: row;
  532. .tabs {
  533. max-width: 96px;
  534. padding: 2px 0;
  535. flex-shrink: 0;
  536. overflow-y: auto;
  537. li {
  538. padding: 2px 8px;
  539. color: @light-text-color;
  540. font-weight: bold;
  541. line-height: 2em;
  542. text-align: right;
  543. cursor: pointer;
  544. .ellipsis;
  545. &:hover {
  546. background-color: color(~`colorPalette("@{primary-color}", 1)`);
  547. }
  548. &.selected {
  549. background-color: @light-bg;
  550. border-right: 2px solid @primary-color;
  551. color: @primary-color;
  552. }
  553. }
  554. }
  555. .picker {
  556. flex: 1;
  557. border-left: 1px solid @border-color-base;
  558. }
  559. :global(.sketch-picker) {
  560. box-shadow: none !important;
  561. }
  562. }
  563. .colorSettingForm {
  564. display: flex;
  565. flex-direction: column;
  566. .header {
  567. flex-shrink: 0;
  568. padding: 8px 0;
  569. border-bottom: 1px solid @border-color-base;
  570. h4 {
  571. margin-bottom: 8px;
  572. }
  573. }
  574. .body {
  575. flex: 1;
  576. max-height: 290px;
  577. display: flex;
  578. flex-direction: row;
  579. .list {
  580. width: 128px;
  581. padding: 4px 0;
  582. border-right: 1px solid @border-color-base;
  583. flex-shrink: 0;
  584. overflow-y: auto;
  585. li {
  586. padding: 4px 8px 4px 32px;
  587. color: @light-text-color;
  588. font-weight: bold;
  589. line-height: 2em;
  590. position: relative;
  591. cursor: pointer;
  592. .ellipsis;
  593. .icon {
  594. width: 20px;
  595. height: 20px;
  596. border-radius: 50%;
  597. position: absolute;
  598. top: 6px;
  599. left: 4px;
  600. }
  601. &:hover {
  602. background-color: color(~`colorPalette("@{primary-color}", 1)`);
  603. }
  604. &.selected {
  605. background-color: @light-bg;
  606. border-right: 2px solid @primary-color;
  607. color: @primary-color;
  608. }
  609. }
  610. }
  611. .picker {
  612. flex: 1;
  613. display: flex;
  614. justify-content: center;
  615. align-items: center;
  616. }
  617. :global(.sketch-picker) {
  618. box-shadow: none !important;
  619. }
  620. }
  621. .footer {
  622. margin-top: 16px;
  623. text-align: right;
  624. button {
  625. margin-left: 8px;
  626. }
  627. }
  628. }
  629. .actOnSettingForm {
  630. .footer {
  631. margin-top: 8px;
  632. text-align: right;
  633. button {
  634. margin-left: 8px;
  635. }
  636. }
  637. }
  638. .fieldSettingForm {
  639. .footer {
  640. margin-top: 16px;
  641. text-align: right;
  642. button {
  643. margin-left: 8px;
  644. }
  645. }
  646. }
  647. .filterSettingForm {
  648. .header {
  649. height: 40px;
  650. display: flex;
  651. justify-content: center;
  652. align-items: center;
  653. }
  654. .valueBlock {
  655. padding: 16px 0;
  656. display: flex;
  657. justify-content: center;
  658. align-items: center;
  659. }
  660. .footer {
  661. margin-top: 8px;
  662. text-align: right;
  663. button {
  664. margin-left: 8px;
  665. }
  666. }
  667. .conditionalBlock {
  668. padding: 16px 0;
  669. }
  670. .dateBlock {
  671. padding-bottom: 16px;
  672. display: flex;
  673. flex-direction: column;
  674. justify-content: center;
  675. align-items: center;
  676. }
  677. }
  678. .conditionalFilterPanel {
  679. height: 240px;
  680. }
  681. .conditionalFilterForm {
  682. width: 100%;
  683. height: 100%;
  684. overflow: auto;
  685. .empty {
  686. width: 100%;
  687. height: 100%;
  688. display: flex;
  689. justify-content: center;
  690. align-items: center;
  691. cursor: pointer;
  692. }
  693. .filterBlock {
  694. flex-shrink: 0;
  695. display: flex;
  696. flex-direction: row;
  697. align-items: center;
  698. }
  699. .filterRel {
  700. width: 88px;
  701. margin: 0 5px;
  702. flex-shrink: 0;
  703. position: relative;
  704. &:after{
  705. width: 10px;
  706. height: 0;
  707. border-top: 1px solid @primary-color;
  708. position: absolute;
  709. top: 50%;
  710. right: -10px;
  711. content: '';
  712. }
  713. }
  714. .filterList {
  715. padding-left: 5px;
  716. margin-left: 5px;
  717. border-left: 1px solid @primary-color;
  718. display: flex;
  719. flex-direction: column;
  720. }
  721. .filterItem {
  722. padding: 4px 0;
  723. display: flex;
  724. flex-direction: row;
  725. align-items: center;
  726. position: relative;
  727. & > *:not(.filterBlock) {
  728. margin: 0 4px;
  729. }
  730. &:before {
  731. width: 10px;
  732. height: 0;
  733. border-top: 1px solid @primary-color;
  734. position: absolute;
  735. top: 50%;
  736. left: -5px;
  737. content: '';
  738. }
  739. &.root:before {
  740. width: 0;
  741. display: none;
  742. }
  743. &.noPadding {
  744. padding: 0;
  745. }
  746. &:first-child,
  747. &:last-child {
  748. &:after {
  749. width: 3px;
  750. background-color: @white;
  751. position: absolute;
  752. left: -7px;
  753. content: '';
  754. }
  755. }
  756. &:first-child {
  757. &:after {
  758. height: 50%;
  759. top: 0;
  760. }
  761. }
  762. &:last-child {
  763. &:after {
  764. height: 50%;
  765. bottom: -1px;
  766. }
  767. }
  768. }
  769. .filterFormItem {
  770. margin-bottom: 0;
  771. .inputNumber {
  772. width: 100%;
  773. }
  774. }
  775. .filterFormKey {
  776. padding-left: 8px;
  777. font-weight: bold;
  778. }
  779. .filterFormOperator {
  780. min-width: 60px;
  781. }
  782. .filterFormInput {
  783. width: 100px;
  784. }
  785. }
  786. .dateFilterRadios {
  787. .radio {
  788. line-height: 2.5em;
  789. }
  790. }
  791. .sizePanel {
  792. min-width: 120px;
  793. max-width: 256px;
  794. }
  795. .errorMessage {
  796. max-width: 640px;
  797. max-height: 480px;
  798. overflow-y: auto;
  799. }