#

budget

Chart

undefined

Chart

vain
74.5%
Realigned stable framewor
biodegradable
87.4%
Digitized 24/7 conglomera
damp
12.7%
Optional zero tolerance m
cheap
48.4%
Digitized stable adapter
pure
61.8%
Grass-roots modular hub
索引
title
level badge actions
1 save labourer presume 2 success
2 geez which lest 1 error
3 wherever yowza hence 0 success
4 toward likewise wildly 3 error
5 when wonderful after 4 info
6 quickly yuck and 0 error
7 who as prohibition 4 error
8 aching steak tuba 1 info
9 impanel sick mortar 2 warning
10 in popularize within 4 info
// src/app/piying/page/component/function/dashboard/example/budget/content.ts
import * as v from 'valibot';
import { actions, NFCSchema, setComponent } from '@piying/view-angular-core';
import { computed } from '@angular/core';
import {
  TableResourceService,
  SortService,
  CheckboxService,
} from '@piying-lib/angular-daisyui/extension';

import { safeDefine } from '@@piying-define';
import { range } from 'es-toolkit';
import { faker } from '@faker-js/faker';

export const Budget = v.pipe(
  v.pipe(
    v.tuple([
      v.pipe(
        v.tuple([
          safeDefine.nfcComponent('card2', (actions) => {
            return [
              actions.inputs.patch({
                title: safeDefine.nfcComponent('common-data', (actions) => {
                  return [actions.inputs.patch({ content: 'Chart' })];
                }),
                body: safeDefine.nfcComponent('common-data', (actions) => {
                  return [
                    actions.inputs.patch({
                      content: {
                        image: { src: 'example/dashboard/chart3.svg', class: 'col-span-2' },
                      },
                    }),
                  ];
                }),
              }),
              actions.class.component('bg-base-100 shadow-sm col-span-3'),
            ];
          }),
          safeDefine.nfcComponent('card2', (actions) => {
            return [
              actions.inputs.patch({
                title: safeDefine.nfcComponent('common-data', (actions) => {
                  return [actions.inputs.patch({ content: 'Chart' })];
                }),
                body: v.pipe(
                  v.tuple(
                    range(5).map(() =>
                      safeDefine.nfcComponent('stat', (actions) => {
                        return [
                          actions.inputs.patch({
                            title: safeDefine.nfcComponent('common-data', (actions) => {
                              return [
                                actions.inputs.patch({
                                  content: faker.word.adjective(),
                                }),
                              ];
                            }),
                            titleClass: 'text-xl font-bold',
                            value: safeDefine.nfcComponent('common-data', (actions) => {
                              return [
                                actions.inputs.patch({
                                  content:
                                    faker.number.float({
                                      min: 0,
                                      max: 100,
                                      fractionDigits: 1,
                                    }) + '%',
                                }),
                              ];
                            }),
                            valueClass: 'text-4xl font-bold text-primary',
                            desc: safeDefine.nfcComponent('common-data', (actions) => {
                              return [
                                actions.inputs.patch({
                                  content: faker.company.catchPhrase().slice(0, 25),
                                }),
                              ];
                            }),
                            descClass: 'text-success',
                            figure: safeDefine.nfcComponent('common-data', (actions) => {
                              return [
                                actions.inputs.patch({
                                  content: {
                                    icon: {
                                      fontIcon: faker.helpers.arrayElement([
                                        'stars',
                                        'heart_broken',
                                        'shield',
                                        'check',
                                      ]),
                                    },
                                  },
                                }),
                              ];
                            }),
                            figureClass: 'text-warning',
                          }),
                        ];
                      }),
                    ),
                  ),
                  actions.wrappers.patch([
                    { type: 'div', attributes: { class: 'stats stats-vertical' } },
                  ]),
                ),
              }),
              actions.class.component('bg-base-100 shadow-sm'),
            ];
          }),
        ]),
        actions.wrappers.patch([{ type: 'div', attributes: { class: 'grid grid-cols-4 gap-8' } }]),
      ),
      v.pipe(
        v.tuple([
          v.pipe(
            NFCSchema,
            setComponent('table'),
            actions.inputs.patchAsync({
              define: (field) => {
                return {
                  row: {
                    head: [
                      {
                        columns: ['checkbox', 'index', 'title', 'level', 'badge', 'actions'],
                        define: v.pipe(
                          v.tuple([]),
                          setComponent('tr'),
                          actions.class.top('bg-base-200'),
                        ),
                      },
                    ],
                    body: [
                      {
                        define: v.pipe(v.tuple([]), setComponent('tr')),
                        columns: ['checkbox', 'index', 'title', 'level', 'badge', 'actions'],
                      },
                    ],
                  },
                  columns: {
                    checkbox: {
                      head: ' ',
                      body: v.pipe(
                        v.boolean(),
                        setComponent('checkbox'),
                        actions.wrappers.set(['td', 'table-checkbox-body']),
                      ),
                    },
                    index: {
                      head: '索引',
                      body: (node: any, index: number) => {
                        return `${index + 1}`;
                      },
                    },
                    title: {
                      head: v.pipe(
                        NFCSchema,
                        setComponent('common-data'),
                        actions.inputs.patch({ content: 'title' }),
                        actions.wrappers.set(['td', 'sort-header']),
                        actions.props.patch({
                          key: 'title',
                        }),
                      ),

                      // '标题',
                      body: (data: any) => {
                        return data.title;
                      },
                    },
                    level: {
                      head: 'level',
                      body: (data: any) => {
                        return data.level;
                      },
                    },
                    badge: {
                      head: 'badge',
                      body: v.pipe(
                        NFCSchema,
                        setComponent('badge'),
                        actions.wrappers.set(['td']),
                        actions.inputs.patchAsync({
                          content: ({ context }) => {
                            return computed(() => context.item$().badge);
                          },
                        }),
                      ),
                    },
                    actions: {
                      head: 'actions',
                      body: v.pipe(
                        v.object({
                          edit: v.pipe(
                            NFCSchema,
                            setComponent('button'),
                            actions.inputs.patch({
                              content: { icon: { fontIcon: 'edit' } },
                              shape: 'circle',
                              size: 'sm',
                            }),
                            actions.inputs.patchAsync({
                              clicked: (field) => {
                                return () => {
                                  console.log(field.context['item$']());
                                };
                              },
                            }),
                          ),
                          delete: v.pipe(
                            NFCSchema,
                            setComponent('button'),
                            actions.inputs.patch({
                              content: { icon: { fontIcon: 'delete' } },
                              shape: 'circle',
                              size: 'sm',
                            }),
                            actions.class.top('text-error'),
                            actions.inputs.patchAsync({
                              clicked: (field) => {
                                return () => {
                                  console.log(field.context['item$']());
                                };
                              },
                            }),
                          ),
                        }),
                        actions.class.top('flex gap-2'),
                        actions.wrappers.set(['td']),
                      ),
                    },
                  },
                };
              },
              data: (field) => {
                return field.injector.get(TableResourceService).list$$;
              },
            }),

            actions.class.bottom('mt-4 border rounded-box border-base-content/5 shadow'),
            actions.providers.patch([SortService, CheckboxService, TableResourceService]),
            actions.hooks.merge({
              allFieldsResolved: (field) => {
                const sort = field.injector.get(SortService);
                sort.sortList.set(['title']);
                sort.setInitValue({
                  title: -1,
                });
                sort.value$$.subscribe((value) => {
                  field.injector.get(TableResourceService).setParams('sort', value);
                });
                field.injector.get(CheckboxService).init();
                field.injector.get(TableResourceService).setRequest((input) => {
                  return [
                    10,
                    range(10).map(() => {
                      return {
                        title: faker.word.words(3),
                        badge: faker.helpers.arrayElement(['success', 'warning', 'error', 'info']),
                        level: faker.number.int({ min: 0, max: 4 }),
                      };
                    }),
                  ];
                });
              },
            }),
          ),
        ]),
      ),
    ]),
    actions.wrappers.patch([{ type: 'div', attributes: { class: 'grid  gap-4' } }]),
  ),
);

export default Budget;
content_copy
#

task

Sporer - Aufder

fixed
30.8%
Virtual reciprocal capabi

Armstrong LLC

optimal
89.6%
User-friendly actuating h

Marquardt - Rog

intent
39.4%
Multi-tiered zero adminis

Greenholt Inc

lawful
20.5%
Integrated real-time webs

Summary

undefined
lawful
44.4%
Distributed neutral produ
steel
70.1%
Sharable asymmetric local
tidy
28.4%
Polarised neutral definit
passionate
85.3%
Fully-configurable asynch
upbeat
91.6%
Intuitive client-server p

Task

undefined

Schedule

  • 01
    Dio Lupa
    Remaining Reason
  • 02
    Ellie Beilish
    Bears of a fever
  • 03
    Sabrino Gardener
    Cappuccino
  • 03
    Sabrino Gardener
    Cappuccino
  • 03
    Sabrino Gardener
    Cappuccino
// src/app/piying/page/component/function/dashboard/example/task/content.ts
import * as v from 'valibot';
import { actions } from '@piying/view-angular-core';

import { safeDefine } from '@@piying-define';
import { range } from 'es-toolkit';
import { faker } from '@faker-js/faker';
import { ListDemoNFCC } from '@@py/component/list-demo/component';

export const Task = v.pipe(
  v.pipe(
    v.tuple([
      v.pipe(
        v.tuple(
          range(4).map(() =>
            safeDefine.nfcComponent('card2', (actions) => {
              return [
                actions.inputs.patch({
                  title: safeDefine.nfcComponent('common-data', (actions) => {
                    return [
                      actions.inputs.patch({
                        content: faker.company.name().slice(0, 15),
                      }),
                    ];
                  }),
                  titleActions: safeDefine.nfcComponent('picker-ref', (actions) => {
                    return [
                      actions.inputs.patch({
                        trigger: safeDefine.nfcComponent('button', (actions) => {
                          return [
                            actions.inputs.patch({
                              content: { icon: { fontIcon: 'menu' } },
                              style: 'ghost',
                            }),
                          ];
                        }),
                        content: safeDefine.nfcComponent('menu-tree', (actions) => {
                          return [
                            actions.inputs.patch({
                              list: [{ title: 'edit' }, { title: 'delete' }],
                            }),
                            actions.attributes.patch({
                              class: 'bg-base-200 rounded-xl shadow-2xs',
                            }),
                          ];
                        }),
                      }),
                    ];
                  }),
                  body: safeDefine.nfcComponent('stat', (actions) => {
                    return [
                      actions.inputs.patch({
                        title: safeDefine.nfcComponent('common-data', (actions) => {
                          return [
                            actions.inputs.patch({
                              content: faker.word.adjective(),
                            }),
                          ];
                        }),
                        titleClass: 'text-xl font-bold',
                        value: safeDefine.nfcComponent('common-data', (actions) => {
                          return [
                            actions.inputs.patch({
                              content:
                                faker.number.float({ min: 0, max: 100, fractionDigits: 1 }) + '%',
                            }),
                          ];
                        }),
                        valueClass: 'text-4xl font-bold text-primary',
                        desc: safeDefine.nfcComponent('common-data', (actions) => {
                          return [
                            actions.inputs.patch({
                              content: faker.company.catchPhrase().slice(0, 25),
                            }),
                          ];
                        }),
                        descClass: 'text-success',
                        figure: safeDefine.nfcComponent('common-data', (actions) => {
                          return [
                            actions.inputs.patch({
                              content: {
                                icon: {
                                  fontIcon: faker.helpers.arrayElement([
                                    'stars',
                                    'heart_broken',
                                    'shield',
                                    'check',
                                  ]),
                                },
                              },
                            }),
                          ];
                        }),
                        figureClass: 'text-warning',
                      }),
                    ];
                  }),
                }),
                actions.class.component('bg-base-100 shadow-sm'),
              ];
            }),
          ),
        ),
        actions.wrappers.patch([
          { type: 'div', attributes: { class: 'grid grid-cols-4 gap-4 max-xl:grid-cols-2' } },
        ]),
      ),
      v.pipe(
        v.tuple([
          safeDefine.nfcComponent('card2', (actions) => {
            return [
              actions.inputs.patch({
                title: safeDefine.nfcComponent('common-data', (actions) => {
                  return [actions.inputs.patch({ content: 'Summary' })];
                }),
                body: v.pipe(
                  v.tuple([
                    safeDefine.nfcComponent('common-data', (actions) => {
                      return [
                        actions.inputs.patch({
                          content: { image: { src: 'example/dashboard/chart1.svg' } },
                        }),
                      ];
                    }),
                    v.pipe(
                      v.tuple([
                        v.pipe(
                          v.tuple(
                            range(2).map(() =>
                              safeDefine.nfcComponent('stat', (actions) => {
                                return [
                                  actions.inputs.patch({
                                    title: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content: faker.word.adjective(),
                                        }),
                                      ];
                                    }),
                                    titleClass: 'text-xl font-bold',
                                    value: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content:
                                            faker.number.float({
                                              min: 0,
                                              max: 100,
                                              fractionDigits: 1,
                                            }) + '%',
                                        }),
                                      ];
                                    }),
                                    valueClass: 'text-4xl font-bold text-primary',
                                    desc: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content: faker.company.catchPhrase().slice(0, 25),
                                        }),
                                      ];
                                    }),
                                    descClass: 'text-success',
                                    figure: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content: {
                                            icon: {
                                              fontIcon: faker.helpers.arrayElement([
                                                'stars',
                                                'heart_broken',
                                                'shield',
                                                'check',
                                              ]),
                                            },
                                          },
                                        }),
                                      ];
                                    }),
                                    figureClass: 'text-warning',
                                  }),
                                ];
                              }),
                            ),
                          ),
                          actions.wrappers.patch([
                            { type: 'div', attributes: { class: 'stats shadow' } },
                          ]),
                        ),
                        v.pipe(
                          v.tuple(
                            range(3).map(() =>
                              safeDefine.nfcComponent('stat', (actions) => {
                                return [
                                  actions.inputs.patch({
                                    title: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content: faker.word.adjective(),
                                        }),
                                      ];
                                    }),
                                    titleClass: 'text-xl font-bold',
                                    value: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content:
                                            faker.number.float({
                                              min: 0,
                                              max: 100,
                                              fractionDigits: 1,
                                            }) + '%',
                                        }),
                                      ];
                                    }),
                                    valueClass: 'text-4xl font-bold text-primary',
                                    desc: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content: faker.company.catchPhrase().slice(0, 25),
                                        }),
                                      ];
                                    }),
                                    descClass: 'text-success',
                                    figure: safeDefine.nfcComponent('common-data', (actions) => {
                                      return [
                                        actions.inputs.patch({
                                          content: {
                                            icon: {
                                              fontIcon: faker.helpers.arrayElement([
                                                'stars',
                                                'heart_broken',
                                                'shield',
                                                'check',
                                              ]),
                                            },
                                          },
                                        }),
                                      ];
                                    }),
                                    figureClass: 'text-warning',
                                  }),
                                ];
                              }),
                            ),
                          ),
                          actions.wrappers.patch([
                            { type: 'div', attributes: { class: 'stats shadow' } },
                          ]),
                        ),
                      ]),
                      actions.wrappers.patch([
                        { type: 'div', attributes: { class: 'grid gap-4' } },
                      ]),
                    ),
                  ]),
                  actions.wrappers.patch([
                    { type: 'div', attributes: { class: 'grid grid-cols-2 gap-8' } },
                  ]),
                ),
              }),
              actions.class.component('bg-base-100 shadow-sm'),
            ];
          }),
        ]),
      ),
      v.pipe(
        v.tuple([
          safeDefine.nfcComponent('card2', (actions) => {
            return [
              actions.inputs.patch({
                title: safeDefine.nfcComponent('common-data', (actions) => {
                  return [actions.inputs.patch({ content: 'Task' })];
                }),
                titleActions: v.pipe(
                  v.tuple([
                    safeDefine.nfcComponent('button', (actions) => {
                      return [
                        actions.inputs.patch({ content: 'Last Week' }),
                        actions.class.component('join-item'),
                      ];
                    }),
                    safeDefine.nfcComponent('button', (actions) => {
                      return [
                        actions.inputs.patch({ content: 'This Week', active: true }),
                        actions.class.component('join-item'),
                      ];
                    }),
                  ]),
                  actions.wrappers.patch([{ type: 'div', attributes: { class: 'join' } }]),
                ),
                body: v.pipe(
                  v.tuple([
                    safeDefine.nfcComponent('common-data', (actions) => {
                      return [
                        actions.inputs.patch({
                          content: { image: { src: 'example/dashboard/chart2.svg' } },
                        }),
                      ];
                    }),
                  ]),
                ),
              }),
              actions.class.component('bg-base-100 shadow-sm'),
            ];
          }),
          safeDefine.nfcComponent('card2', (actions) => {
            return [
              actions.inputs.patch({
                title: safeDefine.nfcComponent('common-data', (actions) => {
                  return [actions.inputs.patch({ content: 'Schedule' })];
                }),
                titleActions: v.pipe(
                  v.tuple([
                    safeDefine.nfcComponent('button', (actions) => {
                      return [
                        actions.inputs.patch({ content: 'Last Week' }),
                        actions.class.component('join-item'),
                      ];
                    }),
                    safeDefine.nfcComponent('button', (actions) => {
                      return [
                        actions.inputs.patch({ content: 'This Week', active: true }),
                        actions.class.component('join-item'),
                      ];
                    }),
                  ]),
                  actions.wrappers.patch([{ type: 'div', attributes: { class: 'join' } }]),
                ),
                body: v.pipe(
                  v.tuple([
                    safeDefine.nfcComponent(ListDemoNFCC, (actions) => {
                      return [
                        actions.inputs.patch({
                          data: [
                            {
                              id: '01',
                              name: 'Dio Lupa',
                              subtitle: 'Remaining Reason',
                              avatar: 'https://img.daisyui.com/images/profile/demo/1@94.webp',
                            },
                            {
                              id: '02',
                              name: 'Ellie Beilish',
                              subtitle: 'Bears of a fever',
                              avatar: 'https://img.daisyui.com/images/profile/demo/4@94.webp',
                            },
                            {
                              id: '03',
                              name: 'Sabrino Gardener',
                              subtitle: 'Cappuccino',
                              avatar: 'https://img.daisyui.com/images/profile/demo/3@94.webp',
                            },
                            {
                              id: '03',
                              name: 'Sabrino Gardener',
                              subtitle: 'Cappuccino',
                              avatar: 'https://img.daisyui.com/images/profile/demo/3@94.webp',
                            },
                            {
                              id: '03',
                              name: 'Sabrino Gardener',
                              subtitle: 'Cappuccino',
                              avatar: 'https://img.daisyui.com/images/profile/demo/3@94.webp',
                            },
                          ],
                        }),
                      ];
                    }),
                  ]),
                ),
              }),
              actions.class.component('bg-base-100 shadow-sm'),
            ];
          }),
        ]),
        actions.wrappers.patch([{ type: 'div', attributes: { class: 'grid grid-cols-2 gap-8' } }]),
      ),
    ]),
    actions.wrappers.patch([{ type: 'div', attributes: { class: 'grid  gap-4' } }]),
  ),
);

export default Task;
content_copy