You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ParameterSelect.stories.tsx 5.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. import ParameterSelect, { type ParameterSelectObject } from '@/components/ParameterSelect';
  2. import { action } from '@storybook/addon-actions';
  3. import { useArgs } from '@storybook/preview-api';
  4. import type { Meta, StoryObj } from '@storybook/react';
  5. import { fn } from '@storybook/test';
  6. import { Button, Col, Form, Row } from 'antd';
  7. import { http, HttpResponse } from 'msw';
  8. import { computeResourceData, datasetListData, modelListData, serviceListData } from './mockData';
  9. // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
  10. const meta = {
  11. title: 'Components/ParameterSelect 参数选择器',
  12. component: ParameterSelect,
  13. parameters: {
  14. // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
  15. // layout: 'centered',
  16. msw: {
  17. handlers: [
  18. http.get('/api/mmp/newdataset/queryDatasets', () => {
  19. return HttpResponse.json(datasetListData);
  20. }),
  21. http.get('/api/mmp/newmodel/queryModels', () => {
  22. return HttpResponse.json(modelListData);
  23. }),
  24. http.get('/api/mmp/service', () => {
  25. return HttpResponse.json(serviceListData);
  26. }),
  27. http.get('/api/mmp/computingResource', () => {
  28. return HttpResponse.json(computeResourceData);
  29. }),
  30. ],
  31. },
  32. },
  33. // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
  34. tags: ['autodocs'],
  35. // More on argTypes: https://storybook.js.org/docs/api/argtypes
  36. // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
  37. args: { onChange: fn() },
  38. } satisfies Meta<typeof ParameterSelect>;
  39. export default meta;
  40. type Story = StoryObj<typeof meta>;
  41. // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
  42. export const Primary: Story = {
  43. args: {
  44. placeholder: '请选择',
  45. dataType: 'dataset',
  46. style: { width: 400 },
  47. size: 'large',
  48. },
  49. render: function Render(args) {
  50. const [{ value }, updateArgs] = useArgs();
  51. function handleChange(value?: string | ParameterSelectObject) {
  52. updateArgs({ value: value });
  53. args.onChange?.(value);
  54. }
  55. return <ParameterSelect {...args} value={value} onChange={handleChange}></ParameterSelect>;
  56. },
  57. };
  58. /** 值可以是一个对象,典型的是流水线节点对象 **PipelineNodeModelParameter** */
  59. export const Object: Story = {
  60. args: {
  61. placeholder: '请选择',
  62. dataType: 'dataset',
  63. style: { width: 400 },
  64. size: 'large',
  65. value: {
  66. value: undefined,
  67. },
  68. },
  69. render: function Render(args) {
  70. const [{ value }, updateArgs] = useArgs();
  71. function handleChange(value?: string | ParameterSelectObject) {
  72. updateArgs({ value: value });
  73. args.onChange?.(value);
  74. }
  75. return <ParameterSelect {...args} value={value} onChange={handleChange}></ParameterSelect>;
  76. },
  77. };
  78. export const InForm: Story = {
  79. args: {
  80. dataType: 'dataset',
  81. },
  82. render: ({ onChange }) => {
  83. return (
  84. <Form
  85. name="parameter-select-form"
  86. labelCol={{ flex: '80px' }}
  87. labelAlign="left"
  88. size="large"
  89. onFinish={action('onFinish')}
  90. autoComplete="off"
  91. initialValues={{
  92. dataset: {
  93. type: 'select',
  94. item_type: 'dataset',
  95. placeholder: '请选择数据集',
  96. label: '数据集',
  97. },
  98. model: {
  99. type: 'select',
  100. item_type: 'model',
  101. placeholder: '请选择模型',
  102. label: '模型',
  103. },
  104. service: {
  105. type: 'select',
  106. item_type: 'service',
  107. placeholder: '请选择服务',
  108. label: '服务',
  109. },
  110. resource: {
  111. type: 'select',
  112. item_type: 'resource',
  113. placeholder: '请选择计算资源',
  114. label: '计算资源',
  115. },
  116. test: '1234',
  117. }}
  118. >
  119. <Row gutter={8}>
  120. <Col span={10}>
  121. <Form.Item label="数据集" name="dataset">
  122. <ParameterSelect dataType="dataset" placeholder="请选择数据集" onChange={onChange} />
  123. </Form.Item>
  124. </Col>
  125. </Row>
  126. <Row gutter={8}>
  127. <Col span={10}>
  128. <Form.Item label="模型" name="model">
  129. <ParameterSelect dataType="model" placeholder="请选择模型" onChange={onChange} />
  130. </Form.Item>
  131. </Col>
  132. </Row>
  133. <Row gutter={8}>
  134. <Col span={10}>
  135. <Form.Item label="服务" name="service">
  136. <ParameterSelect dataType="service" placeholder="请选择服务" onChange={onChange} />
  137. </Form.Item>
  138. </Col>
  139. </Row>
  140. <Row gutter={8}>
  141. <Col span={10}>
  142. <Form.Item label="计算资源" name="resource">
  143. <ParameterSelect
  144. dataType="resource"
  145. placeholder="请选择计算资源"
  146. onChange={onChange}
  147. />
  148. </Form.Item>
  149. </Col>
  150. </Row>
  151. <Row gutter={8}>
  152. <Button htmlType="submit" type="primary">
  153. 提交
  154. </Button>
  155. </Row>
  156. </Form>
  157. );
  158. },
  159. };