From bba3dd4f287b8718dc5bd89f1239adcac561a467 Mon Sep 17 00:00:00 2001 From: Petar Todorov <41293735+PekoPPT@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:44:48 +0300 Subject: [PATCH] docs: move options api demos to public repo --- vue-options-api-demos/README.md | 37 + .../animation/animations/entering/main.js | 4 + .../animation/animations/entering/main.vue | 40 + .../animation/animations/entering/styles.css | 18 + .../animation/animations/exiting/main.js | 4 + .../animation/animations/exiting/main.vue | 41 + .../animation/animations/exiting/styles.css | 22 + .../animation/api/expand-props/main.js | 4 + .../animation/api/expand-props/main.vue | 77 + .../animation/api/expand-props/styles.css | 11 + .../animation/api/fade-props/main.js | 4 + .../animation/api/fade-props/main.vue | 39 + .../animation/api/fade-props/styles.css | 11 + .../animation/api/push-props/main.js | 4 + .../animation/api/push-props/main.vue | 77 + .../animation/api/push-props/styles.css | 11 + .../animation/api/reveal-props/main.js | 4 + .../animation/api/reveal-props/main.vue | 77 + .../animation/api/reveal-props/styles.css | 11 + .../animation/api/slide-props/main.js | 4 + .../animation/api/slide-props/main.vue | 79 + .../animation/api/slide-props/styles.css | 11 + .../animation/api/zoom-props/main.js | 4 + .../animation/api/zoom-props/main.vue | 65 + .../animation/api/zoom-props/styles.css | 11 + .../animation/appearance/child/main.js | 4 + .../animation/appearance/child/main.vue | 39 + .../animation/appearance/child/styles.css | 18 + .../animation/appearance/default/main.js | 4 + .../animation/appearance/default/main.vue | 39 + .../animation/appearance/default/styles.css | 19 + .../animation/appearance/parent/main.js | 4 + .../animation/appearance/parent/main.vue | 55 + .../animation/appearance/parent/styles.css | 19 + .../animation/configuration/main.js | 4 + .../animation/configuration/main.vue | 39 + .../animation/configuration/styles.css | 11 + .../animation/direction/expand/main.js | 4 + .../animation/direction/expand/main.vue | 77 + .../animation/direction/expand/styles.css | 11 + .../animation/direction/fade/main.js | 4 + .../animation/direction/fade/main.vue | 39 + .../animation/direction/fade/styles.css | 11 + .../animation/direction/push/main.js | 4 + .../animation/direction/push/main.vue | 77 + .../animation/direction/push/styles.css | 11 + .../animation/direction/reveal/main.js | 4 + .../animation/direction/reveal/main.vue | 77 + .../animation/direction/reveal/styles.css | 11 + .../animation/direction/slide/main.js | 4 + .../animation/direction/slide/main.vue | 79 + .../animation/direction/slide/styles.css | 11 + .../animation/direction/zoom/main.js | 4 + .../animation/direction/zoom/main.vue | 65 + .../animation/direction/zoom/styles.css | 11 + .../animation/disabled/main.js | 4 + .../animation/disabled/main.vue | 56 + .../animation/disabled/styles.css | 11 + .../animation/duration/main.js | 4 + .../animation/duration/main.vue | 44 + .../animation/duration/styles.css | 11 + .../animation/overview/main.js | 4 + .../animation/overview/main.vue | 103 + .../animation/overview/styles.css | 15 + .../animation/types/expand/main.js | 4 + .../animation/types/expand/main.vue | 38 + .../animation/types/expand/styles.css | 11 + .../animation/types/fade/main.js | 4 + .../animation/types/fade/main.vue | 36 + .../animation/types/fade/styles.css | 11 + .../animation/types/push/main.js | 4 + .../animation/types/push/main.vue | 36 + .../animation/types/push/styles.css | 11 + .../animation/types/reveal/main.js | 4 + .../animation/types/reveal/main.vue | 38 + .../animation/types/reveal/styles.css | 11 + .../animation/types/slide/main.js | 4 + .../animation/types/slide/main.vue | 38 + .../animation/types/slide/styles.css | 11 + .../animation/types/zoom/main.js | 4 + .../animation/types/zoom/main.vue | 36 + .../animation/types/zoom/styles.css | 11 + .../configurator/ButtonStyleConfigurator.vue | 189 + .../button/appearance/configurator/main.js | 4 + .../button/appearance/configurator/main.vue | 63 + .../button/appearance/fill-mode/main.js | 4 + .../button/appearance/fill-mode/main.vue | 34 + .../buttons/button/appearance/rounded/main.js | 4 + .../button/appearance/rounded/main.vue | 44 + .../buttons/button/appearance/shape/main.js | 4 + .../buttons/button/appearance/shape/main.vue | 25 + .../buttons/button/appearance/size/main.js | 4 + .../buttons/button/appearance/size/main.vue | 34 + .../button/appearance/theme-colors/main.js | 4 + .../button/appearance/theme-colors/main.vue | 64 + .../buttons/button/basic/main.js | 4 + .../buttons/button/basic/main.vue | 195 + .../buttons/button/disabled/main.js | 4 + .../buttons/button/disabled/main.vue | 19 + .../buttons/button/events/main.js | 4 + .../buttons/button/events/main.vue | 38 + .../buttons/button/icon/main.js | 4 + .../buttons/button/icon/main.vue | 30 + .../buttons/button/primary/main.js | 4 + .../buttons/button/primary/main.vue | 14 + .../buttons/button/toggleable/main.js | 4 + .../buttons/button/toggleable/main.vue | 18 + .../buttons/buttongroup/basic/main.js | 4 + .../buttons/buttongroup/basic/main.vue | 58 + .../buttons/buttongroup/disabled/main.js | 4 + .../buttons/buttongroup/disabled/main.vue | 31 + .../configurator/ChipStyleConfigurator.vue | 159 + .../chip/appearance/configurator/main.js | 4 + .../chip/appearance/configurator/main.vue | 121 + .../buttons/chip/appearance/fill-mode/main.js | 4 + .../chip/appearance/fill-mode/main.vue | 42 + .../buttons/chip/appearance/rounded/main.js | 4 + .../buttons/chip/appearance/rounded/main.vue | 81 + .../buttons/chip/appearance/size/main.js | 4 + .../buttons/chip/appearance/size/main.vue | 63 + .../chip/appearance/theme-colors/main.js | 4 + .../chip/appearance/theme-colors/main.vue | 47 + .../buttons/chip/avatar/CustomChip.vue | 33 + .../buttons/chip/avatar/main.js | 4 + .../buttons/chip/avatar/main.vue | 66 + .../buttons/chip/customization/CustomChip.vue | 33 + .../buttons/chip/customization/main.js | 4 + .../buttons/chip/customization/main.vue | 74 + .../buttons/chip/disabled/CustomChip.vue | 24 + .../buttons/chip/disabled/main.js | 4 + .../buttons/chip/disabled/main.vue | 58 + .../buttons/chip/getting-started/main.js | 4 + .../buttons/chip/getting-started/main.vue | 376 + .../buttons/chip/remove-icon/CustomChip.vue | 25 + .../buttons/chip/remove-icon/main.js | 4 + .../buttons/chip/remove-icon/main.vue | 66 + .../buttons/chip/remove/CustomChip.vue | 23 + .../buttons/chip/remove/main.js | 4 + .../buttons/chip/remove/main.vue | 55 + .../buttons/chip/select-icon/CustomChip.vue | 24 + .../buttons/chip/select-icon/main.js | 4 + .../buttons/chip/select-icon/main.vue | 68 + .../buttons/chip/types/CustomChip.vue | 32 + .../buttons/chip/types/main.js | 4 + .../buttons/chip/types/main.vue | 67 + .../buttons/chiplist/appearance/main.js | 4 + .../buttons/chiplist/appearance/main.vue | 54 + .../chiplist/controlled/CustomChip.vue | 23 + .../buttons/chiplist/controlled/main.js | 4 + .../buttons/chiplist/controlled/main.vue | 60 + .../chiplist/customization/CustomChip.vue | 44 + .../buttons/chiplist/customization/main.js | 4 + .../buttons/chiplist/customization/main.vue | 67 + .../buttons/chiplist/data-binding/main.js | 4 + .../buttons/chiplist/data-binding/main.vue | 49 + .../buttons/chiplist/disabled/CustomChip.vue | 23 + .../buttons/chiplist/disabled/main.js | 4 + .../buttons/chiplist/disabled/main.vue | 60 + .../buttons/chiplist/getting-started/main.js | 4 + .../buttons/chiplist/getting-started/main.vue | 58 + .../buttons/chiplist/keyboard/CustomChip.vue | 23 + .../buttons/chiplist/keyboard/main.js | 4 + .../buttons/chiplist/keyboard/main.vue | 60 + .../chiplist/selection/multiple/main.js | 4 + .../chiplist/selection/multiple/main.vue | 48 + .../buttons/chiplist/selection/none/main.js | 4 + .../buttons/chiplist/selection/none/main.vue | 48 + .../buttons/chiplist/selection/single/main.js | 4 + .../chiplist/selection/single/main.vue | 49 + .../configurator/ButtonsStyleConfigurator.vue | 189 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 98 + .../appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 77 + .../dropdownbutton/appearance/rounded/main.js | 4 + .../appearance/rounded/main.vue | 99 + .../dropdownbutton/appearance/shape/main.js | 4 + .../dropdownbutton/appearance/shape/main.vue | 63 + .../dropdownbutton/appearance/size/main.js | 4 + .../dropdownbutton/appearance/size/main.vue | 74 + .../appearance/theme-colors/main.js | 4 + .../appearance/theme-colors/main.vue | 127 + .../customization/items/main.js | 4 + .../customization/items/main.vue | 43 + .../customization/popup/main.js | 4 + .../customization/popup/main.vue | 40 + .../data-binding/objects/main.js | 4 + .../data-binding/objects/main.vue | 50 + .../data-binding/strings/main.js | 4 + .../data-binding/strings/main.vue | 49 + .../buttons/dropdownbutton/disabled/main.js | 4 + .../buttons/dropdownbutton/disabled/main.vue | 22 + .../buttons/dropdownbutton/events/Logger.vue | 43 + .../buttons/dropdownbutton/events/main.js | 5 + .../buttons/dropdownbutton/events/main.vue | 87 + .../buttons/dropdownbutton/icons/main.js | 4 + .../buttons/dropdownbutton/icons/main.vue | 88 + .../buttons/dropdownbutton/keyboard/main.js | 4 + .../buttons/dropdownbutton/keyboard/main.vue | 49 + .../buttons/dropdownbutton/overview/main.js | 4 + .../buttons/dropdownbutton/overview/main.vue | 52 + .../floatingactionbutton/align-offset/main.js | 4 + .../align-offset/main.vue | 35 + .../FloatingActionButtonConfigurator.vue | 139 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 53 + .../appearance/rounded/main.js | 4 + .../appearance/rounded/main.vue | 57 + .../appearance/size/main.js | 4 + .../appearance/size/main.vue | 50 + .../appearance/theme/main.js | 4 + .../appearance/theme/main.vue | 56 + .../content-types/main.js | 4 + .../content-types/main.vue | 47 + .../floatingactionbutton/disabled/main.js | 4 + .../floatingactionbutton/disabled/main.vue | 35 + .../floatingactionbutton/events/main.js | 4 + .../floatingactionbutton/events/main.vue | 53 + .../floatingactionbutton/icons/main.js | 4 + .../floatingactionbutton/icons/main.vue | 34 + .../custom/custom-rendering/CustomItem.vue | 21 + .../items/custom/custom-rendering/main.js | 4 + .../items/custom/custom-rendering/main.vue | 84 + .../items/custom/popup/main.js | 4 + .../items/custom/popup/main.vue | 45 + .../items/databinding/main.js | 4 + .../items/databinding/main.vue | 32 + .../items/disabled/main.js | 4 + .../items/disabled/main.vue | 27 + .../floatingactionbutton/keyboard/main.js | 4 + .../floatingactionbutton/keyboard/main.vue | 41 + .../overview/CustomItem.vue | 21 + .../floatingactionbutton/overview/main.js | 4 + .../floatingactionbutton/overview/main.vue | 136 + .../position-mode/main.js | 4 + .../position-mode/main.vue | 83 + .../floatingactionbutton/positioning/main.js | 4 + .../floatingactionbutton/positioning/main.vue | 49 + .../buttons/overview/CustomChip.vue | 33 + .../buttons/overview/main.js | 4 + .../buttons/overview/main.vue | 241 + vue-options-api-demos/buttons/rtl/main.js | 4 + vue-options-api-demos/buttons/rtl/main.vue | 210 + .../shared/ButtonStyleConfigurator.vue | 189 + .../shared/ButtonsStyleConfigurator.vue | 189 + .../buttons/shared/ChipStyleConfigurator.vue | 159 + .../FloatingActionButtonConfigurator.vue | 160 + .../configurator/ButtonsStyleConfigurator.vue | 189 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 69 + .../splitbutton/appearance/fill-mode/main.js | 4 + .../splitbutton/appearance/fill-mode/main.vue | 77 + .../splitbutton/appearance/rounded/main.js | 4 + .../splitbutton/appearance/rounded/main.vue | 99 + .../splitbutton/appearance/size/main.js | 4 + .../splitbutton/appearance/size/main.vue | 74 + .../appearance/theme-colors/main.js | 4 + .../appearance/theme-colors/main.vue | 127 + .../splitbutton/customization/items/main.js | 4 + .../splitbutton/customization/items/main.vue | 34 + .../splitbutton/customization/popup/main.js | 4 + .../splitbutton/customization/popup/main.vue | 32 + .../splitbutton/data-binding/objects/main.js | 4 + .../splitbutton/data-binding/objects/main.vue | 49 + .../splitbutton/data-binding/strings/main.js | 4 + .../splitbutton/data-binding/strings/main.vue | 20 + .../buttons/splitbutton/disabled/main.js | 4 + .../buttons/splitbutton/disabled/main.vue | 21 + .../buttons/splitbutton/events/Logger.vue | 43 + .../buttons/splitbutton/events/main.js | 5 + .../buttons/splitbutton/events/main.vue | 91 + .../buttons/splitbutton/icons/main.js | 4 + .../buttons/splitbutton/icons/main.vue | 63 + .../buttons/splitbutton/keyboard/main.js | 4 + .../buttons/splitbutton/keyboard/main.vue | 45 + .../buttons/splitbutton/overview/main.js | 4 + .../buttons/splitbutton/overview/main.vue | 52 + .../buttons/toolbar/basic/main.js | 4 + .../buttons/toolbar/basic/main.vue | 131 + .../buttons/toolbar/events/Logger.vue | 43 + .../buttons/toolbar/events/main.js | 5 + .../buttons/toolbar/events/main.vue | 145 + .../fill-mode/ToolbarStyleConfigurator.vue | 63 + .../buttons/toolbar/fill-mode/main.js | 4 + .../buttons/toolbar/fill-mode/main.vue | 237 + .../buttons/toolbar/keyboard/main.js | 4 + .../buttons/toolbar/keyboard/main.vue | 124 + .../ToolbarScrollConfigurator.vue | 91 + .../buttons/toolbar/overflow-scroll/main.js | 4 + .../buttons/toolbar/overflow-scroll/main.vue | 161 + .../buttons/toolbar/overflow-section/main.js | 4 + .../buttons/toolbar/overflow-section/main.vue | 134 + .../toolbar/size/ToolbarStyleConfigurator.vue | 62 + .../buttons/toolbar/size/main.js | 4 + .../buttons/toolbar/size/main.vue | 149 + .../buttons/toolbar/tools/main.js | 4 + .../buttons/toolbar/tools/main.vue | 130 + .../charts/api/axis-title-position/main.js | 5 + .../charts/api/axis-title-position/main.vue | 24 + .../charts/api/base-unit/main.js | 5 + .../charts/api/base-unit/main.vue | 40 + .../charts/api/category-base-unit/main.js | 5 + .../charts/api/category-base-unit/main.vue | 40 + .../charts/api/dash-type/main.js | 5 + .../charts/api/dash-type/main.vue | 30 + .../charts/api/line-style/main.js | 5 + .../charts/api/line-style/main.vue | 30 + .../charts/api/marker-type/main.js | 5 + .../charts/api/marker-type/main.vue | 35 + .../charts/api/note-label-position/main.js | 5 + .../charts/api/note-label-position/main.vue | 30 + .../charts/api/note-position/main.js | 5 + .../charts/api/note-position/main.vue | 30 + .../charts/chart/box-plot/box-plot-data.json | 158 + .../charts/chart/box-plot/main.js | 5 + .../charts/chart/box-plot/main.vue | 42 + .../charts/chart/bubble/bubble-data.json | 46 + .../charts/chart/bubble/main.js | 5 + .../charts/chart/bubble/main.vue | 73 + .../charts/chart/bullet/main.js | 5 + .../charts/chart/bullet/main.vue | 189 + .../charts/chart/chart-instance/main.js | 5 + .../charts/chart/chart-instance/main.vue | 139 + .../charts/chart/donut-center-visuals/main.js | 5 + .../chart/donut-center-visuals/main.vue | 107 + .../power-distribution-data.json | 13 + .../charts/chart/donut-center/main.js | 5 + .../charts/chart/donut-center/main.vue | 50 + .../donut-center/power-distribution-data.json | 13 + .../chart/donut-series/donut-series-data.json | 55 + .../charts/chart/donut-series/main.js | 5 + .../charts/chart/donut-series/main.vue | 70 + .../charts/chart/donut/main.js | 5 + .../charts/chart/donut/main.vue | 47 + .../chart/donut/power-distribution-data.json | 13 + .../chart/funnel-dynamic/funnel-data.json | 21 + .../charts/chart/funnel-dynamic/main.js | 5 + .../charts/chart/funnel-dynamic/main.vue | 76 + .../chart/funnel-ratio/funnel-data.json | 21 + .../charts/chart/funnel-ratio/main.js | 5 + .../charts/chart/funnel-ratio/main.vue | 82 + .../charts/chart/funnel/funnel-data.json | 21 + .../charts/chart/funnel/main.js | 5 + .../charts/chart/funnel/main.vue | 56 + .../charts/chart/globalization/main.js | 5 + .../charts/chart/globalization/main.vue | 93 + .../chart/heatmap/basic/heatmap-data.js | 108 + .../charts/chart/heatmap/basic/main.js | 5 + .../charts/chart/heatmap/basic/main.vue | 85 + .../chart/heatmap/binding-categories/main.js | 5 + .../chart/heatmap/binding-categories/main.vue | 50 + .../chart/heatmap/binding-objects/main.js | 5 + .../chart/heatmap/binding-objects/main.vue | 48 + .../charts/chart/heatmap/color-scale/main.js | 5 + .../charts/chart/heatmap/color-scale/main.vue | 54 + .../charts/chart/heatmap/crosshairs/main.js | 5 + .../charts/chart/heatmap/crosshairs/main.vue | 80 + .../chart/heatmap/marker-shapes/main.js | 5 + .../chart/heatmap/marker-shapes/main.vue | 100 + .../charts/chart/heatmap/marker-size/main.js | 5 + .../charts/chart/heatmap/marker-size/main.vue | 91 + .../charts/chart/heatmap/pan-zoom/main.js | 5 + .../charts/chart/heatmap/pan-zoom/main.vue | 73 + .../chart/heatmap/tooltips/heatmap-data.js | 108 + .../charts/chart/heatmap/tooltips/main.js | 5 + .../charts/chart/heatmap/tooltips/main.vue | 53 + .../charts/chart/pan-zoom/basic/main.js | 5 + .../charts/chart/pan-zoom/basic/main.vue | 56 + .../charts/chart/pan-zoom/lock/main.js | 5 + .../charts/chart/pan-zoom/lock/main.vue | 68 + .../charts/chart/polar/main.js | 5 + .../charts/chart/polar/main.vue | 62 + .../charts/chart/polar/polar-data.json | 14 + .../charts/chart/pyramid/basic/main.js | 5 + .../charts/chart/pyramid/basic/main.vue | 74 + .../chart/pyramid/dynamic-height/main.js | 5 + .../chart/pyramid/dynamic-height/main.vue | 88 + .../charts/chart/radar/main.js | 5 + .../charts/chart/radar/main.vue | 61 + .../charts/chart/radar/radar-data.json | 16 + .../charts/chart/range-area/main.js | 5 + .../charts/chart/range-area/main.vue | 71 + .../charts/chart/range-area/range-data.json | 14 + .../charts/chart/range-bar/main.js | 5 + .../charts/chart/range-bar/main.vue | 71 + .../charts/chart/range-bar/range-data.json | 14 + .../charts/chart/rendering/main.js | 5 + .../charts/chart/rendering/main.vue | 128 + .../charts/chart/rtl/main.js | 5 + .../charts/chart/rtl/main.vue | 111 + .../charts/chart/scatter-line-style/main.js | 5 + .../charts/chart/scatter-line-style/main.vue | 52 + .../scatter-line-style-data.json | 28 + .../charts/chart/scatter-line/main.js | 5 + .../charts/chart/scatter-line/main.vue | 69 + .../chart/scatter-line/scatter-line-data.json | 31 + .../charts/chart/scatter-plot/main.js | 5 + .../charts/chart/scatter-plot/main.vue | 57 + .../chart/scatter-plot/scatter-plot-data.json | 17 + .../charts/chart/trendlines/basic/main.js | 5 + .../charts/chart/trendlines/basic/main.vue | 66 + .../chart/trendlines/basic/sales-data.js | 247 + .../chart/trendlines/custom-field/main.js | 5 + .../chart/trendlines/custom-field/main.vue | 67 + .../custom-field/stock-data-sample.js | 2075 ++ .../chart/trendlines/date-series/main.js | 5 + .../chart/trendlines/date-series/main.vue | 66 + .../trendlines/date-series/sales-data.js | 247 + .../exponential/categorical/main.js | 5 + .../exponential/categorical/main.vue | 61 + .../exponential/categorical/sales-data.js | 247 + .../trendlines/exponential/scatter/main.js | 5 + .../trendlines/exponential/scatter/main.vue | 54 + .../charts/chart/trendlines/forecast/main.js | 5 + .../charts/chart/trendlines/forecast/main.vue | 68 + .../chart/trendlines/forecast/sales-data.js | 247 + .../trendlines/hidden-legend-item/main.js | 5 + .../trendlines/hidden-legend-item/main.vue | 69 + .../hidden-legend-item/sales-data.js | 247 + .../trendlines/linear/categorical/main.js | 5 + .../trendlines/linear/categorical/main.vue | 61 + .../linear/categorical/sales-data.js | 247 + .../chart/trendlines/linear/scatter/main.js | 5 + .../chart/trendlines/linear/scatter/main.vue | 54 + .../logarithmic/categorical/main.js | 5 + .../logarithmic/categorical/main.vue | 61 + .../logarithmic/categorical/sales-data.js | 247 + .../trendlines/logarithmic/scatter/main.js | 5 + .../trendlines/logarithmic/scatter/main.vue | 54 + .../moving-average/categorical/main.js | 5 + .../moving-average/categorical/main.vue | 62 + .../moving-average/categorical/sales-data.js | 247 + .../trendlines/moving-average/scatter/main.js | 5 + .../moving-average/scatter/main.vue | 57 + .../trendlines/polynomial/categorical/main.js | 5 + .../polynomial/categorical/main.vue | 62 + .../polynomial/categorical/sales-data.js | 247 + .../trendlines/polynomial/scatter/main.js | 5 + .../trendlines/polynomial/scatter/main.vue | 55 + .../trendlines/power/categorical/main.js | 5 + .../trendlines/power/categorical/main.vue | 61 + .../power/categorical/sales-data.js | 247 + .../chart/trendlines/power/scatter/main.js | 5 + .../chart/trendlines/power/scatter/main.vue | 54 + .../charts/chart/waterfall/main.js | 5 + .../charts/chart/waterfall/main.vue | 82 + .../chart/waterfall/waterfall-data.json | 31 + .../charts/data-binding/arrays/main.js | 5 + .../charts/data-binding/arrays/main.vue | 31 + .../data-binding/category-field/main.js | 5 + .../data-binding/category-field/main.vue | 42 + .../duplicates-aggregate-custom/main.js | 5 + .../duplicates-aggregate-custom/main.vue | 52 + .../data-binding/duplicates-aggregate/main.js | 5 + .../duplicates-aggregate/main.vue | 47 + .../charts/data-binding/duplicates/main.js | 5 + .../charts/data-binding/duplicates/main.vue | 46 + .../charts/data-binding/group-objects/main.js | 5 + .../data-binding/group-objects/main.vue | 72 + .../charts/data-binding/labels/main.js | 5 + .../charts/data-binding/labels/main.vue | 36 + .../no-data-overlay-children/main.js | 5 + .../no-data-overlay-children/main.vue | 48 + .../data-binding/no-data-overlay/main.js | 5 + .../data-binding/no-data-overlay/main.vue | 39 + .../charts/data-binding/objects/main.js | 5 + .../charts/data-binding/objects/main.vue | 41 + .../charts/data-binding/values/main.js | 5 + .../charts/data-binding/values/main.vue | 27 + .../charts/elements/axes/axis-config/main.js | 5 + .../charts/elements/axes/axis-config/main.vue | 44 + .../charts/elements/axes/categorical/main.js | 5 + .../charts/elements/axes/categorical/main.vue | 46 + .../elements/axes/date-aggregates/main.js | 5 + .../elements/axes/date-aggregates/main.vue | 71 + .../axes/date-aggregates/weather-data.js | 220 + .../elements/axes/label-rotation/main.js | 5 + .../elements/axes/label-rotation/main.vue | 52 + .../axes/label-rotation/weather-data.js | 220 + .../elements/axes/max-divisions/main.js | 5 + .../elements/axes/max-divisions/main.vue | 57 + .../axes/max-divisions/weather-data.js | 220 + .../charts/elements/axes/multi-axis/main.js | 5 + .../charts/elements/axes/multi-axis/main.vue | 162 + .../axes/range-labels/covid-data.json | 593 + .../charts/elements/axes/range-labels/main.js | 5 + .../elements/axes/range-labels/main.vue | 92 + .../charts/elements/axes/scatter/main.js | 5 + .../charts/elements/axes/scatter/main.vue | 55 + .../elements/axes/time-intervals/main.js | 5 + .../elements/axes/time-intervals/main.vue | 69 + .../axes/time-intervals/weather-data.js | 220 + .../charts/elements/axes/time-series/main.js | 5 + .../charts/elements/axes/time-series/main.vue | 48 + .../elements/axes/time-series/weather-data.js | 220 + .../charts/elements/chart-area/main.js | 5 + .../charts/elements/chart-area/main.vue | 33 + .../elements/crosshairs/cursor-values/main.js | 5 + .../crosshairs/cursor-values/main.vue | 65 + .../elements/crosshairs/overview/main.js | 5 + .../elements/crosshairs/overview/main.vue | 60 + .../elements/error-bars/array-values/main.js | 5 + .../elements/error-bars/array-values/main.vue | 31 + .../charts/elements/error-bars/custom/main.js | 5 + .../elements/error-bars/custom/main.vue | 39 + .../error-bars/numeric-values/main.js | 5 + .../error-bars/numeric-values/main.vue | 31 + .../elements/error-bars/overview/main.js | 5 + .../elements/error-bars/overview/main.vue | 52 + .../error-bars/percentage-values/main.js | 5 + .../error-bars/percentage-values/main.vue | 31 + .../elements/error-bars/scatter/main.js | 5 + .../elements/error-bars/scatter/main.vue | 41 + .../error-bars/statistical-values/main.js | 5 + .../error-bars/statistical-values/main.vue | 35 + .../labels/override-axis-labels/main.js | 5 + .../labels/override-axis-labels/main.vue | 43 + .../labels/override-series-labels/main.js | 5 + .../labels/override-series-labels/main.vue | 40 + .../charts/elements/labels/style-axis/main.js | 5 + .../elements/labels/style-axis/main.vue | 52 + .../labels/style-currency-axis/main.js | 5 + .../labels/style-currency-axis/main.vue | 33 + .../labels/style-currency-series/main.js | 5 + .../labels/style-currency-series/main.vue | 34 + .../labels/style-scatter-series/main.js | 5 + .../labels/style-scatter-series/main.vue | 55 + .../elements/labels/style-series/main.js | 5 + .../elements/labels/style-series/main.vue | 40 + .../elements/labels/visual-axis/main.js | 5 + .../elements/labels/visual-axis/main.vue | 64 + .../elements/labels/visual-series/main.js | 5 + .../elements/labels/visual-series/main.vue | 59 + .../elements/legend/click-legend/main.js | 5 + .../elements/legend/click-legend/main.vue | 43 + .../legend/custom-legend-position/main.js | 5 + .../legend/custom-legend-position/main.vue | 33 + .../elements/legend/hide-legend/main.js | 5 + .../elements/legend/hide-legend/main.vue | 33 + .../elements/legend/legend-items/main.js | 5 + .../elements/legend/legend-items/main.vue | 91 + .../charts/elements/legend/overview/main.js | 5 + .../charts/elements/legend/overview/main.vue | 33 + .../charts/elements/legend/title/main.js | 5 + .../charts/elements/legend/title/main.vue | 73 + .../charts/elements/notes/appearance/main.js | 5 + .../charts/elements/notes/appearance/main.vue | 54 + .../charts/elements/notes/axis-notes/main.js | 5 + .../charts/elements/notes/axis-notes/main.vue | 80 + .../charts/elements/notes/overview/main.js | 5 + .../charts/elements/notes/overview/main.vue | 50 + .../charts/elements/panes/clip/main.js | 5 + .../charts/elements/panes/clip/main.vue | 58 + .../charts/elements/panes/default/main.js | 5 + .../charts/elements/panes/default/main.vue | 61 + .../charts/elements/panes/overview/main.js | 5 + .../charts/elements/panes/overview/main.vue | 54 + .../charts/elements/plot-area/main.js | 5 + .../charts/elements/plot-area/main.vue | 33 + .../charts/elements/plot-bands/custom/main.js | 5 + .../elements/plot-bands/custom/main.vue | 91 + .../charts/elements/plot-bands/labels/main.js | 5 + .../elements/plot-bands/labels/main.vue | 74 + .../elements/plot-bands/overview/main.js | 5 + .../elements/plot-bands/overview/main.vue | 62 + .../elements/selection/navigator/main.js | 5 + .../elements/selection/navigator/main.vue | 102 + .../elements/selection/overview/main.js | 5 + .../elements/selection/overview/main.vue | 47 + .../elements/series/configuration/main.js | 5 + .../elements/series/configuration/main.vue | 43 + .../charts/elements/series/overview/main.js | 5 + .../charts/elements/series/overview/main.vue | 51 + .../charts/elements/title/main.js | 5 + .../charts/elements/title/main.vue | 23 + .../elements/tooltips/categorical/main.js | 5 + .../elements/tooltips/categorical/main.vue | 61 + .../charts/elements/tooltips/format/main.js | 5 + .../charts/elements/tooltips/format/main.vue | 38 + .../elements/tooltips/one-tooltip/main.js | 5 + .../elements/tooltips/one-tooltip/main.vue | 44 + .../charts/elements/tooltips/overview/main.js | 5 + .../elements/tooltips/overview/main.vue | 38 + .../charts/elements/tooltips/scatter/main.js | 5 + .../charts/elements/tooltips/scatter/main.vue | 52 + .../charts/elements/tooltips/template/main.js | 5 + .../elements/tooltips/template/main.vue | 49 + .../charts/events/basic/Logger.vue | 43 + .../charts/events/basic/main.js | 5 + .../charts/events/basic/main.vue | 167 + .../charts/events/drag/Logger.vue | 43 + .../charts/events/drag/main.js | 5 + .../charts/events/drag/main.vue | 139 + .../charts/events/select/Logger.vue | 43 + .../charts/events/select/main.js | 5 + .../charts/events/select/main.vue | 146 + .../charts/events/zoom/Logger.vue | 43 + .../charts/events/zoom/main.js | 5 + .../charts/events/zoom/main.vue | 140 + .../charts/export-options/image-size/main.js | 5 + .../charts/export-options/image-size/main.vue | 150 + .../charts/export-options/image/main.js | 5 + .../charts/export-options/image/main.vue | 145 + .../charts/export-options/pdf-size/main.js | 5 + .../charts/export-options/pdf-size/main.vue | 150 + .../charts/export-options/pdf/main.js | 5 + .../charts/export-options/pdf/main.vue | 145 + .../charts/export-options/svg/main.js | 5 + .../charts/export-options/svg/main.vue | 145 + .../charts/export-options/visuals/main.js | 5 + .../charts/export-options/visuals/main.vue | 127 + vue-options-api-demos/charts/overview/main.js | 5 + .../charts/overview/main.vue | 309 + .../charts/sankey/auto-layout/main.js | 5 + .../charts/sankey/auto-layout/main.vue | 55 + .../charts/sankey/customization/data/main.js | 5 + .../charts/sankey/customization/data/main.vue | 59 + .../sankey/customization/defaults/main.js | 5 + .../sankey/customization/defaults/main.vue | 61 + .../datasets-customize-objects/main.js | 5 + .../datasets-customize-objects/main.vue | 65 + .../data-binding/datasets-objects/main.js | 5 + .../data-binding/datasets-objects/main.vue | 57 + .../charts/sankey/elements/legend/main.js | 5 + .../charts/sankey/elements/legend/main.vue | 60 + .../charts/sankey/elements/title/main.js | 5 + .../charts/sankey/elements/title/main.vue | 60 + .../elements/tooltip/custom-behaviour/main.js | 5 + .../tooltip/custom-behaviour/main.vue | 61 + .../elements/tooltip/custom-rendering/main.js | 5 + .../tooltip/custom-rendering/main.vue | 71 + .../custom-rendering/tooltip-link-content.vue | 15 + .../custom-rendering/tooltip-node-content.vue | 13 + .../sankey/elements/tooltip/default/main.js | 5 + .../sankey/elements/tooltip/default/main.vue | 60 + .../charts/sankey/events/main.js | 5 + .../charts/sankey/events/main.vue | 71 + .../charts/sankey/export/custom/main.js | 5 + .../charts/sankey/export/custom/main.vue | 89 + .../charts/sankey/export/image-size/main.js | 5 + .../charts/sankey/export/image-size/main.vue | 75 + .../charts/sankey/export/image/main.js | 5 + .../charts/sankey/export/image/main.vue | 72 + .../sankey/export/pdf-paper-size/main.js | 5 + .../sankey/export/pdf-paper-size/main.vue | 88 + .../charts/sankey/export/pdf/main.js | 5 + .../charts/sankey/export/pdf/main.vue | 72 + .../charts/sankey/export/svg/main.js | 5 + .../charts/sankey/export/svg/main.vue | 72 + .../charts/sankey/keyboard-navigation/main.js | 5 + .../sankey/keyboard-navigation/main.vue | 60 + .../charts/sankey/overview/main.js | 5 + .../charts/sankey/overview/main.vue | 60 + .../series-types/area/100-stacked/main.js | 5 + .../series-types/area/100-stacked/main.vue | 29 + .../charts/series-types/area/basic/main.js | 5 + .../charts/series-types/area/basic/main.vue | 47 + .../series-types/area/line-style/main.js | 5 + .../series-types/area/line-style/main.vue | 77 + .../charts/series-types/area/stacked/main.js | 5 + .../charts/series-types/area/stacked/main.vue | 39 + .../charts/series-types/area/vertical/main.js | 5 + .../series-types/area/vertical/main.vue | 37 + .../series-types/bar/100-stacked/main.js | 5 + .../series-types/bar/100-stacked/main.vue | 63 + .../charts/series-types/bar/basic/main.js | 5 + .../charts/series-types/bar/basic/main.vue | 53 + .../charts/series-types/bar/column/main.js | 5 + .../charts/series-types/bar/column/main.vue | 29 + .../charts/series-types/bar/gap/main.js | 5 + .../charts/series-types/bar/gap/main.vue | 44 + .../charts/series-types/bar/spacing/main.js | 5 + .../charts/series-types/bar/spacing/main.vue | 44 + .../series-types/bar/stacked-group/main.js | 5 + .../series-types/bar/stacked-group/main.vue | 65 + .../charts/series-types/bar/stacked/main.js | 5 + .../charts/series-types/bar/stacked/main.vue | 63 + .../charts/series-types/line/basic/main.js | 5 + .../charts/series-types/line/basic/main.vue | 56 + .../series-types/line/line-style/main.js | 5 + .../series-types/line/line-style/main.vue | 79 + .../charts/series-types/line/vertical/main.js | 5 + .../series-types/line/vertical/main.vue | 41 + .../charts/series-types/pie/basic/main.js | 5 + .../charts/series-types/pie/basic/main.vue | 75 + .../charts/shared/box-plot-data.json | 158 + .../charts/shared/bubble-data.json | 46 + .../charts/shared/covid-data.json | 593 + .../charts/shared/donut-series-data.json | 55 + .../charts/shared/funnel-data.json | 21 + .../charts/shared/polar-data.json | 14 + .../shared/power-distribution-data.json | 13 + .../charts/shared/radar-data.json | 16 + .../charts/shared/range-data.json | 14 + .../charts/shared/sales-data.js | 247 + .../charts/shared/scatter-line-data.json | 31 + .../shared/scatter-line-style-data.json | 28 + .../charts/shared/scatter-plot-data.json | 17 + .../charts/shared/stock-data-sample.js | 2075 ++ .../charts/shared/stock-data.json | 410 + .../charts/shared/waterfall-data.json | 31 + .../charts/shared/weather-data.js | 220 + .../charts/sparkline/main.js | 5 + .../charts/sparkline/main.vue | 81 + .../charts/stock-chart/default/main.js | 5 + .../charts/stock-chart/default/main.vue | 75 + .../stock-chart/default/stock-data.json | 410 + .../charts/stock-chart/filter-data/main.js | 5 + .../charts/stock-chart/filter-data/main.vue | 75 + .../stock-chart/filter-data/stock-data.json | 410 + .../charts/stock-chart/multiple-panes/main.js | 5 + .../stock-chart/multiple-panes/main.vue | 106 + .../multiple-panes/stock-data.json | 410 + .../charts/styling/dimensions/main.js | 5 + .../charts/styling/dimensions/main.vue | 60 + .../charts/styling/pattern-fills/main.js | 5 + .../charts/styling/pattern-fills/main.vue | 104 + .../charts/styling/range/main.js | 5 + .../charts/styling/range/main.vue | 79 + .../common/adaptive-mode/main.js | 4 + .../common/adaptive-mode/main.vue | 61 + .../ai-prompt/commands/main.js | 4 + .../ai-prompt/commands/main.vue | 111 + .../ai-prompt/custom-template/main.js | 4 + .../ai-prompt/custom-template/main.vue | 156 + .../ai-prompt/custom-toolbar/ai-data.js | 535 + .../ai-prompt/custom-toolbar/main.js | 4 + .../ai-prompt/custom-toolbar/main.vue | 180 + .../ai-prompt/events/Logger.vue | 43 + .../ai-prompt/events/main.js | 5 + .../ai-prompt/events/main.vue | 133 + .../ai-prompt/globalization/main.js | 4 + .../ai-prompt/globalization/main.vue | 61 + .../ai-prompt/overview/ai-data.js | 535 + .../ai-prompt/overview/main.js | 4 + .../ai-prompt/overview/main.vue | 188 + .../ai-prompt/overview/overview-styles.css | 159 + .../ai-prompt/suggestions/ai-data.js | 535 + .../ai-prompt/suggestions/main.js | 4 + .../ai-prompt/suggestions/main.vue | 116 + .../conversational-ui/getting-started/main.js | 4 + .../getting-started/main.vue | 60 + .../conversational-ui/overview/main.js | 4 + .../conversational-ui/overview/main.vue | 60 + .../datatools/filter/basic-usage/main.js | 4 + .../datatools/filter/basic-usage/main.vue | 114 + .../datatools/filter/basic-usage/products.js | 184 + .../built-in/CustomEnumFilter.vue | 34 + .../filter/custom-editors/built-in/main.js | 4 + .../filter/custom-editors/built-in/main.vue | 97 + .../custom-editors/built-in/products.js | 94 + .../custom-component/CustomComboBoxFilter.vue | 53 + .../CustomDropDownListFilter.vue | 32 + .../custom-editors/custom-component/main.js | 4 + .../custom-editors/custom-component/main.vue | 121 + .../custom-component/products.js | 94 + .../datatools/filter/custom-operators/main.js | 4 + .../filter/custom-operators/main.vue | 98 + .../filter/custom-operators/products.js | 94 + .../datatools/filter/events/Logger.vue | 43 + .../datatools/filter/events/main.js | 4 + .../datatools/filter/events/main.vue | 92 + .../globalization/basic-usage/es.json | 53 + .../globalization/basic-usage/main.js | 4 + .../globalization/basic-usage/main.vue | 165 + .../datatools/globalization/rtl/main.js | 4 + .../datatools/globalization/rtl/main.vue | 99 + .../pager/basic-usage/Configurator.vue | 119 + .../datatools/pager/basic-usage/main.js | 4 + .../datatools/pager/basic-usage/main.vue | 84 + .../datatools/pager/basic-usage/products.js | 1 + .../datatools/pager/events/handling/main.js | 4 + .../datatools/pager/events/handling/main.vue | 69 + .../datatools/pager/events/prevent/main.js | 4 + .../datatools/pager/events/prevent/main.vue | 70 + .../datatools/pager/responsive/main.js | 4 + .../datatools/pager/responsive/main.vue | 79 + .../pager/template/PagerTemplate.vue | 92 + .../datatools/pager/template/main.js | 4 + .../datatools/pager/template/main.vue | 46 + .../datatools/shared/products.js | 1 + vue-options-api-demos/datatools/tsconfig.json | 29 + .../dateinputs/basic/main.js | 4 + .../dateinputs/basic/main.vue | 73 + .../dateinputs/calendar/activeview/main.js | 4 + .../dateinputs/calendar/activeview/main.vue | 17 + .../dateinputs/calendar/basic/main.js | 4 + .../dateinputs/calendar/basic/main.vue | 17 + .../dateinputs/calendar/custom/cell/Cell.vue | 29 + .../dateinputs/calendar/custom/cell/main.js | 4 + .../dateinputs/calendar/custom/cell/main.vue | 26 + .../calendar/custom/htmlcell/Cell.vue | 47 + .../calendar/custom/htmlcell/main.js | 4 + .../calendar/custom/htmlcell/main.vue | 42 + .../calendar/custom/title/Title.vue | 29 + .../dateinputs/calendar/custom/title/main.js | 4 + .../dateinputs/calendar/custom/title/main.vue | 30 + .../dateinputs/calendar/dateranges/main.js | 4 + .../dateinputs/calendar/dateranges/main.vue | 20 + .../dateinputs/calendar/dates/focused/main.js | 4 + .../calendar/dates/focused/main.vue | 17 + .../calendar/dates/multiple/main.js | 4 + .../calendar/dates/multiple/main.vue | 23 + .../dateinputs/calendar/dates/range/main.js | 4 + .../dateinputs/calendar/dates/range/main.vue | 22 + .../calendar/dates/selected/main.js | 4 + .../calendar/dates/selected/main.vue | 17 + .../dateinputs/calendar/disabled/main.js | 4 + .../dateinputs/calendar/disabled/main.vue | 17 + .../dateinputs/calendar/json/main.js | 4 + .../dateinputs/calendar/json/main.vue | 34 + .../dateinputs/calendar/keyboard/main.js | 4 + .../dateinputs/calendar/keyboard/main.vue | 17 + .../dateinputs/calendar/multipleviews/main.js | 4 + .../calendar/multipleviews/main.vue | 36 + .../dateinputs/calendar/reverse-range/main.js | 4 + .../calendar/reverse-range/main.vue | 41 + .../dateinputs/calendar/viewdepth/main.js | 4 + .../dateinputs/calendar/viewdepth/main.vue | 34 + .../dateinputs/calendar/week-numbers/main.js | 4 + .../dateinputs/calendar/week-numbers/main.vue | 17 + .../dateinputs/common/es.json | 31 + .../DateInputsStyleConfigurator.vue | 105 + .../dateinput/appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 49 + .../dateinput/appearance/fill-mode/main.js | 4 + .../dateinput/appearance/fill-mode/main.vue | 95 + .../dateinput/appearance/rounded/main.js | 4 + .../dateinput/appearance/rounded/main.vue | 111 + .../dateinput/appearance/size/main.js | 4 + .../dateinput/appearance/size/main.vue | 92 + .../dateinputs/dateinput/basic/main.js | 4 + .../dateinputs/dateinput/basic/main.vue | 17 + .../dateinput/date-ranges/basic/main.js | 4 + .../dateinput/date-ranges/basic/main.vue | 38 + .../dateinput/date-ranges/time/main.js | 4 + .../dateinput/date-ranges/time/main.vue | 35 + .../dateinputs/dateinput/disabled/main.js | 4 + .../dateinputs/dateinput/disabled/main.vue | 30 + .../dateinput/floating-label/main.js | 4 + .../dateinput/floating-label/main.vue | 29 + .../dateinputs/dateinput/formats/main.js | 4 + .../dateinputs/dateinput/formats/main.vue | 52 + .../dateinputs/dateinput/forms/basic/main.js | 4 + .../dateinputs/dateinput/forms/basic/main.vue | 67 + .../dateinput/forms/custom-message/main.js | 4 + .../dateinput/forms/custom-message/main.vue | 68 + .../dateinput/forms/disable-styles/main.js | 4 + .../dateinput/forms/disable-styles/main.vue | 95 + .../dateinput/forms/override/main.js | 4 + .../dateinput/forms/override/main.vue | 97 + .../dateinput/incremental-steps/main.js | 4 + .../dateinput/incremental-steps/main.vue | 31 + .../dateinputs/dateinput/input-mode/main.js | 4 + .../dateinputs/dateinput/input-mode/main.vue | 43 + .../dateinputs/dateinput/keyboard/main.js | 4 + .../dateinputs/dateinput/keyboard/main.vue | 17 + .../dateinputs/dateinput/placeholders/main.js | 4 + .../dateinput/placeholders/main.vue | 58 + .../dateinputs/dateinput/spin-buttons/main.js | 4 + .../dateinput/spin-buttons/main.vue | 30 + .../DateInputsStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 47 + .../datepicker/appearance/fill-mode/main.js | 4 + .../datepicker/appearance/fill-mode/main.vue | 95 + .../datepicker/appearance/rounded/main.js | 4 + .../datepicker/appearance/rounded/main.vue | 111 + .../datepicker/appearance/size/main.js | 4 + .../datepicker/appearance/size/main.vue | 92 + .../dateinputs/datepicker/controlled/main.js | 4 + .../dateinputs/datepicker/controlled/main.vue | 34 + .../custom/calendar/CustomCalendar.vue | 28 + .../datepicker/custom/calendar/main.js | 4 + .../datepicker/custom/calendar/main.vue | 27 + .../custom/dateinput/CustomDateInput.vue | 69 + .../datepicker/custom/dateinput/main.js | 4 + .../datepicker/custom/dateinput/main.vue | 29 + .../datepicker/custom/popup/CustomPopup.vue | 27 + .../datepicker/custom/popup/main.js | 4 + .../datepicker/custom/popup/main.vue | 29 + .../custom/toggle/CustomToggleButton.vue | 24 + .../datepicker/custom/toggle/main.js | 4 + .../datepicker/custom/toggle/main.vue | 28 + .../dateinputs/datepicker/datelimits/main.js | 4 + .../dateinputs/datepicker/datelimits/main.vue | 29 + .../dateinputs/datepicker/default/main.js | 4 + .../dateinputs/datepicker/default/main.vue | 25 + .../datepicker/defaultpopup/main.js | 4 + .../datepicker/defaultpopup/main.vue | 26 + .../dateinputs/datepicker/disabled/main.js | 4 + .../dateinputs/datepicker/disabled/main.vue | 27 + .../dateinputs/datepicker/events/main.js | 4 + .../dateinputs/datepicker/events/main.vue | 55 + .../datepicker/floating-label/main.js | 4 + .../datepicker/floating-label/main.vue | 31 + .../dateinputs/datepicker/focused/main.js | 4 + .../dateinputs/datepicker/focused/main.vue | 16 + .../dateinputs/datepicker/formats/main.js | 4 + .../dateinputs/datepicker/formats/main.vue | 52 + .../dateinputs/datepicker/forms/basic/main.js | 4 + .../datepicker/forms/basic/main.vue | 67 + .../datepicker/forms/custom-message/main.js | 4 + .../datepicker/forms/custom-message/main.vue | 68 + .../datepicker/forms/disable-styles/main.js | 4 + .../datepicker/forms/disable-styles/main.vue | 93 + .../datepicker/forms/override/main.js | 4 + .../datepicker/forms/override/main.vue | 93 + .../datepicker/gettingstarted/main.js | 4 + .../datepicker/gettingstarted/main.vue | 16 + .../dateinputs/datepicker/input-mode/main.js | 4 + .../dateinputs/datepicker/input-mode/main.vue | 54 + .../dateinputs/datepicker/json/main.js | 4 + .../dateinputs/datepicker/json/main.vue | 27 + .../dateinputs/datepicker/keyboard/main.js | 4 + .../dateinputs/datepicker/keyboard/main.vue | 27 + .../dateinputs/datepicker/overview/es.json | 31 + .../dateinputs/datepicker/overview/main.js | 4 + .../dateinputs/datepicker/overview/main.vue | 88 + .../datepicker/placeholders/main.js | 4 + .../datepicker/placeholders/main.vue | 53 + .../dateinputs/datepicker/popup-state/main.js | 4 + .../datepicker/popup-state/main.vue | 39 + .../dateinputs/datepicker/weeknum/main.js | 4 + .../dateinputs/datepicker/weeknum/main.vue | 15 + .../daterangepicker/controlled/main.js | 4 + .../daterangepicker/controlled/main.vue | 39 + .../daterangepicker/controlled/show/main.js | 4 + .../daterangepicker/controlled/show/main.vue | 37 + .../custom/calendar/customCalendar.vue | 59 + .../daterangepicker/custom/calendar/main.js | 4 + .../daterangepicker/custom/calendar/main.vue | 24 + .../custom/dateinput/customEndDateInput.vue | 46 + .../custom/dateinput/customStartDateInput.vue | 46 + .../daterangepicker/custom/dateinput/main.js | 4 + .../daterangepicker/custom/dateinput/main.vue | 26 + .../daterangepicker/custom/popup/main.js | 4 + .../daterangepicker/custom/popup/main.vue | 34 + .../daterangepicker/default/popup/main.js | 4 + .../daterangepicker/default/popup/main.vue | 20 + .../daterangepicker/default/value/main.js | 4 + .../daterangepicker/default/value/main.vue | 26 + .../daterangepicker/disabled/main.js | 4 + .../daterangepicker/disabled/main.vue | 24 + .../daterangepicker/events/Logger.vue | 43 + .../dateinputs/daterangepicker/events/main.js | 5 + .../daterangepicker/events/main.vue | 50 + .../daterangepicker/focused/main.js | 4 + .../daterangepicker/focused/main.vue | 22 + .../daterangepicker/input-mode/main.js | 4 + .../daterangepicker/input-mode/main.vue | 57 + .../daterangepicker/keyboard/main.js | 4 + .../daterangepicker/keyboard/main.vue | 29 + .../daterangepicker/overview/main.js | 4 + .../daterangepicker/overview/main.vue | 28 + .../dateinputs/daterangepicker/ranges/main.js | 4 + .../daterangepicker/ranges/main.vue | 28 + .../daterangepicker/reverse/basic/main.js | 4 + .../daterangepicker/reverse/basic/main.vue | 42 + .../daterangepicker/reverse/swap/main.js | 4 + .../daterangepicker/reverse/swap/main.vue | 40 + .../daterangepicker/settings/calendar/main.js | 4 + .../settings/calendar/main.vue | 27 + .../settings/dateinputs/main.js | 4 + .../settings/dateinputs/main.vue | 35 + .../daterangepicker/settings/popup/main.js | 4 + .../daterangepicker/settings/popup/main.vue | 36 + .../dateinputs/datetimepicker/.DS_Store | Bin 0 -> 6148 bytes .../DateInputsStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 47 + .../appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 95 + .../datetimepicker/appearance/rounded/main.js | 4 + .../appearance/rounded/main.vue | 111 + .../datetimepicker/appearance/size/main.js | 4 + .../datetimepicker/appearance/size/main.vue | 92 + .../datetimepicker/controlled/show/main.js | 4 + .../datetimepicker/controlled/show/main.vue | 39 + .../datetimepicker/controlled/value/main.js | 4 + .../datetimepicker/controlled/value/main.vue | 34 + .../datetimepicker/custom/.DS_Store | Bin 0 -> 6148 bytes .../custom/calendar/CustomCalendar.vue | 31 + .../datetimepicker/custom/calendar/main.js | 4 + .../datetimepicker/custom/calendar/main.vue | 26 + .../custom/dateinput/CustomDateInput.vue | 62 + .../datetimepicker/custom/dateinput/main.js | 4 + .../datetimepicker/custom/dateinput/main.vue | 30 + .../custom/popup/CustomPopup.vue | 27 + .../datetimepicker/custom/popup/main.js | 4 + .../datetimepicker/custom/popup/main.vue | 24 + .../datetimepicker/default/show/main.js | 4 + .../datetimepicker/default/show/main.vue | 25 + .../datetimepicker/default/value/main.js | 4 + .../datetimepicker/default/value/main.vue | 25 + .../datetimepicker/disabled/main.js | 4 + .../datetimepicker/disabled/main.vue | 16 + .../dateinputs/datetimepicker/events/main.js | 4 + .../dateinputs/datetimepicker/events/main.vue | 41 + .../datetimepicker/floating-label/main.js | 4 + .../datetimepicker/floating-label/main.vue | 31 + .../dateinputs/datetimepicker/focused/main.js | 4 + .../datetimepicker/focused/main.vue | 24 + .../dateinputs/datetimepicker/formats/main.js | 4 + .../datetimepicker/formats/main.vue | 61 + .../datetimepicker/forms/basic/main.js | 4 + .../datetimepicker/forms/basic/main.vue | 60 + .../forms/custom-message/main.js | 4 + .../forms/custom-message/main.vue | 66 + .../forms/disable-styles/main.js | 4 + .../forms/disable-styles/main.vue | 95 + .../datetimepicker/forms/override/main.js | 4 + .../datetimepicker/forms/override/main.vue | 94 + .../datetimepicker/input-mode/main.js | 4 + .../datetimepicker/input-mode/main.vue | 50 + .../dateinputs/datetimepicker/json/main.js | 4 + .../dateinputs/datetimepicker/json/main.vue | 42 + .../datetimepicker/keyboard/main.js | 4 + .../datetimepicker/keyboard/main.vue | 23 + .../datetimepicker/overview/basic/main.js | 4 + .../datetimepicker/overview/basic/main.vue | 15 + .../datetimepicker/placeholders/main.js | 4 + .../datetimepicker/placeholders/main.vue | 40 + .../datetimepicker/ranges/date/main.js | 4 + .../datetimepicker/ranges/date/main.vue | 27 + .../datetimepicker/ranges/time/main.js | 4 + .../datetimepicker/ranges/time/main.vue | 27 + .../dateinputs/floating-label/main.js | 4 + .../dateinputs/floating-label/main.vue | 91 + .../dateinputs/globalization/es.json | 31 + .../dateinputs/globalization/main.js | 4 + .../dateinputs/globalization/main.vue | 95 + .../multiviewcalendar/keyboard/main.js | 4 + .../multiviewcalendar/keyboard/main.vue | 15 + .../DateInputsStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 47 + .../timepicker/appearance/fill-mode/main.js | 4 + .../timepicker/appearance/fill-mode/main.vue | 95 + .../timepicker/appearance/rounded/main.js | 4 + .../timepicker/appearance/rounded/main.vue | 111 + .../timepicker/appearance/size/main.js | 4 + .../timepicker/appearance/size/main.vue | 92 + .../timepicker/controlled-show/main.js | 4 + .../timepicker/controlled-show/main.vue | 39 + .../timepicker/controlled-value/main.js | 4 + .../timepicker/controlled-value/main.vue | 34 + .../custom/dateinput/CustomDateInput.vue | 46 + .../timepicker/custom/dateinput/main.js | 4 + .../timepicker/custom/dateinput/main.vue | 29 + .../timepicker/custom/popup/CustomPopup.vue | 27 + .../timepicker/custom/popup/main.js | 4 + .../timepicker/custom/popup/main.vue | 25 + .../timepicker/default-show/main.js | 4 + .../timepicker/default-show/main.vue | 25 + .../timepicker/default-value/main.js | 4 + .../timepicker/default-value/main.vue | 25 + .../dateinputs/timepicker/disabled/main.js | 4 + .../dateinputs/timepicker/disabled/main.vue | 16 + .../dateinputs/timepicker/events/main.js | 4 + .../dateinputs/timepicker/events/main.vue | 41 + .../timepicker/floating-label/main.js | 4 + .../timepicker/floating-label/main.vue | 31 + .../dateinputs/timepicker/formats/main.js | 4 + .../dateinputs/timepicker/formats/main.vue | 55 + .../dateinputs/timepicker/forms/basic/main.js | 4 + .../timepicker/forms/basic/main.vue | 60 + .../timepicker/forms/custom-message/main.js | 4 + .../timepicker/forms/custom-message/main.vue | 66 + .../timepicker/forms/disable-styles/main.js | 4 + .../timepicker/forms/disable-styles/main.vue | 95 + .../timepicker/forms/override/main.js | 4 + .../timepicker/forms/override/main.vue | 94 + .../dateinputs/timepicker/incremental/main.js | 4 + .../timepicker/incremental/main.vue | 31 + .../dateinputs/timepicker/input-mode/main.js | 4 + .../dateinputs/timepicker/input-mode/main.vue | 50 + .../dateinputs/timepicker/json/main.js | 4 + .../dateinputs/timepicker/json/main.vue | 42 + .../dateinputs/timepicker/keyboard/main.js | 4 + .../dateinputs/timepicker/keyboard/main.vue | 16 + .../timepicker/overview/basic/main.js | 4 + .../timepicker/overview/basic/main.vue | 17 + .../timepicker/placeholders/main.js | 4 + .../timepicker/placeholders/main.vue | 39 + .../dateinputs/timepicker/time-ranges/main.js | 4 + .../timepicker/time-ranges/main.vue | 29 + .../dialogs/dialog/action-buttons/main.js | 4 + .../dialogs/dialog/action-buttons/main.vue | 41 + .../dialogs/dialog/dimetions/main.js | 4 + .../dialogs/dialog/dimetions/main.vue | 41 + .../dialogs/dialog/keyboard/main.js | 4 + .../dialogs/dialog/keyboard/main.vue | 112 + .../dialogs/dialog/overview/main.js | 4 + .../dialogs/dialog/overview/main.vue | 37 + .../dialogs/dialog/rtl/main.js | 4 + .../dialogs/dialog/rtl/main.vue | 37 + .../dialogs/dialog/title/basic/main.js | 4 + .../dialogs/dialog/title/basic/main.vue | 16 + .../dialogs/dialog/title/no-title/main.js | 4 + .../dialogs/dialog/title/no-title/main.vue | 32 + .../dialog/title/title-template/main.js | 4 + .../dialog/title/title-template/main.vue | 27 + .../dialogs/dialog/visibility/main.js | 4 + .../dialogs/dialog/visibility/main.vue | 37 + .../dialogs/overview/main.js | 4 + .../dialogs/overview/main.vue | 51 + .../dialogs/window/basic/main.js | 4 + .../dialogs/window/basic/main.vue | 50 + .../dialogs/window/controlled/main.js | 4 + .../dialogs/window/controlled/main.vue | 63 + .../dialogs/window/dimensions/main.js | 4 + .../dialogs/window/dimensions/main.vue | 38 + .../dialogs/window/dragging/main.js | 4 + .../dialogs/window/dragging/main.vue | 38 + .../dialogs/window/events/main.js | 4 + .../dialogs/window/events/main.vue | 58 + .../dialogs/window/hide-buttons/main.js | 4 + .../dialogs/window/hide-buttons/main.vue | 61 + .../window/minimize-fullscreen/main.js | 4 + .../window/minimize-fullscreen/main.vue | 43 + .../dialogs/window/positioning/main.js | 4 + .../dialogs/window/positioning/main.vue | 30 + .../dialogs/window/resizable/main.js | 4 + .../dialogs/window/resizable/main.vue | 38 + .../dialogs/window/title-basic/main.js | 4 + .../dialogs/window/title-basic/main.vue | 32 + .../dialogs/window/title-component/Title.vue | 6 + .../dialogs/window/title-component/main.js | 4 + .../dialogs/window/title-component/main.vue | 35 + .../dialogs/window/title-no/main.js | 4 + .../dialogs/window/title-no/main.vue | 29 + .../DropDownStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 55 + .../autocomplete/appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 95 + .../autocomplete/appearance/rounded/main.js | 4 + .../autocomplete/appearance/rounded/main.vue | 110 + .../autocomplete/appearance/size/main.js | 4 + .../autocomplete/appearance/size/main.vue | 92 + .../dropdowns/autocomplete/basic/countries.js | 52 + .../dropdowns/autocomplete/basic/main.js | 4 + .../dropdowns/autocomplete/basic/main.vue | 23 + .../autocomplete/bindings/arrays/main.js | 4 + .../autocomplete/bindings/arrays/main.vue | 32 + .../autocomplete/bindings/datasets/main.js | 4 + .../autocomplete/bindings/datasets/main.vue | 38 + .../autocomplete/bindings/value/main.js | 4 + .../autocomplete/bindings/value/main.vue | 35 + .../autocomplete/common/countries.js | 52 + .../autocomplete/filtering/basic/main.js | 4 + .../autocomplete/filtering/basic/main.vue | 44 + .../autocomplete/filtering/loading/main.js | 4 + .../autocomplete/filtering/loading/main.vue | 54 + .../autocomplete/filtering/minfilter/main.js | 4 + .../autocomplete/filtering/minfilter/main.vue | 60 + .../autocomplete/forms/basic/main.js | 4 + .../autocomplete/forms/basic/main.vue | 73 + .../dropdowns/autocomplete/forms/countries.js | 52 + .../forms/custom-message/countries.js | 52 + .../autocomplete/forms/custom-message/main.js | 4 + .../forms/custom-message/main.vue | 72 + .../forms/disable-styles/countries.js | 52 + .../autocomplete/forms/disable-styles/main.js | 4 + .../forms/disable-styles/main.vue | 101 + .../autocomplete/forms/override/countries.js | 52 + .../autocomplete/forms/override/main.js | 4 + .../autocomplete/forms/override/main.vue | 100 + .../grouping/basic/grouping-data.js | 181 + .../autocomplete/grouping/basic/main.js | 4 + .../autocomplete/grouping/basic/main.vue | 27 + .../grouping-custom/GroupHeaderItemRender.vue | 21 + .../grouping/grouping-custom/ItemRender.vue | 42 + .../grouping-custom/StickyHeaderRender.vue | 22 + .../grouping/grouping-custom/grouping-data.js | 181 + .../grouping/grouping-custom/main.js | 4 + .../grouping/grouping-custom/main.vue | 63 + .../grouping-filtering/grouping-data.js | 181 + .../grouping/grouping-filtering/main.js | 4 + .../grouping/grouping-filtering/main.vue | 45 + .../header-footer/FooterRender.vue | 12 + .../header-footer/HeaderRender.vue | 12 + .../autocomplete/header-footer/countries.js | 52 + .../autocomplete/header-footer/main.js | 4 + .../autocomplete/header-footer/main.vue | 39 + .../autocomplete/item-render/ItemRender.vue | 40 + .../autocomplete/item-render/countries.js | 52 + .../autocomplete/item-render/main.js | 4 + .../autocomplete/item-render/main.vue | 38 + .../autocomplete/keyboard-navigation/main.js | 4 + .../autocomplete/keyboard-navigation/main.vue | 32 + .../nodata-render/NoDataRender.vue | 12 + .../autocomplete/nodata-render/main.js | 4 + .../autocomplete/nodata-render/main.vue | 30 + .../autocomplete/suggest/countries.js | 52 + .../dropdowns/autocomplete/suggest/main.js | 4 + .../dropdowns/autocomplete/suggest/main.vue | 46 + .../grouping-data.js | 200 + .../adaptive-rendering-grouping/main.js | 4 + .../adaptive-rendering-grouping/main.vue | 28 + .../combobox/adaptive-rendering/main.js | 4 + .../combobox/adaptive-rendering/main.vue | 56 + .../DropDownStyleConfigurator.vue | 105 + .../combobox/appearance/configurator/main.js | 4 + .../combobox/appearance/configurator/main.vue | 55 + .../combobox/appearance/fill-mode/main.js | 4 + .../combobox/appearance/fill-mode/main.vue | 95 + .../combobox/appearance/rounded/main.js | 4 + .../combobox/appearance/rounded/main.vue | 110 + .../combobox/appearance/size/main.js | 4 + .../combobox/appearance/size/main.vue | 92 + .../dropdowns/combobox/basic/main.js | 4 + .../dropdowns/combobox/basic/main.vue | 32 + .../combobox/bindings/arrays/main.js | 4 + .../combobox/bindings/arrays/main.vue | 32 + .../combobox/bindings/datasets/main.js | 4 + .../combobox/bindings/datasets/main.vue | 38 + .../combobox/bindings/value-primitive/main.js | 4 + .../bindings/value-primitive/main.vue | 61 + .../dropdowns/combobox/bindings/value/main.js | 4 + .../combobox/bindings/value/main.vue | 35 + .../dropdowns/combobox/cascading/data.js | 31 + .../dropdowns/combobox/cascading/main.js | 4 + .../dropdowns/combobox/cascading/main.vue | 85 + .../dropdowns/combobox/common/countries.js | 52 + .../combobox/custom-values/object/main.js | 4 + .../combobox/custom-values/object/main.vue | 51 + .../combobox/custom-values/primitive/main.js | 4 + .../combobox/custom-values/primitive/main.vue | 30 + .../combobox/filtering/basic/main.js | 4 + .../combobox/filtering/basic/main.vue | 40 + .../combobox/filtering/loading/main.js | 4 + .../combobox/filtering/loading/main.vue | 49 + .../combobox/filtering/minfilter/main.js | 4 + .../combobox/filtering/minfilter/main.vue | 42 + .../combobox/filtering/remote/main.js | 4 + .../combobox/filtering/remote/main.vue | 151 + .../dropdowns/combobox/forms/basic/main.js | 4 + .../dropdowns/combobox/forms/basic/main.vue | 75 + .../dropdowns/combobox/forms/countries.js | 52 + .../forms/custom-message/countries.js | 52 + .../combobox/forms/custom-message/main.js | 4 + .../combobox/forms/custom-message/main.vue | 72 + .../forms/disable-styles/countries.js | 52 + .../combobox/forms/disable-styles/main.js | 4 + .../combobox/forms/disable-styles/main.vue | 101 + .../combobox/forms/override/countries.js | 52 + .../dropdowns/combobox/forms/override/main.js | 4 + .../combobox/forms/override/main.vue | 100 + .../combobox/grouping/basic/grouping-data.js | 181 + .../dropdowns/combobox/grouping/basic/main.js | 4 + .../combobox/grouping/basic/main.vue | 31 + .../grouping/custom/GroupHeaderItemRender.vue | 21 + .../combobox/grouping/custom/ItemRender.vue | 42 + .../grouping/custom/StickyHeaderRender.vue | 22 + .../combobox/grouping/custom/grouping-data.js | 181 + .../combobox/grouping/custom/main.js | 4 + .../combobox/grouping/custom/main.vue | 63 + .../grouping/filtering/grouping-data.js | 181 + .../combobox/grouping/filtering/main.js | 4 + .../combobox/grouping/filtering/main.vue | 45 + .../combobox/grouping/virtualization/main.js | 4 + .../combobox/grouping/virtualization/main.vue | 107 + .../combobox/header-footer/FooterRender.vue | 12 + .../combobox/header-footer/HeaderRender.vue | 12 + .../combobox/header-footer/countries.js | 52 + .../dropdowns/combobox/header-footer/main.js | 4 + .../dropdowns/combobox/header-footer/main.vue | 40 + .../combobox/item-render/ItemRender.vue | 27 + .../combobox/item-render/countries.js | 52 + .../dropdowns/combobox/item-render/main.js | 4 + .../dropdowns/combobox/item-render/main.vue | 37 + .../combobox/keyboard-navigation/main.js | 4 + .../combobox/keyboard-navigation/main.vue | 27 + .../combobox/nodata-render/NoDataRender.vue | 12 + .../dropdowns/combobox/nodata-render/main.js | 4 + .../dropdowns/combobox/nodata-render/main.vue | 31 + .../dropdowns/combobox/suggest/countries.js | 52 + .../dropdowns/combobox/suggest/main.js | 4 + .../dropdowns/combobox/suggest/main.vue | 48 + .../combobox/virtualization/basic/main.js | 4 + .../combobox/virtualization/basic/main.vue | 57 + .../combobox/virtualization/filtering/main.js | 4 + .../virtualization/filtering/main.vue | 71 + .../dropdowns/common/es.json | 6 + .../grouping-data.js | 200 + .../adaptive-rendering-grouping/main.js | 4 + .../adaptive-rendering-grouping/main.vue | 28 + .../dropdownlist/adaptive-rendering/main.js | 4 + .../dropdownlist/adaptive-rendering/main.vue | 56 + .../DropDownStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 55 + .../dropdownlist/appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 95 + .../dropdownlist/appearance/rounded/main.js | 4 + .../dropdownlist/appearance/rounded/main.vue | 110 + .../dropdownlist/appearance/size/main.js | 4 + .../dropdownlist/appearance/size/main.vue | 92 + .../dropdowns/dropdownlist/basic/main.js | 4 + .../dropdowns/dropdownlist/basic/main.vue | 25 + .../dropdowns/dropdownlist/binding/main.js | 4 + .../dropdowns/dropdownlist/binding/main.vue | 57 + .../dropdowns/dropdownlist/cascading/data.js | 31 + .../dropdowns/dropdownlist/cascading/main.js | 4 + .../dropdowns/dropdownlist/cascading/main.vue | 96 + .../dropdownlist/common/countries.js | 52 + .../dropdownlist/default-item/basic/main.js | 4 + .../dropdownlist/default-item/basic/main.vue | 25 + .../default-item/object-values/main.js | 4 + .../default-item/object-values/main.vue | 32 + .../dropdowns/dropdownlist/events/main.js | 4 + .../dropdowns/dropdownlist/events/main.vue | 58 + .../dropdownlist/filtering/basic/main.js | 4 + .../dropdownlist/filtering/basic/main.vue | 41 + .../dropdownlist/filtering/delay/main.js | 4 + .../dropdownlist/filtering/delay/main.vue | 51 + .../dropdownlist/filtering/minfilter/main.js | 4 + .../dropdownlist/filtering/minfilter/main.vue | 44 + .../filtering/remote-data/main.js | 4 + .../filtering/remote-data/main.vue | 163 + .../dropdownlist/forms/basic/main.js | 4 + .../dropdownlist/forms/basic/main.vue | 71 + .../dropdowns/dropdownlist/forms/countries.js | 52 + .../forms/custom-message/countries.js | 52 + .../dropdownlist/forms/custom-message/main.js | 4 + .../forms/custom-message/main.vue | 72 + .../forms/disable-styles/countries.js | 52 + .../dropdownlist/forms/disable-styles/main.js | 4 + .../forms/disable-styles/main.vue | 101 + .../dropdownlist/forms/override/countries.js | 52 + .../dropdownlist/forms/override/main.js | 4 + .../dropdownlist/forms/override/main.vue | 100 + .../grouping/basic/grouping-data.js | 181 + .../dropdownlist/grouping/basic/main.js | 4 + .../dropdownlist/grouping/basic/main.vue | 26 + .../grouping/custom/GroupHeaderItemRender.vue | 21 + .../grouping/custom/ItemRender.vue | 42 + .../grouping/custom/StickyHeaderRender.vue | 22 + .../grouping/custom/grouping-data.js | 181 + .../dropdownlist/grouping/custom/main.js | 4 + .../dropdownlist/grouping/custom/main.vue | 62 + .../grouping/filtering/grouping-data.js | 181 + .../dropdownlist/grouping/filtering/main.js | 4 + .../dropdownlist/grouping/filtering/main.vue | 44 + .../grouping/virtualization/main.js | 4 + .../grouping/virtualization/main.vue | 107 + .../header-footer/FooterRender.vue | 12 + .../header-footer/HeaderRender.vue | 12 + .../dropdownlist/header-footer/countries.js | 52 + .../dropdownlist/header-footer/main.js | 4 + .../dropdownlist/header-footer/main.vue | 40 + .../dropdownlist/item-render/ItemRender.vue | 27 + .../dropdownlist/item-render/countries.js | 52 + .../dropdownlist/item-render/main.js | 4 + .../dropdownlist/item-render/main.vue | 37 + .../dropdowns/dropdownlist/keyboard/main.js | 4 + .../dropdowns/dropdownlist/keyboard/main.vue | 22 + .../nodata-render/NoDataRender.vue | 12 + .../dropdownlist/nodata-render/main.js | 4 + .../dropdownlist/nodata-render/main.vue | 31 + .../dropdownlist/primitive-value/main.js | 4 + .../dropdownlist/primitive-value/main.vue | 42 + .../dropdownlist/value-binding/main.js | 4 + .../dropdownlist/value-binding/main.vue | 33 + .../dropdownlist/value-field/main.jsx | 47 + .../dropdownlist/value-primitive/main.js | 4 + .../dropdownlist/value-primitive/main.vue | 61 + .../dropdownlist/value-render/ValueRender.vue | 24 + .../dropdownlist/value-render/countries.js | 52 + .../dropdownlist/value-render/main.js | 4 + .../dropdownlist/value-render/main.vue | 33 + .../virtualization-filtering/main.js | 4 + .../virtualization-filtering/main.vue | 75 + .../dropdownlist/virtualization/main.js | 4 + .../dropdownlist/virtualization/main.vue | 58 + .../dropdowntree/adaptive-rendering/main.js | 4 + .../dropdowntree/adaptive-rendering/main.vue | 82 + .../tree-data-operations.js | 31 + .../adaptive-rendering/tree-data.js | 15 + .../DropDownStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 95 + .../configurator/tree-data-operations.js | 31 + .../appearance/configurator/tree-data.js | 15 + .../dropdowntree/appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 145 + .../fill-mode/tree-data-operations.js | 31 + .../appearance/fill-mode/tree-data.js | 15 + .../dropdowntree/appearance/rounded/main.js | 4 + .../dropdowntree/appearance/rounded/main.vue | 162 + .../rounded/tree-data-operations.js | 31 + .../appearance/rounded/tree-data.js | 15 + .../dropdowntree/appearance/size/main.js | 4 + .../dropdowntree/appearance/size/main.vue | 122 + .../appearance/size/tree-data-operations.js | 31 + .../dropdowntree/appearance/size/tree-data.js | 15 + .../dropdowns/dropdowntree/basic/main.js | 4 + .../dropdowns/dropdowntree/basic/main.vue | 69 + .../basic/tree-data-operations.js | 31 + .../dropdowns/dropdowntree/basic/tree-data.js | 15 + .../dropdowntree/filtering-loading/main.js | 4 + .../dropdowntree/filtering-loading/main.vue | 85 + .../filtering-loading/tree-data-operations.js | 31 + .../filtering-loading/tree-data.js | 15 + .../dropdowns/dropdowntree/filtering/main.js | 4 + .../dropdowns/dropdowntree/filtering/main.vue | 80 + .../filtering/tree-data-operations.js | 31 + .../dropdowntree/filtering/tree-data.js | 15 + .../dropdowns/dropdowntree/form/basic/main.js | 4 + .../dropdowntree/form/basic/main.vue | 129 + .../form/basic/tree-data-operations.js | 31 + .../dropdowntree/form/custom-message/main.js | 4 + .../dropdowntree/form/custom-message/main.vue | 143 + .../custom-message/tree-data-operations.js | 31 + .../dropdowntree/form/disabled-styles/main.js | 4 + .../form/disabled-styles/main.vue | 156 + .../disabled-styles/tree-data-operations.js | 31 + .../dropdowntree/form/override/main.js | 4 + .../dropdowntree/form/override/main.vue | 154 + .../form/override/tree-data-operations.js | 31 + .../dropdowntree/header-footer/main.js | 4 + .../dropdowntree/header-footer/main.vue | 97 + .../header-footer/tree-data-operations.js | 31 + .../dropdowntree/header-footer/tree-data.js | 15 + .../dropdowntree/item-template/main.js | 4 + .../dropdowntree/item-template/main.vue | 98 + .../item-template/tree-data-operations.js | 31 + .../dropdowntree/item-template/tree-data.js | 28 + .../dropdowns/dropdowntree/no-data/main.js | 4 + .../dropdowns/dropdowntree/no-data/main.vue | 87 + .../no-data/tree-data-operations.js | 31 + .../dropdowns/dropdowntree/overview/main.js | 4 + .../dropdowns/dropdowntree/overview/main.vue | 65 + .../overview/tree-data-operations.js | 31 + .../dropdowntree/overview/tree-data.js | 15 + .../dropdowns/globalization/es.json | 6 + .../dropdowns/globalization/main.js | 4 + .../dropdowns/globalization/main.vue | 92 + vue-options-api-demos/dropdowns/label/main.js | 4 + .../dropdowns/label/main.vue | 168 + .../label/multiselecttree-data-operations.js | 107 + .../dropdowns/label/tree-data-operations.js | 31 + .../dropdowns/label/tree-data.js | 15 + .../grouping-data.js | 200 + .../adaptive-rendering-grouping/main.js | 4 + .../adaptive-rendering-grouping/main.vue | 28 + .../multiselect/adaptive-rendering/main.js | 4 + .../multiselect/adaptive-rendering/main.vue | 56 + .../allow-custom-object-data/main.js | 4 + .../allow-custom-object-data/main.vue | 58 + .../multiselect/allow-custom-values/main.js | 4 + .../multiselect/allow-custom-values/main.vue | 47 + .../DropDownStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 55 + .../multiselect/appearance/fill-mode/main.js | 4 + .../multiselect/appearance/fill-mode/main.vue | 95 + .../multiselect/appearance/rounded/main.js | 4 + .../multiselect/appearance/rounded/main.vue | 110 + .../multiselect/appearance/size/main.js | 4 + .../multiselect/appearance/size/main.vue | 92 + .../dropdowns/multiselect/basic/main.js | 4 + .../dropdowns/multiselect/basic/main.vue | 29 + .../dropdowns/multiselect/binding/main.js | 4 + .../dropdowns/multiselect/binding/main.vue | 26 + .../multiselect/complex-value/main.js | 4 + .../multiselect/complex-value/main.vue | 45 + .../dropdowns/multiselect/controlled/main.js | 4 + .../dropdowns/multiselect/controlled/main.vue | 33 + .../dropdowns/multiselect/events/countries.js | 52 + .../dropdowns/multiselect/events/main.js | 4 + .../dropdowns/multiselect/events/main.vue | 67 + .../multiselect/filtering/basic/countries.js | 52 + .../multiselect/filtering/basic/main.js | 4 + .../multiselect/filtering/basic/main.vue | 34 + .../filtering/minfilter/countries.js | 52 + .../multiselect/filtering/minfilter/main.js | 4 + .../multiselect/filtering/minfilter/main.vue | 39 + .../virtualization-remote-data/main.js | 4 + .../virtualization-remote-data/main.vue | 143 + .../filtering/with-delay/countries.js | 52 + .../multiselect/filtering/with-delay/main.js | 4 + .../multiselect/filtering/with-delay/main.vue | 44 + .../dropdowns/multiselect/forms/basic/main.js | 4 + .../multiselect/forms/basic/main.vue | 67 + .../dropdowns/multiselect/forms/basic/shop.js | 31 + .../multiselect/forms/custom-message/main.js | 4 + .../multiselect/forms/custom-message/main.vue | 71 + .../multiselect/forms/custom-message/shop.js | 31 + .../multiselect/forms/disable-styles/main.js | 4 + .../multiselect/forms/disable-styles/main.vue | 98 + .../multiselect/forms/disable-styles/shop.js | 31 + .../multiselect/forms/override/main.js | 4 + .../multiselect/forms/override/main.vue | 93 + .../multiselect/forms/override/shop.js | 31 + .../grouping/basic/grouping-data.js | 181 + .../multiselect/grouping/basic/main.js | 4 + .../multiselect/grouping/basic/main.vue | 30 + .../grouping/custom/GroupHeaderItemRender.vue | 21 + .../grouping/custom/ItemRender.vue | 42 + .../grouping/custom/StickyHeaderRender.vue | 22 + .../grouping/custom/grouping-data.js | 181 + .../multiselect/grouping/custom/main.js | 4 + .../multiselect/grouping/custom/main.vue | 62 + .../grouping/filtering/grouping-data.js | 200 + .../multiselect/grouping/filtering/main.js | 4 + .../multiselect/grouping/filtering/main.vue | 46 + .../grouping/virtualization/main.js | 4 + .../grouping/virtualization/main.vue | 107 + .../header-footer/FooterRender.vue | 12 + .../header-footer/HeaderRender.vue | 12 + .../multiselect/header-footer/countries.js | 52 + .../multiselect/header-footer/main.js | 4 + .../multiselect/header-footer/main.vue | 41 + .../multiselect/item-render/ItemRender.vue | 27 + .../multiselect/item-render/countries.js | 52 + .../dropdowns/multiselect/item-render/main.js | 4 + .../multiselect/item-render/main.vue | 38 + .../nodata-render/NoDataRender.vue | 12 + .../multiselect/nodata-render/main.js | 4 + .../multiselect/nodata-render/main.vue | 33 + .../multiselect/summary-tag/countries.js | 52 + .../dropdowns/multiselect/summary-tag/main.js | 4 + .../multiselect/summary-tag/main.vue | 45 + .../dropdowns/multiselect/tags/main.js | 4 + .../dropdowns/multiselect/tags/main.vue | 33 + .../dropdowns/multiselect/tags/styles.css | 10 + .../multiselect/value-primitive/main.js | 4 + .../multiselect/value-primitive/main.vue | 61 + .../multiselect/virtualization/basic/main.js | 4 + .../multiselect/virtualization/basic/main.vue | 60 + .../virtualization/filtering/main.js | 4 + .../virtualization/filtering/main.vue | 76 + .../adaptive-rendering/main.js | 4 + .../adaptive-rendering/main.vue | 88 + .../multiselecttree-data-operations.js | 107 + .../adaptive-rendering/tree-data.js | 15 + .../DropDownStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 112 + .../multiselecttree-data-operations.js | 107 + .../appearance/configurator/tree-data.js | 15 + .../appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 162 + .../multiselecttree-data-operations.js | 107 + .../appearance/fill-mode/tree-data.js | 15 + .../appearance/rounded/main.js | 4 + .../appearance/rounded/main.vue | 179 + .../multiselecttree-data-operations.js | 107 + .../appearance/rounded/tree-data.js | 15 + .../multiselecttree/appearance/size/main.js | 4 + .../multiselecttree/appearance/size/main.vue | 140 + .../size/multiselecttree-data-operations.js | 107 + .../appearance/size/tree-data.js | 15 + .../dropdowns/multiselecttree/basic/main.js | 4 + .../dropdowns/multiselecttree/basic/main.vue | 73 + .../basic/multiselecttree-data-operations.js | 107 + .../multiselecttree/basic/tree-data.js | 15 + .../dropdowns/multiselecttree/binding/main.js | 4 + .../multiselecttree/binding/main.vue | 78 + .../multiselecttree-data-operations.js | 107 + .../multiselecttree/binding/tree-data.js | 15 + .../multiselecttree/controlled/main.js | 4 + .../multiselecttree/controlled/main.vue | 98 + .../multiselecttree-data-operations.js | 107 + .../multiselecttree/controlled/tree-data.js | 15 + .../multiselecttree/custom-rendering/main.js | 4 + .../multiselecttree/custom-rendering/main.vue | 107 + .../multiselecttree-data-operations.js | 107 + .../custom-rendering/tree-files-data.js | 28 + .../filtering-with-delay/main.js | 4 + .../filtering-with-delay/main.vue | 92 + .../multiselecttree-data-operations.js | 107 + .../filtering-with-delay/tree-data.js | 15 + .../multiselecttree/filtering/main.js | 4 + .../multiselecttree/filtering/main.vue | 86 + .../multiselecttree-data-operations.js | 107 + .../multiselecttree/filtering/tree-data.js | 15 + .../multiselecttree/forms/basic/main.js | 4 + .../multiselecttree/forms/basic/main.vue | 152 + .../basic/multiselecttree-data-operations.js | 107 + .../forms/custom-message/main.js | 4 + .../forms/custom-message/main.vue | 156 + .../multiselecttree-data-operations.js | 107 + .../forms/disable-styles/main.js | 4 + .../forms/disable-styles/main.vue | 175 + .../multiselecttree-data-operations.js | 107 + .../multiselecttree/forms/override/main.js | 4 + .../multiselecttree/forms/override/main.vue | 174 + .../multiselecttree-data-operations.js | 107 + .../multiselecttree/header-footer/main.js | 4 + .../multiselecttree/header-footer/main.vue | 105 + .../multiselecttree-data-operations.js | 107 + .../header-footer/tree-data.js | 15 + .../dropdowns/multiselecttree/no-data/main.js | 4 + .../multiselecttree/no-data/main.vue | 43 + .../dropdowns/overview/main.js | 4 + .../dropdowns/overview/main.vue | 166 + .../multiselecttree-data-operations.js | 107 + .../overview/tree-data-operations.js | 31 + .../dropdowns/overview/tree-data.js | 15 + vue-options-api-demos/dropdowns/rtl/main.js | 4 + vue-options-api-demos/dropdowns/rtl/main.vue | 173 + .../rtl/multiselecttree-data-operations.js | 107 + .../dropdowns/rtl/tree-data-operations.js | 31 + .../dropdowns/rtl/tree-data.js | 15 + .../shared/DropDownStyleConfigurator.vue | 105 + .../dropdowns/shared/countries.js | 52 + .../dropdowns/shared/es.json | 6 + .../shared/multiselecttree-data-operations.js | 107 + .../dropdowns/shared/shop.js | 31 + .../dropdowns/shared/tree-data-operations.js | 31 + .../dropdowns/shared/tree-data.js | 15 + .../dropdowns/shared/tree-files-data.js | 28 + .../editor/all-tools/content.js | 3 + .../editor/all-tools/main.js | 4 + .../editor/all-tools/main.vue | 47 + .../editor/controlled-value-doc/main.js | 4 + .../editor/controlled-value-doc/main.vue | 39 + .../editor/controlled-value-string/main.js | 4 + .../editor/controlled-value-string/main.vue | 31 + .../edit-built-in-tools/content-basic.js | 3 + .../editor/edit-built-in-tools/main.js | 4 + .../editor/edit-built-in-tools/main.vue | 152 + .../editor/events/Logger.vue | 43 + .../editor/events/content.js | 3 + vue-options-api-demos/editor/events/main.js | 4 + vue-options-api-demos/editor/events/main.vue | 70 + .../editor/find-replace/content-overview.js | 3 + .../editor/find-replace/main.js | 4 + .../editor/find-replace/main.vue | 27 + .../editor/get-started/content.js | 3 + .../editor/get-started/main.js | 4 + .../editor/get-started/main.vue | 33 + .../editor/gets-and-sets-html/content.js | 3 + .../editor/gets-and-sets-html/main.js | 4 + .../editor/gets-and-sets-html/main.vue | 75 + .../editor/globalization/content.js | 3 + .../editor/globalization/deMessages.js | 43 + .../editor/globalization/main.js | 4 + .../editor/globalization/main.vue | 44 + vue-options-api-demos/editor/markdown/main.js | 4 + .../editor/markdown/main.vue | 70 + .../editor/markdown/markdown.js | 16 + .../editor/overview/content-overview.js | 3 + vue-options-api-demos/editor/overview/main.js | 4 + .../editor/overview/main.vue | 44 + vue-options-api-demos/editor/paste/main.js | 4 + vue-options-api-demos/editor/paste/main.vue | 64 + .../editor/plugins/placeholder/main.js | 4 + .../editor/plugins/placeholder/main.vue | 51 + .../editor/plugins/placeholder/placeholder.js | 38 + .../editor/plugins/readonly/content-basic.js | 3 + .../editor/plugins/readonly/main.js | 4 + .../editor/plugins/readonly/main.vue | 70 + .../editor/rendering-mode/main.js | 4 + .../editor/rendering-mode/main.vue | 35 + .../editor/rendering-mode/styles.css | 44 + .../editor/resizing/editor/content.js | 3 + .../editor/resizing/editor/main.js | 4 + .../editor/resizing/editor/main.vue | 42 + .../resizing/images/content-overview.js | 3 + .../editor/resizing/images/main.js | 4 + .../editor/resizing/images/main.vue | 61 + vue-options-api-demos/editor/rtl/content.js | 3 + vue-options-api-demos/editor/rtl/main.js | 4 + vue-options-api-demos/editor/rtl/main.vue | 38 + .../editor/schema-custom/content.js | 3 + .../editor/schema-custom/main.js | 4 + .../editor/schema-custom/main.vue | 58 + .../editor/schema-custom/schema-utils.js | 67 + .../editor/schema-custom/schema.js | 311 + .../editor/schema-edit/main.js | 4 + .../editor/schema-edit/main.vue | 70 + .../editor/schema-edit/new-mark.js | 16 + .../editor/schema-edit/new-node.js | 33 + .../editor/selection/cell/content.js | 48 + .../editor/selection/cell/main.js | 4 + .../editor/selection/cell/main.vue | 28 + .../editor/selection/get-html/content.js | 3 + .../editor/selection/get-html/main.js | 4 + .../editor/selection/get-html/main.vue | 75 + .../editor/selection/node/content.js | 3 + .../editor/selection/node/main.js | 4 + .../editor/selection/node/main.vue | 63 + .../editor/selection/select-all/content.js | 3 + .../editor/selection/select-all/main.js | 4 + .../editor/selection/select-all/main.vue | 47 + .../editor/selection/text/content.js | 3 + .../editor/selection/text/main.js | 4 + .../editor/selection/text/main.vue | 123 + .../editor/shared/content-basic.js | 3 + .../editor/shared/content-overview.js | 3 + .../editor/shared/content.js | 3 + .../editor/styling-iframe/content.js | 3 + .../editor/styling-iframe/main.js | 4 + .../editor/styling-iframe/main.vue | 40 + vue-options-api-demos/editor/tsconfig.json | 30 + vue-options-api-demos/excel/basic/main.js | 4 + vue-options-api-demos/excel/basic/main.vue | 74 + .../excel/basic/products.json | 1311 + .../excel/cells/data/main.js | 4 + .../excel/cells/data/main.vue | 35 + .../excel/cells/data/products.json | 1311 + .../excel/cells/footer/main.js | 4 + .../excel/cells/footer/main.vue | 48 + .../excel/cells/footer/products.json | 1311 + .../excel/cells/group-footer/main.js | 4 + .../excel/cells/group-footer/main.vue | 61 + .../excel/cells/group-footer/products.json | 1311 + .../excel/cells/group-header/main.js | 4 + .../excel/cells/group-header/main.vue | 48 + .../excel/cells/group-header/products.json | 1311 + .../excel/cells/header-padding/main.js | 4 + .../excel/cells/header-padding/main.vue | 44 + .../excel/cells/header-padding/products.json | 1311 + .../excel/cells/header/main.js | 4 + .../excel/cells/header/main.vue | 38 + .../excel/cells/header/products.json | 1311 + .../excel/cells/padding/main.js | 4 + .../excel/cells/padding/main.vue | 44 + .../excel/cells/padding/products.json | 1311 + .../excel/columns/footer/main.js | 4 + .../excel/columns/footer/main.vue | 36 + .../excel/columns/footer/products.json | 1311 + .../excel/columns/group-footer/main.js | 4 + .../excel/columns/group-footer/main.vue | 48 + .../excel/columns/group-footer/products.json | 1311 + .../excel/columns/group-header/main.js | 4 + .../excel/columns/group-header/main.vue | 46 + .../excel/columns/group-header/products.json | 1311 + .../excel/columns/hidden/main.js | 4 + .../excel/columns/hidden/main.vue | 44 + .../excel/columns/hidden/products.json | 1311 + .../excel/columns/locked/main.js | 4 + .../excel/columns/locked/main.vue | 43 + .../excel/columns/locked/products.json | 1311 + .../excel/columns/multi/main.js | 4 + .../excel/columns/multi/main.vue | 41 + .../excel/columns/multi/products.json | 1311 + vue-options-api-demos/excel/filtering/main.js | 4 + .../excel/filtering/main.vue | 31 + .../excel/filtering/products.json | 1311 + vue-options-api-demos/excel/rtl/main.js | 4 + vue-options-api-demos/excel/rtl/main.vue | 30 + vue-options-api-demos/excel/rtl/products.json | 1311 + .../excel/shared/products.json | 1311 + vue-options-api-demos/excel/workbook/main.js | 4 + vue-options-api-demos/excel/workbook/main.vue | 56 + .../excel/workbook/products.json | 1311 + .../form/advanced/changing/FormContent.vue | 66 + .../advanced/changing/FormNumericTextBox.vue | 80 + .../form/advanced/changing/main.js | 4 + .../form/advanced/changing/main.vue | 27 + .../advanced/dynamic-reset/FormContent.vue | 81 + .../form/advanced/dynamic-reset/FormInput.vue | 84 + .../form/advanced/dynamic-reset/main.js | 4 + .../form/advanced/dynamic-reset/main.vue | 50 + .../form/advanced/reading/FormContent.vue | 74 + .../advanced/reading/FormNumericTextBox.vue | 80 + .../form/advanced/reading/main.js | 4 + .../form/advanced/reading/main.vue | 28 + .../form/basic/FormContent.vue | 97 + .../form/basic/FormInput.vue | 84 + vue-options-api-demos/form/basic/main.js | 4 + vue-options-api-demos/form/basic/main.vue | 24 + .../advanced/FormContent.vue | 65 + .../custom-components/advanced/FormInput.vue | 84 + .../form/custom-components/advanced/main.js | 4 + .../form/custom-components/advanced/main.vue | 24 + .../custom-components/advanced/validators.js | 82 + .../custom-components/basic/FormContent.vue | 58 + .../custom-components/basic/FormInput.vue | 37 + .../form/custom-components/basic/main.js | 4 + .../form/custom-components/basic/main.vue | 24 + .../form/fieldarrayvalidation/CommandCell.vue | 35 + .../form/fieldarrayvalidation/FormContent.vue | 61 + .../form/fieldarrayvalidation/FormGrid.vue | 67 + .../form/fieldarrayvalidation/main.js | 4 + .../form/fieldarrayvalidation/main.vue | 24 + .../form/fieldvalidation/FormContent.vue | 73 + .../form/fieldvalidation/FormInput.vue | 84 + .../form/fieldvalidation/main.js | 4 + .../form/fieldvalidation/main.vue | 24 + .../form/formvalidation/FormContent.vue | 94 + .../form/formvalidation/FormInput.vue | 84 + .../form/formvalidation/main.js | 4 + .../form/formvalidation/main.vue | 38 + .../guideline/checkboxes/FormCheckbox.vue | 84 + .../form/guideline/checkboxes/FormContent.vue | 111 + .../guideline/checkboxes/FormRadioGroup.vue | 107 + .../form/guideline/checkboxes/data.js | 212 + .../form/guideline/checkboxes/main.js | 4 + .../form/guideline/checkboxes/main.vue | 23 + .../form/guideline/checkboxes/validators.js | 82 + .../guideline/datepickers/FormContent.vue | 127 + .../guideline/datepickers/FormDateInput.vue | 79 + .../guideline/datepickers/FormDatePicker.vue | 80 + .../datepickers/FormDateTimePicker.vue | 79 + .../guideline/datepickers/FormTimePicker.vue | 79 + .../form/guideline/datepickers/main.js | 4 + .../form/guideline/datepickers/main.vue | 23 + .../form/guideline/datepickers/validators.js | 82 + .../form/guideline/disabled/FormContent.vue | 82 + .../form/guideline/disabled/FormInput.vue | 84 + .../guideline/disabled/FormMaskedTextBox.vue | 88 + .../form/guideline/disabled/main.js | 4 + .../form/guideline/disabled/main.vue | 27 + .../guideline/dropdowns/FormAutoComplete.vue | 80 + .../form/guideline/dropdowns/FormComboBox.vue | 87 + .../form/guideline/dropdowns/FormContent.vue | 130 + .../guideline/dropdowns/FormDropDownList.vue | 82 + .../guideline/dropdowns/FormMultiSelect.vue | 82 + .../form/guideline/dropdowns/data.js | 212 + .../form/guideline/dropdowns/main.js | 4 + .../form/guideline/dropdowns/main.vue | 23 + .../form/guideline/dropdowns/validators.js | 82 + .../guideline/errormessages/FormContent.vue | 87 + .../guideline/errormessages/FormInput.vue | 84 + .../form/guideline/errormessages/main.js | 4 + .../form/guideline/errormessages/main.vue | 23 + .../guideline/errormessages/validators.js | 82 + .../form/guideline/floating/FormContent.vue | 91 + .../floating/FormFloatingNumericTextBox.vue | 86 + .../form/guideline/floating/main.js | 4 + .../form/guideline/floating/main.vue | 23 + .../form/guideline/floating/validators.js | 82 + .../guideline/formbuttons/FormCheckbox.vue | 84 + .../guideline/formbuttons/FormContent.vue | 112 + .../form/guideline/formbuttons/FormInput.vue | 84 + .../form/guideline/formbuttons/main.js | 4 + .../form/guideline/formbuttons/main.vue | 23 + .../form/guideline/formbuttons/validators.js | 82 + .../guideline/formcomponents/FormCheckbox.vue | 84 + .../guideline/formcomponents/FormContent.vue | 211 + .../formcomponents/FormDatePicker.vue | 80 + .../guideline/formcomponents/FormInput.vue | 84 + .../formcomponents/FormMaskedTextBox.vue | 88 + .../formcomponents/FormNumericTextBox.vue | 80 + .../guideline/formcomponents/FormTextArea.vue | 81 + .../form/guideline/formcomponents/main.js | 4 + .../form/guideline/formcomponents/main.vue | 23 + .../guideline/formcomponents/validators.js | 82 + .../guideline/formvalidation/FormCheckbox.vue | 84 + .../guideline/formvalidation/FormContent.vue | 127 + .../guideline/formvalidation/FormInput.vue | 84 + .../form/guideline/formvalidation/main.js | 4 + .../form/guideline/formvalidation/main.vue | 23 + .../guideline/formvalidation/validators.js | 82 + .../form/guideline/groups/FormCheckbox.vue | 84 + .../form/guideline/groups/FormContent.vue | 111 + .../form/guideline/groups/FormInput.vue | 84 + .../form/guideline/groups/main.js | 4 + .../form/guideline/groups/main.vue | 23 + .../form/guideline/groups/validators.js | 82 + .../form/guideline/hints/FormContent.vue | 91 + .../form/guideline/hints/FormDatePicker.vue | 80 + .../form/guideline/hints/FormInput.vue | 84 + .../form/guideline/hints/main.js | 4 + .../form/guideline/hints/main.vue | 23 + .../form/guideline/hints/validators.js | 82 + .../form/guideline/horizontal/FormContent.vue | 114 + .../form/guideline/horizontal/FormInput.vue | 84 + .../horizontal/FormMaskedTextBox.vue | 88 + .../form/guideline/horizontal/main.js | 4 + .../form/guideline/horizontal/main.vue | 23 + .../form/guideline/horizontal/validators.js | 82 + .../form/guideline/inputs/FormContent.vue | 157 + .../form/guideline/inputs/FormInput.vue | 84 + .../guideline/inputs/FormMaskedTextBox.vue | 88 + .../guideline/inputs/FormNumericTextBox.vue | 80 + .../form/guideline/inputs/FormSlider.vue | 89 + .../form/guideline/inputs/FormTextArea.vue | 81 + .../form/guideline/inputs/main.js | 4 + .../form/guideline/inputs/main.vue | 24 + .../form/guideline/inputs/validators.js | 82 + .../form/guideline/optional/FormContent.vue | 97 + .../optional/FormFloatingNumericTextBox.vue | 86 + .../guideline/optional/FormMaskedTextBox.vue | 88 + .../form/guideline/optional/main.js | 4 + .../form/guideline/optional/main.vue | 23 + .../form/guideline/optional/validators.js | 82 + .../guideline/placeholder/FormContent.vue | 71 + .../form/guideline/placeholder/FormInput.vue | 84 + .../form/guideline/placeholder/main.js | 4 + .../form/guideline/placeholder/main.vue | 23 + .../form/guideline/placeholder/validators.js | 82 + .../form/guideline/uploads/FormContent.vue | 78 + .../form/guideline/uploads/FormUpload.vue | 91 + .../form/guideline/uploads/main.js | 4 + .../form/guideline/uploads/main.vue | 23 + .../form/labels/FloatingLabelFormInput.vue | 92 + .../form/labels/FormContent.vue | 76 + .../form/labels/LabelFormInput.vue | 85 + vue-options-api-demos/form/labels/main.js | 4 + vue-options-api-demos/form/labels/main.vue | 24 + .../horizontal/FloatingLabelFormInput.vue | 84 + .../form/layout/horizontal/FormContent.vue | 76 + .../form/layout/horizontal/LabelFormInput.vue | 84 + .../form/layout/horizontal/main.js | 4 + .../form/layout/horizontal/main.vue | 24 + .../vertical/FloatingLabelFormInput.vue | 84 + .../form/layout/vertical/FormContent.vue | 76 + .../form/layout/vertical/LabelFormInput.vue | 83 + .../form/layout/vertical/main.js | 4 + .../form/layout/vertical/main.vue | 24 + .../form/shared/CommandCell.vue | 35 + .../form/shared/FormAutoComplete.vue | 80 + .../form/shared/FormCheckbox.vue | 84 + .../form/shared/FormComboBox.vue | 87 + .../form/shared/FormDateInput.vue | 79 + .../form/shared/FormDatePicker.vue | 80 + .../form/shared/FormDateTimePicker.vue | 79 + .../form/shared/FormDropDownList.vue | 82 + .../shared/FormFloatingNumericTextBox.vue | 86 + .../form/shared/FormGrid.vue | 67 + .../form/shared/FormInput.vue | 84 + .../form/shared/FormMaskedTextBox.vue | 88 + .../form/shared/FormMultiSelect.vue | 82 + .../form/shared/FormNumericTextBox.vue | 80 + .../form/shared/FormRadioGroup.vue | 107 + .../form/shared/FormSlider.vue | 89 + .../form/shared/FormTextArea.vue | 81 + .../form/shared/FormTimePicker.vue | 79 + .../form/shared/FormUpload.vue | 91 + vue-options-api-demos/form/shared/data.js | 212 + .../form/shared/tree-data-operations.js | 31 + .../form/shared/validators.js | 82 + .../gauges/arc-gauge/color-ranges/main.js | 4 + .../gauges/arc-gauge/color-ranges/main.vue | 45 + .../gauges/arc-gauge/overview/main.js | 4 + .../gauges/arc-gauge/overview/main.vue | 55 + .../gauges/arc-gauge/scale-options/main.js | 4 + .../gauges/arc-gauge/scale-options/main.vue | 202 + .../circular-gauge/center-template/main.js | 4 + .../circular-gauge/center-template/main.vue | 59 + .../circular-gauge/color-ranges/main.js | 4 + .../circular-gauge/color-ranges/main.vue | 45 + .../gauges/circular-gauge/overview/main.js | 4 + .../gauges/circular-gauge/overview/main.vue | 59 + .../circular-gauge/scale-options/main.js | 4 + .../circular-gauge/scale-options/main.vue | 207 + .../gauges/export-options/to-image/main.js | 4 + .../gauges/export-options/to-image/main.vue | 96 + .../gauges/export-options/to-pdf/main.js | 4 + .../gauges/export-options/to-pdf/main.vue | 92 + .../gauges/export-options/to-svg/main.js | 4 + .../gauges/export-options/to-svg/main.vue | 92 + .../gauges/globalization/main.js | 4 + .../gauges/globalization/main.vue | 98 + .../linear-gauge/multiple-pointers/main.js | 4 + .../linear-gauge/multiple-pointers/main.vue | 43 + .../gauges/linear-gauge/orientation/main.js | 4 + .../gauges/linear-gauge/orientation/main.vue | 40 + .../gauges/linear-gauge/overview/main.js | 4 + .../gauges/linear-gauge/overview/main.vue | 32 + .../gauges/linear-gauge/scale-options/main.js | 4 + .../linear-gauge/scale-options/main.vue | 207 + .../gauges/linear-gauge/scale-ranges/main.js | 4 + .../gauges/linear-gauge/scale-ranges/main.vue | 55 + vue-options-api-demos/gauges/overview/main.js | 4 + .../gauges/overview/main.vue | 75 + .../radial-gauge/multiple-pointers/main.js | 4 + .../radial-gauge/multiple-pointers/main.vue | 38 + .../gauges/radial-gauge/overview/main.js | 4 + .../gauges/radial-gauge/overview/main.vue | 30 + .../gauges/radial-gauge/scale-options/main.js | 4 + .../radial-gauge/scale-options/main.vue | 200 + .../gauges/radial-gauge/scale-ranges/main.js | 4 + .../gauges/radial-gauge/scale-ranges/main.vue | 52 + vue-options-api-demos/gauges/rtl/main.js | 4 + vue-options-api-demos/gauges/rtl/main.vue | 32 + .../grid/basic/BudgetComponent.vue | 23 + .../grid/basic/ContactNameComponent.vue | 26 + .../grid/basic/EngagementComponent.vue | 48 + .../grid/basic/FlagComponent.vue | 21 + vue-options-api-demos/grid/basic/Grid.vue | 512 + .../grid/basic/IsOnlineComponent.vue | 20 + .../grid/basic/employees.json | 1403 + vue-options-api-demos/grid/basic/en-US.js | 297 + vue-options-api-demos/grid/basic/es.js | 122 + vue-options-api-demos/grid/basic/fr.js | 123 + vue-options-api-demos/grid/basic/images.js | 79 + vue-options-api-demos/grid/basic/main.js | 4 + vue-options-api-demos/grid/basic/main.vue | 116 + .../grid/columns/column-menu/basic/main.js | 4 + .../grid/columns/column-menu/basic/main.vue | 68 + .../columns/column-menu/basic/products.js | 139 + .../column-menu/checkboxFilter/ColumnMenu.vue | 49 + .../column-menu/checkboxFilter/main.js | 4 + .../column-menu/checkboxFilter/main.vue | 90 + .../column-menu/checkboxFilter/products.js | 139 + .../columns/column-menu/custom-style/main.js | 4 + .../columns/column-menu/custom-style/main.vue | 111 + .../column-menu/custom-style/products.js | 139 + .../column-menu/custom-style/styles.css | 4 + .../columns/column-menu/custom/ColumnMenu.vue | 155 + .../grid/columns/column-menu/custom/main.js | 4 + .../grid/columns/column-menu/custom/main.vue | 111 + .../columns/column-menu/custom/products.js | 139 + .../flter-only-custom-icon/ColumnMenu.vue | 118 + .../flter-only-custom-icon/main.js | 4 + .../flter-only-custom-icon/main.vue | 143 + .../flter-only-custom-icon/products.js | 139 + .../columns/column-virtualization/main.js | 4 + .../columns/column-virtualization/main.vue | 63 + .../columns/dynamic-column-generation/main.js | 4 + .../dynamic-column-generation/main.vue | 84 + .../grid/columns/headers/main.js | 4 + .../grid/columns/headers/main.vue | 53 + .../grid/columns/hidden/Header.vue | 35 + .../grid/columns/hidden/main.js | 4 + .../grid/columns/hidden/main.vue | 95 + .../grid/columns/locked/main.js | 4 + .../grid/columns/locked/main.vue | 44 + .../grid/columns/locked/products.js | 1313 + .../grid/columns/reordering/main.js | 4 + .../grid/columns/reordering/main.vue | 44 + .../grid/columns/resizing/main.js | 4 + .../grid/columns/resizing/main.vue | 40 + .../widths/fit-smaller-screens/main.js | 4 + .../widths/fit-smaller-screens/main.vue | 74 + .../widths/fit-smaller-screens/products.json | 1233 + .../grid/columns/widths/minimum-width/main.js | 4 + .../columns/widths/minimum-width/main.vue | 96 + .../widths/minimum-width/products.json | 1233 + .../widths/percentage-no-fixed-width/main.js | 4 + .../widths/percentage-no-fixed-width/main.vue | 69 + .../percentage-no-fixed-width/products.json | 1233 + .../columns/widths/percentage-width/main.js | 4 + .../columns/widths/percentage-width/main.vue | 62 + .../widths/percentage-width/products.json | 1233 + vue-options-api-demos/grid/common/es.json | 55 + .../grid/common/northwind/categories.json | 43 + .../grid/common/northwind/customers.json | 1277 + .../grid/common/northwind/employees.json | 241 + .../grid/common/northwind/orders.json | 25576 ++++++++++++++++ .../grid/common/northwind/products.json | 927 + .../grid/common/northwind/regions.json | 239 + .../grid/common/northwind/shippers.json | 18 + .../grid/common/northwind/suppliers.json | 409 + .../grid/compact-grid/ChangeComponent.vue | 22 + .../ChangePercentageComponent.vue | 30 + .../grid/compact-grid/GridComponent.vue | 146 + .../grid/compact-grid/companyData.json | 1002 + .../grid/compact-grid/main.js | 4 + .../grid/compact-grid/main.vue | 50 + .../cells/component/ComponentInstance.vue | 37 + .../custom-rendering/cells/component/main.js | 4 + .../custom-rendering/cells/component/main.vue | 56 + .../custom-rendering/cells/function/main.js | 4 + .../custom-rendering/cells/function/main.vue | 61 + .../grid/custom-rendering/cells/slot/main.js | 4 + .../grid/custom-rendering/cells/slot/main.vue | 65 + .../detail/DetailComponent.vue | 27 + .../grid/custom-rendering/detail/main.js | 4 + .../grid/custom-rendering/detail/main.vue | 67 + .../grid/custom-rendering/detail/products.js | 72 + .../footer/component/ComponentInstance.vue | 37 + .../custom-rendering/footer/component/main.js | 4 + .../footer/component/main.vue | 70 + .../custom-rendering/footer/function/main.js | 4 + .../custom-rendering/footer/function/main.vue | 58 + .../grid/custom-rendering/footer/slot/main.js | 4 + .../custom-rendering/footer/slot/main.vue | 55 + .../group-header/CustomCell.vue | 65 + .../custom-rendering/group-header/main.js | 4 + .../custom-rendering/group-header/main.vue | 104 + .../custom-rendering/grouping/CustomCell.vue | 66 + .../grid/custom-rendering/grouping/main.js | 4 + .../grid/custom-rendering/grouping/main.vue | 105 + .../headers/component/ComponentInstance.vue | 37 + .../headers/component/main.js | 4 + .../headers/component/main.vue | 70 + .../custom-rendering/headers/function/main.js | 4 + .../headers/function/main.vue | 58 + .../custom-rendering/headers/slot/main.js | 4 + .../custom-rendering/headers/slot/main.vue | 55 + .../hierarchy/DetailComponent.vue | 38 + .../grid/custom-rendering/hierarchy/main.js | 4 + .../grid/custom-rendering/hierarchy/main.vue | 61 + .../custom-rendering/hierarchy/products.js | 1313 + .../custom-rendering/loader-template/main.js | 4 + .../custom-rendering/loader-template/main.vue | 130 + .../row-reorder/CustomCell.vue | 33 + .../grid/custom-rendering/row-reorder/main.js | 4 + .../custom-rendering/row-reorder/main.vue | 74 + .../local-data-operations/main.js | 4 + .../local-data-operations/main.vue | 182 + .../data-binding/odata4-crud/CommandCell.vue | 73 + .../grid/data-binding/odata4-crud/main.js | 4 + .../grid/data-binding/odata4-crud/main.vue | 252 + .../grid/editing/basic/main.js | 4 + .../grid/editing/basic/main.vue | 100 + .../grid/editing/custom/CommandCell.vue | 61 + .../grid/editing/custom/DropDownCell.vue | 42 + .../grid/editing/custom/main.js | 4 + .../grid/editing/custom/main.vue | 207 + .../grid/editing/external/CommandCell.vue | 49 + .../grid/editing/external/DialogContainer.vue | 88 + .../grid/editing/external/data.js | 184 + .../grid/editing/external/main.js | 4 + .../grid/editing/external/main.vue | 104 + .../grid/editing/incell/main.js | 4 + .../grid/editing/incell/main.vue | 159 + .../grid/editing/inline-form/CommandCell.vue | 57 + .../grid/editing/inline-form/FormContent.vue | 57 + .../grid/editing/inline-form/FormInput.vue | 89 + .../grid/editing/inline-form/NameCell.vue | 58 + .../grid/editing/inline-form/main.js | 4 + .../grid/editing/inline-form/main.vue | 212 + .../inline-form/verificationFunctions.js | 5 + .../grid/editing/inline/CommandCell.vue | 73 + .../grid/editing/inline/main.js | 4 + .../grid/editing/inline/main.vue | 199 + .../grid/editing/validation/CommandCell.vue | 62 + .../editing/validation/DatePickerCell.vue | 49 + .../grid/editing/validation/InputCell.vue | 47 + .../grid/editing/validation/NumericCell.vue | 50 + .../grid/editing/validation/main.js | 4 + .../grid/editing/validation/main.vue | 251 + .../grid/editing/validation/products.js | 26 + .../validation/verificationFunctions.js | 27 + vue-options-api-demos/grid/excel/main.js | 4 + vue-options-api-demos/grid/excel/main.vue | 58 + .../grid/filtering/basic/boolean/main.js | 4 + .../grid/filtering/basic/boolean/main.vue | 62 + .../grid/filtering/basic/boolean/products.js | 184 + .../grid/filtering/basic/date/main.js | 4 + .../grid/filtering/basic/date/main.vue | 67 + .../grid/filtering/basic/date/products.js | 184 + .../grid/filtering/basic/main.js | 4 + .../grid/filtering/basic/main.vue | 71 + .../grid/filtering/basic/number/main.js | 4 + .../grid/filtering/basic/number/main.vue | 62 + .../grid/filtering/basic/number/products.js | 184 + .../grid/filtering/basic/products.js | 184 + .../grid/filtering/basic/string/main.js | 4 + .../grid/filtering/basic/string/main.vue | 62 + .../grid/filtering/basic/string/products.js | 184 + .../grid/filtering/custom/main.js | 4 + .../grid/filtering/custom/main.vue | 87 + .../grid/filtering/custom/products.js | 185 + .../grid/filtering/external/main.js | 4 + .../grid/filtering/external/main.vue | 114 + .../grid/filtering/external/products.js | 184 + .../row/custom-daterangepicker/main.js | 4 + .../row/custom-daterangepicker/main.vue | 104 + .../row/custom-daterangepicker/products.js | 185 + .../filtering/row/custom-dropdownlist/main.js | 4 + .../row/custom-dropdownlist/main.vue | 96 + .../row/custom-dropdownlist/products.js | 185 + .../grid/filtering/row/custom-switch/main.js | 4 + .../grid/filtering/row/custom-switch/main.vue | 86 + .../filtering/row/custom-switch/products.js | 185 + .../grid/filtering/select-filter-type/main.js | 4 + .../filtering/select-filter-type/main.vue | 92 + .../filtering/select-filter-type/products.js | 184 + .../grid/globalization/main.js | 4 + .../grid/globalization/main.vue | 167 + .../grouping/aggregates/CellComponent.vue | 96 + .../grid/grouping/aggregates/main.js | 4 + .../grid/grouping/aggregates/main.vue | 138 + .../grid/grouping/basic/main.js | 4 + .../grid/grouping/basic/main.vue | 117 + .../grid/grouping/virtual/main.js | 4 + .../grid/grouping/virtual/main.vue | 117 + .../grid/grouping/virtual/products.js | 1313 + .../grid/keyboard-inline/CommandCell.vue | 80 + .../grid/keyboard-inline/main.js | 4 + .../grid/keyboard-inline/main.vue | 199 + .../keyboard-navigation/DetailComponent.vue | 39 + .../grid/keyboard-navigation/main.js | 4 + .../grid/keyboard-navigation/main.vue | 109 + .../grid/keyboard-navigation/products.js | 1313 + .../grid/live-data/ChangePriceComponent.vue | 31 + vue-options-api-demos/grid/live-data/Grid.vue | 200 + .../grid/live-data/PriceComponent.vue | 25 + .../grid/live-data/RatingComponent.vue | 37 + .../grid/live-data/TickerComponent.vue | 24 + .../grid/live-data/VolumeComponent.vue | 31 + .../grid/live-data/financial-data.js | 319 + vue-options-api-demos/grid/live-data/main.js | 4 + vue-options-api-demos/grid/live-data/main.vue | 100 + .../grid/live-data/services.js | 52 + .../grid/live-data/trends.js | 18 + vue-options-api-demos/grid/live-data/utils.js | 60 + .../grid/paging/basic/main.js | 4 + .../grid/paging/basic/main.vue | 88 + .../grid/paging/types/main.js | 4 + .../grid/paging/types/main.vue | 166 + .../grid/pdf/all-pages/main.js | 4 + .../grid/pdf/all-pages/main.vue | 83 + vue-options-api-demos/grid/pdf/basic/main.js | 4 + vue-options-api-demos/grid/pdf/basic/main.vue | 83 + .../grid/pdf/custom-columns/main.js | 4 + .../grid/pdf/custom-columns/main.vue | 101 + .../grid/pdf/custom-fonts/main.js | 4 + .../grid/pdf/custom-fonts/main.vue | 84 + .../grid/pdf/custom-fonts/styles.css | 38 + .../grid/pdf/fit-content/main.js | 4 + .../grid/pdf/fit-content/main.vue | 86 + .../grid/pdf/page-template/main.js | 4 + .../grid/pdf/page-template/main.vue | 96 + .../grid/performance/main.js | 4 + .../grid/performance/main.vue | 145 + .../grid/persist-state/ColumnMenu.vue | 190 + .../grid/persist-state/DetailComponent.vue | 24 + .../grid/persist-state/es.json | 55 + .../grid/persist-state/main.js | 4 + .../grid/persist-state/main.vue | 349 + .../grid/persist-state/orders.json | 25576 ++++++++++++++++ .../grid/print/control-column-widths/main.js | 4 + .../grid/print/control-column-widths/main.vue | 130 + .../print/control-column-widths/products.json | 1233 + .../grid/print/pageable/main.js | 4 + .../grid/print/pageable/main.vue | 150 + .../grid/print/scrollable-controlled/main.js | 4 + .../grid/print/scrollable-controlled/main.vue | 158 + .../print/scrollable-controlled/products.json | 1233 + .../grid/print/scrollable/main.js | 4 + .../grid/print/scrollable/main.vue | 113 + .../grid/responsive-columns/basic/main.js | 4 + .../grid/responsive-columns/basic/main.vue | 67 + .../responsive-columns/basic/products.json | 1233 + .../column-virtualization/main.js | 4 + .../column-virtualization/main.vue | 68 + .../grid/responsive-columns/height/main.js | 4 + .../grid/responsive-columns/height/main.vue | 68 + .../multicolumn-grid/main.js | 4 + .../multicolumn-grid/main.vue | 117 + .../grid/rowreorder/component/CustomCell.vue | 92 + .../grid/rowreorder/component/DragClue.vue | 50 + .../grid/rowreorder/component/DragPointer.vue | 15 + .../grid/rowreorder/component/common.js | 84 + .../grid/rowreorder/component/main.js | 4 + .../grid/rowreorder/component/main.vue | 116 + .../grid/rowreorder/css/CustomCell.vue | 98 + .../grid/rowreorder/css/DragClue.vue | 50 + .../grid/rowreorder/css/common.js | 84 + .../grid/rowreorder/css/main.js | 4 + .../grid/rowreorder/css/main.vue | 113 + .../grid/rows/sticky/main.js | 4 + .../grid/rows/sticky/main.vue | 185 + .../grid/rows/sticky/products.json | 1312 + .../grid/scroll-modes/basic/main.js | 4 + .../grid/scroll-modes/basic/main.vue | 68 + .../grid/scroll-modes/custom/main.js | 4 + .../grid/scroll-modes/custom/main.vue | 90 + .../grid/scroll-modes/infinite/main.js | 4 + .../grid/scroll-modes/infinite/main.vue | 46 + .../grid/scroll-modes/infinite/products.json | 1233 + .../grid/selection/basic/main.js | 4 + .../grid/selection/basic/main.vue | 63 + .../grid/selection/custom/main.js | 4 + .../grid/selection/custom/main.vue | 61 + .../grid/selection/custom/products.js | 125 + .../grid/shared/categories.json | 43 + .../grid/shared/customers.json | 1277 + .../grid/shared/employees.json | 241 + vue-options-api-demos/grid/shared/es.json | 55 + vue-options-api-demos/grid/shared/keys.js | 21 + vue-options-api-demos/grid/shared/orders.json | 25576 ++++++++++++++++ .../grid/shared/products.json | 1233 + .../grid/shared/regions.json | 239 + .../grid/shared/sample-products.js | 182 + .../grid/shared/shippers.json | 18 + .../grid/shared/suppliers.json | 409 + .../grid/sorting/basic/main.js | 4 + .../grid/sorting/basic/main.vue | 80 + .../grid/sorting/custom/main.js | 4 + .../grid/sorting/custom/main.vue | 100 + .../grid/styling/styling-cell/main.js | 4 + .../grid/styling/styling-cell/main.vue | 51 + .../grid/styling/styling-cell/products.json | 1233 + .../grid/styling/styling-class-name/main.js | 4 + .../grid/styling/styling-class-name/main.vue | 38 + .../styling/styling-class-name/products.json | 1233 + .../grid/styling/styling-dynamic/main.js | 4 + .../grid/styling/styling-dynamic/main.vue | 81 + .../grid/styling/styling-header-cell/main.js | 4 + .../grid/styling/styling-header-cell/main.vue | 40 + .../styling/styling-header-cell/products.json | 1233 + .../grid/styling/styling-row/main.js | 4 + .../grid/styling/styling-row/main.vue | 50 + .../grid/styling/styling-row/products.json | 1233 + .../indicators/badge/alignment/main.js | 4 + .../indicators/badge/alignment/main.vue | 112 + .../indicators/badge/container/main.js | 4 + .../indicators/badge/container/main.vue | 131 + .../indicators/badge/cutout-border/main.js | 4 + .../indicators/badge/cutout-border/main.vue | 58 + .../indicators/badge/fill/main.js | 4 + .../indicators/badge/fill/main.vue | 44 + .../indicators/badge/overview/Contacts.vue | 133 + .../indicators/badge/overview/SocialApps.vue | 66 + .../indicators/badge/overview/Status.vue | 45 + .../indicators/badge/overview/main.js | 4 + .../indicators/badge/overview/main.vue | 32 + .../indicators/badge/position/main.js | 4 + .../indicators/badge/position/main.vue | 68 + .../indicators/badge/positioning/main.js | 4 + .../indicators/badge/positioning/main.vue | 156 + .../indicators/badge/rounded/main.js | 4 + .../indicators/badge/rounded/main.vue | 62 + .../indicators/badge/size/main.js | 4 + .../indicators/badge/size/main.vue | 61 + .../indicators/badge/theme-color/main.js | 4 + .../indicators/badge/theme-color/main.vue | 62 + .../indicators/get-started/main.js | 4 + .../indicators/get-started/main.vue | 14 + .../indicators/globalization/main.js | 4 + .../indicators/globalization/main.vue | 145 + .../indicators/loader/overview/main.js | 4 + .../indicators/loader/overview/main.vue | 53 + .../indicators/loader/size/main.js | 4 + .../indicators/loader/size/main.vue | 22 + .../indicators/loader/theme-color/main.js | 4 + .../indicators/loader/theme-color/main.vue | 51 + .../indicators/loader/type/main.js | 4 + .../indicators/loader/type/main.vue | 25 + .../indicators/overview/main.js | 4 + .../indicators/overview/main.vue | 177 + .../indicators/skeleton/animation/main.js | 4 + .../indicators/skeleton/animation/main.vue | 175 + .../indicators/skeleton/dynamic/main.js | 4 + .../indicators/skeleton/dynamic/main.vue | 133 + .../indicators/skeleton/overview/main.js | 4 + .../indicators/skeleton/overview/main.vue | 125 + .../indicators/skeleton/shape/main.js | 4 + .../indicators/skeleton/shape/main.vue | 54 + vue-options-api-demos/inputs/basic/main.js | 4 + vue-options-api-demos/inputs/basic/main.vue | 126 + .../CheckboxStyleConfigurator.vue | 80 + .../checkbox/appearance/configurator/main.js | 4 + .../checkbox/appearance/configurator/main.vue | 36 + .../checkbox/appearance/rounded/main.js | 4 + .../checkbox/appearance/rounded/main.vue | 56 + .../inputs/checkbox/appearance/size/main.js | 4 + .../inputs/checkbox/appearance/size/main.vue | 49 + .../checkbox/controlled/checked/main.js | 4 + .../checkbox/controlled/checked/main.vue | 44 + .../inputs/checkbox/controlled/value/main.js | 4 + .../inputs/checkbox/controlled/value/main.vue | 44 + .../inputs/checkbox/default/main.js | 4 + .../inputs/checkbox/default/main.vue | 15 + .../inputs/checkbox/disabled/main.js | 4 + .../inputs/checkbox/disabled/main.vue | 17 + .../inputs/checkbox/form/basic/main.js | 4 + .../inputs/checkbox/form/basic/main.vue | 76 + .../checkbox/form/custom-message/main.js | 4 + .../checkbox/form/custom-message/main.vue | 83 + .../checkbox/form/disable-styles/main.js | 4 + .../checkbox/form/disable-styles/main.vue | 85 + .../form/kendo-vue-form/FormCheckbox.vue | 84 + .../form/kendo-vue-form/FormContent.vue | 106 + .../form/kendo-vue-form/FormInput.vue | 94 + .../checkbox/form/kendo-vue-form/main.js | 4 + .../checkbox/form/kendo-vue-form/main.vue | 23 + .../inputs/checkbox/form/override/main.js | 4 + .../inputs/checkbox/form/override/main.vue | 100 + .../inputs/checkbox/keyboard/main.js | 4 + .../inputs/checkbox/keyboard/main.vue | 20 + .../inputs/checkbox/labels/custom/main.js | 4 + .../inputs/checkbox/labels/custom/main.vue | 26 + .../inputs/checkbox/labels/setup/main.js | 4 + .../inputs/checkbox/labels/setup/main.vue | 22 + .../inputs/checkbox/main/main.js | 4 + .../inputs/checkbox/main/main.vue | 20 + .../colorgradient/colorcontrast/main.js | 4 + .../colorgradient/colorcontrast/main.vue | 43 + .../inputs/colorgradient/controlled/main.js | 4 + .../inputs/colorgradient/controlled/main.vue | 31 + .../inputs/colorgradient/disabled/main.js | 4 + .../inputs/colorgradient/disabled/main.vue | 19 + .../inputs/colorgradient/events/Logger.vue | 43 + .../inputs/colorgradient/events/main.js | 5 + .../inputs/colorgradient/events/main.vue | 39 + .../inputs/colorgradient/keyboard/main.js | 4 + .../inputs/colorgradient/keyboard/main.vue | 14 + .../inputs/colorgradient/opacity/main.js | 4 + .../inputs/colorgradient/opacity/main.vue | 29 + .../inputs/colorgradient/overview/main.js | 4 + .../inputs/colorgradient/overview/main.vue | 46 + .../inputs/colorpalette/controlled/main.js | 4 + .../inputs/colorpalette/controlled/main.vue | 33 + .../inputs/colorpalette/custom/main.js | 4 + .../inputs/colorpalette/custom/main.vue | 21 + .../inputs/colorpalette/disabled/main.js | 4 + .../inputs/colorpalette/disabled/main.vue | 14 + .../inputs/colorpalette/keyboard/main.js | 4 + .../inputs/colorpalette/keyboard/main.vue | 26 + .../colorpalette/overview/basic/main.js | 4 + .../colorpalette/overview/basic/main.vue | 56 + .../colorpalette/overview/basic/styles.css | 56 + .../colorpalette/overview/events/Logger.vue | 43 + .../colorpalette/overview/events/main.js | 4 + .../colorpalette/overview/events/main.vue | 39 + .../inputs/colorpalette/presets/main.js | 4 + .../inputs/colorpalette/presets/main.vue | 67 + .../colorpicker/adaptive-rendering/main.js | 4 + .../colorpicker/adaptive-rendering/main.vue | 23 + .../appearance/ColorPickerConfigurator.vue | 105 + .../inputs/colorpicker/appearance/main.js | 4 + .../inputs/colorpicker/appearance/main.vue | 42 + .../inputs/colorpicker/colorcontrast/main.js | 4 + .../inputs/colorpicker/colorcontrast/main.vue | 49 + .../colorpicker/controlled/popup/main.js | 4 + .../colorpicker/controlled/popup/main.vue | 40 + .../colorpicker/controlled/value/main.js | 4 + .../colorpicker/controlled/value/main.vue | 33 + .../colorpicker/custom/custom-icons/main.js | 4 + .../colorpicker/custom/custom-icons/main.vue | 17 + .../colorpicker/custom/gradient/main.js | 4 + .../colorpicker/custom/gradient/main.vue | 26 + .../colorpicker/custom/kendo-icons/main.js | 4 + .../colorpicker/custom/kendo-icons/main.vue | 21 + .../inputs/colorpicker/custom/palette/main.js | 4 + .../colorpicker/custom/palette/main.vue | 57 + .../inputs/colorpicker/default/main.js | 4 + .../inputs/colorpicker/default/main.vue | 22 + .../inputs/colorpicker/disabled/main.js | 4 + .../inputs/colorpicker/disabled/main.vue | 14 + .../inputs/colorpicker/events/Logger.vue | 43 + .../inputs/colorpicker/events/main.js | 5 + .../inputs/colorpicker/events/main.vue | 57 + .../inputs/colorpicker/keyboard/main.js | 4 + .../inputs/colorpicker/keyboard/main.vue | 26 + .../inputs/colorpicker/overview/main.js | 4 + .../inputs/colorpicker/overview/main.vue | 28 + .../inputs/colorpicker/view/combined/main.js | 4 + .../inputs/colorpicker/view/combined/main.vue | 36 + .../inputs/colorpicker/view/popup/main.js | 4 + .../inputs/colorpicker/view/popup/main.vue | 46 + vue-options-api-demos/inputs/common/es.json | 6 + .../inputs/flatcolorpicker/basic/main.js | 4 + .../inputs/flatcolorpicker/basic/main.vue | 14 + .../customization/footer/main.js | 4 + .../customization/footer/main.vue | 14 + .../customization/header/main.js | 4 + .../customization/header/main.vue | 14 + .../inputs/flatcolorpicker/disabled/main.js | 4 + .../inputs/flatcolorpicker/disabled/main.vue | 14 + .../inputs/flatcolorpicker/events/Logger.vue | 43 + .../inputs/flatcolorpicker/events/main.js | 5 + .../inputs/flatcolorpicker/events/main.vue | 45 + .../inputs/flatcolorpicker/keyboard/main.js | 4 + .../inputs/flatcolorpicker/keyboard/main.vue | 19 + .../inputs/floating-labels/main.js | 4 + .../inputs/floating-labels/main.vue | 59 + .../inputs/get-started/main.js | 4 + .../inputs/get-started/main.vue | 14 + .../inputs/globalization/es.json | 11 + .../inputs/globalization/main.js | 4 + .../inputs/globalization/main.vue | 54 + .../InputStyleConfigurator copy.vue | 105 + .../configurator/InputStyleConfigurator.vue | 105 + .../input/appearance/configurator/main.js | 4 + .../input/appearance/configurator/main.vue | 42 + .../inputs/input/appearance/fill-mode/main.js | 4 + .../input/appearance/fill-mode/main.vue | 54 + .../inputs/input/appearance/rounded/main.js | 4 + .../inputs/input/appearance/rounded/main.vue | 58 + .../inputs/input/appearance/size/main.js | 4 + .../inputs/input/appearance/size/main.vue | 53 + .../inputs/input/basic/main.js | 4 + .../inputs/input/basic/main.vue | 17 + .../inputs/input/forms/basic/main.js | 4 + .../inputs/input/forms/basic/main.vue | 83 + .../inputs/input/forms/custom-message/main.js | 4 + .../input/forms/custom-message/main.vue | 88 + .../inputs/input/forms/disable-styles/main.js | 4 + .../input/forms/disable-styles/main.vue | 84 + .../inputs/input/forms/override/main.js | 4 + .../inputs/input/forms/override/main.vue | 99 + .../adornments/clear-button/main.js | 4 + .../adornments/clear-button/main.vue | 25 + .../adornments/disabled/InputIcons.vue | 24 + .../maskedtextbox/adornments/disabled/main.js | 4 + .../adornments/disabled/main.vue | 43 + .../adornments/icon-name/main.js | 4 + .../adornments/icon-name/main.vue | 25 + .../adornments/loading-icon/main.js | 4 + .../adornments/loading-icon/main.vue | 25 + .../adornments/prefix/InputIcons.vue | 15 + .../maskedtextbox/adornments/prefix/main.js | 4 + .../maskedtextbox/adornments/prefix/main.vue | 31 + .../adornments/separator/main.js | 4 + .../adornments/separator/main.vue | 33 + .../maskedtextbox/adornments/suffix/main.js | 4 + .../maskedtextbox/adornments/suffix/main.vue | 27 + .../adornments/validation-icon/main.js | 4 + .../adornments/validation-icon/main.vue | 39 + .../MaskedTextBoxStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 49 + .../appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 71 + .../maskedtextbox/appearance/rounded/main.js | 4 + .../maskedtextbox/appearance/rounded/main.vue | 80 + .../maskedtextbox/appearance/size/main.js | 4 + .../maskedtextbox/appearance/size/main.vue | 70 + .../inputs/maskedtextbox/basic/main.js | 4 + .../inputs/maskedtextbox/basic/main.vue | 31 + .../inputs/maskedtextbox/disabled/main.js | 4 + .../inputs/maskedtextbox/disabled/main.vue | 21 + .../forms/custom-message/main.js | 4 + .../forms/custom-message/main.vue | 75 + .../maskedtextbox/forms/disable-style/main.js | 4 + .../forms/disable-style/main.vue | 72 + .../maskedtextbox/forms/enforce/main.js | 4 + .../maskedtextbox/forms/enforce/main.vue | 80 + .../maskedtextbox/forms/validation/main.js | 4 + .../maskedtextbox/forms/validation/main.vue | 78 + .../inputs/maskedtextbox/input-mode/main.js | 4 + .../inputs/maskedtextbox/input-mode/main.vue | 76 + .../inputs/maskedtextbox/masks/basic/main.js | 4 + .../inputs/maskedtextbox/masks/basic/main.vue | 22 + .../inputs/maskedtextbox/masks/extend/main.js | 4 + .../maskedtextbox/masks/extend/main.vue | 38 + .../inputs/maskedtextbox/readonly/main.js | 4 + .../inputs/maskedtextbox/readonly/main.vue | 21 + .../inputs/maskedtextbox/valid-state/main.js | 4 + .../inputs/maskedtextbox/valid-state/main.vue | 49 + .../inputs/maskedtextbox/value/main.js | 4 + .../inputs/maskedtextbox/value/main.vue | 29 + .../adornments/clear-button/main.js | 4 + .../adornments/clear-button/main.vue | 15 + .../adornments/disabled/InputIcons.vue | 15 + .../adornments/disabled/main.js | 4 + .../adornments/disabled/main.vue | 25 + .../adornments/icon-name/main.js | 4 + .../adornments/icon-name/main.vue | 15 + .../adornments/loading-icon/main.js | 4 + .../adornments/loading-icon/main.vue | 15 + .../adornments/prefix/InputIcons.vue | 15 + .../numerictextbox/adornments/prefix/main.js | 4 + .../numerictextbox/adornments/prefix/main.vue | 21 + .../adornments/separator/main.js | 4 + .../adornments/separator/main.vue | 22 + .../numerictextbox/adornments/suffix/main.js | 4 + .../numerictextbox/adornments/suffix/main.vue | 17 + .../adornments/validation-icon/main.js | 4 + .../adornments/validation-icon/main.vue | 22 + .../NumericTextBoxStyleConfigurator.vue | 105 + .../appearance/configurator/main.js | 4 + .../appearance/configurator/main.vue | 47 + .../appearance/fill-mode/main.js | 4 + .../appearance/fill-mode/main.vue | 54 + .../numerictextbox/appearance/rounded/main.js | 4 + .../appearance/rounded/main.vue | 58 + .../numerictextbox/appearance/size/main.js | 4 + .../numerictextbox/appearance/size/main.vue | 53 + .../inputs/numerictextbox/basic/main.js | 4 + .../inputs/numerictextbox/basic/main.vue | 52 + .../custom-parse-format/main.js | 4 + .../custom-parse-format/main.vue | 55 + .../inputs/numerictextbox/formats/main.js | 4 + .../inputs/numerictextbox/formats/main.vue | 50 + .../inputs/numerictextbox/forms/basic/main.js | 4 + .../numerictextbox/forms/basic/main.vue | 72 + .../forms/custom-message/main.js | 4 + .../forms/custom-message/main.vue | 78 + .../forms/disable-styles/main.js | 4 + .../forms/disable-styles/main.vue | 81 + .../numerictextbox/forms/override/main.js | 4 + .../numerictextbox/forms/override/main.vue | 91 + .../inputs/numerictextbox/input-mode/main.js | 4 + .../inputs/numerictextbox/input-mode/main.vue | 52 + .../inputs/numerictextbox/keyboard/main.js | 4 + .../inputs/numerictextbox/keyboard/main.vue | 18 + .../numerictextbox/predefined-step/main.js | 4 + .../numerictextbox/predefined-step/main.vue | 19 + .../numerictextbox/spin-buttons/main.js | 4 + .../numerictextbox/spin-buttons/main.vue | 20 + .../inputs/radiobutton/appearance/main.js | 4 + .../inputs/radiobutton/appearance/main.vue | 49 + .../inputs/radiobutton/disabled/main.js | 4 + .../inputs/radiobutton/disabled/main.vue | 25 + .../radiobutton/labels/custom-labels/main.js | 4 + .../radiobutton/labels/custom-labels/main.vue | 50 + .../radiobutton/labels/setting-up/main.js | 4 + .../radiobutton/labels/setting-up/main.vue | 26 + .../inputs/radiobutton/overview/main.js | 4 + .../inputs/radiobutton/overview/main.vue | 45 + .../inputs/radiogroup/controlled/main.js | 4 + .../inputs/radiogroup/controlled/main.vue | 65 + .../inputs/radiogroup/default-state/main.js | 4 + .../inputs/radiogroup/default-state/main.vue | 35 + .../inputs/radiogroup/forms/FormContent.vue | 131 + .../inputs/radiogroup/forms/FormInput.vue | 83 + .../radiogroup/forms/FormRadioGroup.vue | 94 + .../inputs/radiogroup/forms/main.js | 4 + .../inputs/radiogroup/forms/main.vue | 23 + .../inputs/radiogroup/keyboard/main.js | 4 + .../inputs/radiogroup/keyboard/main.vue | 36 + .../inputs/radiogroup/layout/main.js | 4 + .../inputs/radiogroup/layout/main.vue | 79 + .../inputs/radiogroup/overview/main.js | 4 + .../inputs/radiogroup/overview/main.vue | 33 + .../inputs/rangeslider/controlled/main.js | 4 + .../inputs/rangeslider/controlled/main.vue | 41 + .../inputs/rangeslider/disabled/main.js | 4 + .../inputs/rangeslider/disabled/main.vue | 27 + .../inputs/rangeslider/events/Logger.vue | 45 + .../inputs/rangeslider/events/main.js | 5 + .../inputs/rangeslider/events/main.vue | 54 + .../inputs/rangeslider/labels/main.js | 4 + .../inputs/rangeslider/labels/main.vue | 21 + .../inputs/rangeslider/orientation/main.js | 4 + .../inputs/rangeslider/orientation/main.vue | 39 + .../inputs/rangeslider/overview/main.js | 4 + .../inputs/rangeslider/overview/main.vue | 21 + .../inputs/rating/basic/main.js | 4 + .../inputs/rating/basic/main.vue | 13 + .../inputs/rating/controlled/main.js | 4 + .../inputs/rating/controlled/main.vue | 23 + .../inputs/rating/disabled/main.js | 4 + .../inputs/rating/disabled/main.vue | 13 + .../rating/form-support/FormContent.vue | 120 + .../inputs/rating/form-support/FormInput.vue | 85 + .../inputs/rating/form-support/FormRating.vue | 92 + .../inputs/rating/form-support/main.js | 4 + .../inputs/rating/form-support/main.vue | 24 + .../inputs/rating/icon/main.js | 4 + .../inputs/rating/icon/main.vue | 23 + .../rating/item-customization/customItem.vue | 40 + .../inputs/rating/item-customization/main.js | 4 + .../inputs/rating/item-customization/main.vue | 20 + .../inputs/rating/items/main.js | 4 + .../inputs/rating/items/main.vue | 13 + .../inputs/rating/label/main.js | 4 + .../inputs/rating/label/main.vue | 29 + .../inputs/rating/navigation/main.js | 4 + .../inputs/rating/navigation/main.vue | 13 + .../rating/precision/first-full/main.js | 4 + .../rating/precision/first-full/main.vue | 20 + .../rating/precision/first-half/main.js | 4 + .../rating/precision/first-half/main.vue | 20 + .../inputs/rating/precision/main.js | 4 + .../inputs/rating/precision/main.vue | 22 + .../inputs/rating/readonly/main.js | 4 + .../inputs/rating/readonly/main.vue | 16 + .../inputs/rating/selection/main.js | 4 + .../inputs/rating/selection/main.vue | 22 + vue-options-api-demos/inputs/rtl/main.js | 4 + vue-options-api-demos/inputs/rtl/main.vue | 104 + .../shared/CheckboxStyleConfigurator.vue | 80 + .../inputs/shared/FormCheckbox.vue | 84 + .../inputs/shared/FormInput.vue | 94 + .../inputs/shared/FormSwitch.vue | 100 + .../inputs/shared/InputStyleConfigurator.vue | 105 + .../shared/MaskedTextBoxStyleConfigurator.vue | 105 + .../NumericTextBoxStyleConfigurator.vue | 105 + .../shared/RadioButtonStyleConfigurator.vue | 61 + .../shared/SignatureStyleConfigurator.vue | 158 + .../inputs/shared/SwitchStyleConfigurator.vue | 101 + .../shared/TextAreaStyleConfigurator.vue | 105 + .../inputs/shared/sample-signature.js | 2 + .../SignatureStyleConfigurator.vue | 158 + .../signature/appearance/all-options/main.js | 4 + .../signature/appearance/all-options/main.vue | 70 + .../all-options/sample-signature.js | 2 + .../inputs/signature/appearance/color/main.js | 4 + .../signature/appearance/color/main.vue | 83 + .../signature/appearance/fill-mode/main.js | 4 + .../signature/appearance/fill-mode/main.vue | 55 + .../signature/appearance/roundness/main.js | 4 + .../signature/appearance/roundness/main.vue | 79 + .../inputs/signature/appearance/size/main.js | 4 + .../inputs/signature/appearance/size/main.vue | 64 + .../signature/appearance/stroke-width/main.js | 4 + .../appearance/stroke-width/main.vue | 52 + .../signature/controlled/export-scale/main.js | 4 + .../controlled/export-scale/main.vue | 58 + .../export-scale/sample-signature.js | 2 + .../inputs/signature/controlled/popup/main.js | 4 + .../signature/controlled/popup/main.vue | 40 + .../inputs/signature/controlled/value/main.js | 4 + .../signature/controlled/value/main.vue | 23 + .../controlled/value/sample-signature.js | 2 + .../inputs/signature/disabled/main.js | 4 + .../inputs/signature/disabled/main.vue | 18 + .../signature/disabled/sample-signature.js | 2 + .../inputs/signature/events/main.js | 4 + .../inputs/signature/events/main.vue | 11 + .../signature/forms/kendo/FormContent.vue | 98 + .../signature/forms/kendo/FormInput.vue | 89 + .../signature/forms/kendo/FormSignature.vue | 79 + .../inputs/signature/forms/kendo/main.js | 4 + .../inputs/signature/forms/kendo/main.vue | 24 + .../inputs/signature/overview/main.js | 4 + .../inputs/signature/overview/main.vue | 227 + .../signature/overview/sample-signature.js | 2 + .../inputs/signature/overview/styles.css | 59 + .../inputs/signature/popup/disabled/main.js | 4 + .../inputs/signature/popup/disabled/main.vue | 23 + .../popup/disabled/sample-signature.js | 2 + .../inputs/signature/popup/scale/main.js | 4 + .../inputs/signature/popup/scale/main.vue | 23 + .../signature/popup/scale/sample-signature.js | 2 + .../inputs/signature/readonly/main.js | 4 + .../inputs/signature/readonly/main.vue | 18 + .../signature/readonly/sample-signature.js | 2 + .../inputs/signature/smooth/main.js | 4 + .../inputs/signature/smooth/main.vue | 12 + .../inputs/slider/buttons/main.js | 4 + .../inputs/slider/buttons/main.vue | 28 + .../inputs/slider/controlled/main.js | 4 + .../inputs/slider/controlled/main.vue | 43 + .../inputs/slider/labels/main.js | 4 + .../inputs/slider/labels/main.vue | 28 + .../inputs/slider/orientation/main.js | 4 + .../inputs/slider/orientation/main.vue | 29 + .../inputs/slider/overview/main.js | 4 + .../inputs/slider/overview/main.vue | 28 + .../configurator/SwitchStyleConfigurator.vue | 101 + .../switch/appearance/configurator/main.js | 4 + .../switch/appearance/configurator/main.vue | 47 + .../inputs/switch/appearance/size/main.js | 4 + .../inputs/switch/appearance/size/main.vue | 44 + .../switch/appearance/thumb-rounded/main.js | 4 + .../switch/appearance/thumb-rounded/main.vue | 43 + .../switch/appearance/track-rounded/main.js | 4 + .../switch/appearance/track-rounded/main.vue | 43 + .../inputs/switch/controlled/manual/main.js | 4 + .../inputs/switch/controlled/manual/main.vue | 35 + .../inputs/switch/controlled/overview/main.js | 4 + .../switch/controlled/overview/main.vue | 25 + .../inputs/switch/controlled/readonly/main.js | 4 + .../switch/controlled/readonly/main.vue | 15 + .../inputs/switch/default/main.js | 4 + .../inputs/switch/default/main.vue | 15 + .../inputs/switch/disabled/main.js | 4 + .../inputs/switch/disabled/main.vue | 25 + .../inputs/switch/events/Logger.vue | 43 + .../inputs/switch/events/main.js | 5 + .../inputs/switch/events/main.vue | 38 + .../custom-message/FormContent.vue | 176 + .../custom-message/FormInput.vue | 98 + .../custom-message/FormSwitch.vue | 102 + .../forms-support/custom-message/main.js | 4 + .../forms-support/custom-message/main.vue | 22 + .../form-required/FormContent.vue | 96 + .../forms-support/form-required/FormInput.vue | 85 + .../form-required/FormSwitch.vue | 100 + .../forms-support/form-required/main.js | 4 + .../forms-support/form-required/main.vue | 23 + .../forms-support/overview/FormContent.vue | 110 + .../forms-support/overview/FormInput.vue | 85 + .../forms-support/overview/FormSwitch.vue | 100 + .../switch/forms-support/overview/main.js | 4 + .../switch/forms-support/overview/main.vue | 22 + .../inputs/switch/keyboard/main.js | 4 + .../inputs/switch/keyboard/main.vue | 18 + .../inputs/switch/labels/main.js | 4 + .../inputs/switch/labels/main.vue | 15 + .../inputs/switch/overview/main.js | 4 + .../inputs/switch/overview/main.vue | 15 + .../textarea/adornments/clear-button/main.js | 4 + .../textarea/adornments/clear-button/main.vue | 24 + .../adornments/disabled/InputIcons.vue | 21 + .../textarea/adornments/disabled/main.js | 4 + .../textarea/adornments/disabled/main.vue | 40 + .../textarea/adornments/icon-name/main.js | 4 + .../textarea/adornments/icon-name/main.vue | 31 + .../textarea/adornments/loading-icon/main.js | 4 + .../textarea/adornments/loading-icon/main.vue | 15 + .../textarea/adornments/prefix/InputIcons.vue | 23 + .../inputs/textarea/adornments/prefix/main.js | 4 + .../textarea/adornments/prefix/main.vue | 45 + .../textarea/adornments/separator/main.js | 4 + .../textarea/adornments/separator/main.vue | 22 + .../textarea/adornments/suffix/InputIcons.vue | 23 + .../inputs/textarea/adornments/suffix/main.js | 4 + .../textarea/adornments/suffix/main.vue | 46 + .../adornments/validation-icon/main.js | 4 + .../adornments/validation-icon/main.vue | 22 + .../TextAreaStyleConfigurator.vue | 105 + .../textarea/appearance/configurator/main.js | 4 + .../textarea/appearance/configurator/main.vue | 47 + .../textarea/appearance/fill-mode/main.js | 4 + .../textarea/appearance/fill-mode/main.vue | 54 + .../textarea/appearance/rounded/main.js | 4 + .../textarea/appearance/rounded/main.vue | 58 + .../inputs/textarea/appearance/size/main.js | 4 + .../inputs/textarea/appearance/size/main.vue | 53 + .../inputs/textarea/controlled/main.js | 4 + .../inputs/textarea/controlled/main.vue | 25 + .../inputs/textarea/counter/main.js | 4 + .../inputs/textarea/counter/main.vue | 39 + .../inputs/textarea/default/main.js | 4 + .../inputs/textarea/default/main.vue | 15 + .../inputs/textarea/disabled/main.js | 4 + .../inputs/textarea/disabled/main.vue | 15 + .../inputs/textarea/events/Logger.vue | 43 + .../inputs/textarea/events/main.js | 5 + .../inputs/textarea/events/main.vue | 61 + .../inputs/textarea/forms/FormContent.vue | 117 + .../inputs/textarea/forms/FormInput.vue | 88 + .../inputs/textarea/forms/FormTextArea.vue | 84 + .../inputs/textarea/forms/main.js | 4 + .../inputs/textarea/forms/main.vue | 24 + .../inputs/textarea/input-mode/main.js | 4 + .../inputs/textarea/input-mode/main.vue | 77 + .../inputs/textarea/overview/FormContent.vue | 84 + .../inputs/textarea/overview/FormTextArea.vue | 94 + .../inputs/textarea/overview/main.js | 4 + .../inputs/textarea/overview/main.vue | 24 + .../textarea/sizing/auto-sizing/main.js | 4 + .../textarea/sizing/auto-sizing/main.vue | 15 + .../inputs/textarea/sizing/initial/main.js | 4 + .../inputs/textarea/sizing/initial/main.vue | 15 + .../inputs/textbox/adornments/main.js | 4 + .../inputs/textbox/adornments/main.vue | 56 + .../configurator/InputStyleConfigurator.vue | 105 + .../textbox/appearance/configurator/main.js | 4 + .../textbox/appearance/configurator/main.vue | 42 + .../textbox/appearance/fill-mode/main.js | 4 + .../textbox/appearance/fill-mode/main.vue | 54 + .../inputs/textbox/appearance/rounded/main.js | 4 + .../textbox/appearance/rounded/main.vue | 58 + .../inputs/textbox/appearance/size/main.js | 4 + .../inputs/textbox/appearance/size/main.vue | 53 + .../inputs/textbox/character-count/main.js | 4 + .../inputs/textbox/character-count/main.vue | 64 + .../inputs/textbox/clear-button/main.js | 4 + .../inputs/textbox/clear-button/main.vue | 24 + .../inputs/textbox/clear-value/main.js | 4 + .../inputs/textbox/clear-value/main.vue | 71 + .../disabled-adornments/TextBoxIcons.vue | 27 + .../textbox/disabled-adornments/main.js | 4 + .../textbox/disabled-adornments/main.vue | 39 + .../inputs/textbox/disabled/main.js | 4 + .../inputs/textbox/disabled/main.vue | 55 + .../textbox/forms-support/FormContent.vue | 66 + .../textbox/forms-support/FormTextBox.vue | 90 + .../inputs/textbox/forms-support/main.js | 4 + .../inputs/textbox/forms-support/main.vue | 24 + .../textbox/forms-support/validators.js | 83 + .../inputs/textbox/icon-name/main.js | 4 + .../inputs/textbox/icon-name/main.vue | 18 + .../inputs/textbox/input-mode/main.js | 4 + .../inputs/textbox/input-mode/main.vue | 90 + .../inputs/textbox/loading-icon/main.js | 4 + .../inputs/textbox/loading-icon/main.vue | 18 + .../inputs/textbox/overview/main.js | 4 + .../inputs/textbox/overview/main.vue | 77 + .../textbox/overview/overview-styles.css | 171 + .../inputs/textbox/readonly/main.js | 4 + .../inputs/textbox/readonly/main.vue | 55 + .../inputs/textbox/separator/main.js | 4 + .../inputs/textbox/separator/main.vue | 61 + .../textbox/validation-icon-built-in/main.js | 4 + .../textbox/validation-icon-built-in/main.vue | 22 + .../inputs/textbox/validation-icon/main.js | 4 + .../inputs/textbox/validation-icon/main.vue | 69 + .../CustomFormatIntlProvider.js | 14 + .../custom-service/CustomFormatIntlService.js | 9 + .../intl/custom-service/DateFormatter.vue | 30 + .../intl/custom-service/main.js | 4 + .../intl/custom-service/main.vue | 24 + .../intl/date-formatting/main.js | 4 + .../intl/date-formatting/main.vue | 82 + .../intl/date-parsing/main.js | 4 + .../intl/date-parsing/main.vue | 42 + .../intl/general-formatting/FormattedDate.vue | 30 + .../general-formatting/FormattedNumber.vue | 30 + .../intl/general-formatting/FormattedText.vue | 30 + .../intl/general-formatting/main.js | 4 + .../intl/general-formatting/main.vue | 89 + .../getting-started/main.js | 4 + .../getting-started/main.vue | 27 + .../internationalization/overview/Chooser.vue | 33 + .../overview/CurrencyFormatter.vue | 23 + .../overview/DateFormatter.vue | 22 + .../internationalization/overview/main.js | 4 + .../internationalization/overview/main.vue | 80 + .../intl/load-prebuild-data/DateFormatter.vue | 30 + .../intl/load-prebuild-data/main.js | 4 + .../intl/load-prebuild-data/main.vue | 70 + .../intl/localization-overview/main.js | 4 + .../intl/localization-overview/main.vue | 125 + .../localization-overview/messages-es.json | 5 + .../localization-overview/messages-he.json | 5 + .../intl/localization/Chooser.vue | 33 + .../intl/localization/MessageComponent.vue | 25 + .../intl/localization/main.js | 4 + .../intl/localization/main.vue | 67 + .../intl/localization/messages.js | 16 + .../number-formatting/FormattedNumber.vue | 37 + .../intl/number-formatting/main.js | 4 + .../intl/number-formatting/main.vue | 115 + .../intl/number-parsing/main.js | 4 + .../intl/number-parsing/main.vue | 75 + .../intl/reacting/Chooser.vue | 33 + .../intl/reacting/CurrencyFormatter.vue | 23 + .../intl/reacting/DateFormatter.vue | 22 + vue-options-api-demos/intl/reacting/main.js | 4 + vue-options-api-demos/intl/reacting/main.vue | 80 + .../intl/rtl-support/main.js | 4 + .../intl/rtl-support/main.vue | 47 + vue-options-api-demos/intl/shared/Chooser.vue | 33 + .../intl/use-in-component/DateFormatter.vue | 30 + .../intl/use-in-component/main.js | 4 + .../intl/use-in-component/main.vue | 70 + .../labels/error/basic/main.js | 4 + .../labels/error/basic/main.vue | 48 + .../labels/error/direction/main.js | 4 + .../labels/error/direction/main.vue | 48 + .../labels/floatinglabel/basic/main.js | 4 + .../labels/floatinglabel/basic/main.vue | 189 + .../labels/floatinglabel/custom/main.js | 4 + .../labels/floatinglabel/custom/main.vue | 39 + .../labels/floatinglabel/optional/main.js | 4 + .../labels/floatinglabel/optional/main.vue | 36 + .../labels/floatinglabel/placeholder/main.js | 4 + .../labels/floatinglabel/placeholder/main.vue | 36 + .../labels/floatinglabel/validation/main.js | 4 + .../labels/floatinglabel/validation/main.vue | 57 + .../labels/hint/basic/main.js | 4 + .../labels/hint/basic/main.vue | 35 + .../labels/hint/direction/main.js | 4 + .../labels/hint/direction/main.vue | 35 + .../labels/label/basic/main.js | 4 + .../labels/label/basic/main.vue | 27 + .../labels/label/custom/main.js | 4 + .../labels/label/custom/main.vue | 39 + .../labels/label/optional/main.js | 4 + .../labels/label/optional/main.vue | 26 + .../labels/label/validation/main.js | 4 + .../labels/label/validation/main.vue | 54 + .../layout/actionsheet/accessibility/main.js | 4 + .../layout/actionsheet/accessibility/main.vue | 11 + .../layout/actionsheet/animation/main.js | 4 + .../layout/actionsheet/animation/main.vue | 61 + .../custom-rendering/content/main.js | 4 + .../custom-rendering/content/main.vue | 71 + .../custom-rendering/footer/main.js | 4 + .../custom-rendering/footer/main.vue | 85 + .../custom-rendering/header/main.js | 4 + .../custom-rendering/header/main.vue | 82 + .../layout/actionsheet/events/Logger.vue | 43 + .../layout/actionsheet/events/main.js | 5 + .../layout/actionsheet/events/main.vue | 70 + .../actionsheet/items/disabling/main.js | 4 + .../actionsheet/items/disabling/main.vue | 59 + .../layout/actionsheet/items/groups/main.js | 4 + .../layout/actionsheet/items/groups/main.vue | 65 + .../layout/actionsheet/items/icons/main.js | 4 + .../layout/actionsheet/items/icons/main.vue | 62 + .../layout/actionsheet/items/overview/main.js | 4 + .../actionsheet/items/overview/main.vue | 60 + .../layout/actionsheet/items/styling/main.js | 4 + .../layout/actionsheet/items/styling/main.vue | 69 + .../layout/actionsheet/items/title/main.js | 4 + .../layout/actionsheet/items/title/main.vue | 60 + .../actionsheet/keyboard-navigation/main.js | 4 + .../actionsheet/keyboard-navigation/main.vue | 56 + .../layout/actionsheet/overview/main.js | 4 + .../layout/actionsheet/overview/main.vue | 199 + .../layout/appbar/overview/main.js | 4 + .../layout/appbar/overview/main.vue | 118 + .../layout/appbar/position-mode/main.js | 4 + .../layout/appbar/position-mode/main.vue | 155 + .../layout/appbar/position/main.js | 4 + .../layout/appbar/position/main.vue | 151 + .../layout/appbar/responsive-design/main.js | 4 + .../layout/appbar/responsive-design/main.vue | 199 + .../layout/appbar/sections/main.js | 4 + .../layout/appbar/sections/main.vue | 58 + .../layout/appbar/separators/main.js | 4 + .../layout/appbar/separators/main.vue | 74 + .../layout/appbar/spacings/main.js | 4 + .../layout/appbar/spacings/main.vue | 83 + .../layout/appbar/theme-color/main.js | 4 + .../layout/appbar/theme-color/main.vue | 105 + .../layout/avatar/appearance/border/main.js | 4 + .../layout/avatar/appearance/border/main.vue | 56 + .../avatar/appearance/fill-mode/main.js | 4 + .../avatar/appearance/fill-mode/main.vue | 76 + .../layout/avatar/appearance/rounded/main.js | 4 + .../layout/avatar/appearance/rounded/main.vue | 77 + .../layout/avatar/appearance/shapes/main.js | 4 + .../layout/avatar/appearance/shapes/main.vue | 36 + .../layout/avatar/appearance/size/main.js | 4 + .../layout/avatar/appearance/size/main.vue | 62 + .../avatar/appearance/theme-color/main.js | 4 + .../avatar/appearance/theme-color/main.vue | 40 + .../layout/avatar/overview/main.js | 4 + .../layout/avatar/overview/main.vue | 145 + .../BottomNavigationStyleConfigurator.vue | 93 + .../bottomnavigation/appearance/main.js | 4 + .../bottomnavigation/appearance/main.vue | 132 + .../bottomnavigation/basic-usage/Calendar.vue | 25 + .../bottomnavigation/basic-usage/Inbox.vue | 64 + .../bottomnavigation/basic-usage/Profile.vue | 68 + .../bottomnavigation/basic-usage/index.js | 29 + .../bottomnavigation/basic-usage/main.js | 5 + .../bottomnavigation/basic-usage/main.vue | 155 + .../bottomnavigation/custom-rendering/main.js | 4 + .../custom-rendering/main.vue | 107 + .../BottomNavigationStyleConfigurator.vue | 62 + .../layout/bottomnavigation/fill/main.js | 4 + .../layout/bottomnavigation/fill/main.vue | 124 + .../bottomnavigation/item-content/main.js | 4 + .../bottomnavigation/item-content/main.vue | 102 + .../layout/bottomnavigation/item-flow/main.js | 4 + .../bottomnavigation/item-flow/main.vue | 89 + .../bottomnavigation/item-render/main.js | 4 + .../bottomnavigation/item-render/main.vue | 56 + .../bottomnavigation/position-mode/main.js | 4 + .../bottomnavigation/position-mode/main.vue | 124 + .../layout/bottomnavigation/routing/Bills.vue | 25 + .../layout/bottomnavigation/routing/Home.vue | 25 + .../layout/bottomnavigation/routing/More.vue | 25 + .../bottomnavigation/routing/Payments.vue | 25 + .../bottomnavigation/routing/Services.vue | 26 + .../layout/bottomnavigation/routing/index.js | 41 + .../layout/bottomnavigation/routing/main.js | 5 + .../layout/bottomnavigation/routing/main.vue | 115 + .../BottomNavigationStyleConfigurator.vue | 73 + .../bottomnavigation/theme-color/main.js | 4 + .../bottomnavigation/theme-color/main.vue | 126 + .../layout/card/actions/main.js | 4 + .../layout/card/actions/main.vue | 109 + .../layout/card/layouts/main.js | 4 + .../layout/card/layouts/main.vue | 79 + .../layout/card/orientation/main.js | 4 + .../layout/card/orientation/main.vue | 108 + .../layout/card/overview/main.js | 4 + .../layout/card/overview/main.vue | 236 + .../layout/card/types/main.js | 4 + .../layout/card/types/main.vue | 119 + .../context-menu/data-binding/local/main.js | 4 + .../context-menu/data-binding/local/main.vue | 83 + .../context-menu/data-binding/remote/main.js | 4 + .../context-menu/data-binding/remote/main.vue | 95 + .../layout/context-menu/events/Logger.vue | 43 + .../layout/context-menu/events/main.js | 5 + .../layout/context-menu/events/main.vue | 97 + .../items/properties/disabled/main.js | 4 + .../items/properties/disabled/main.vue | 85 + .../items/properties/icon/main.js | 4 + .../items/properties/icon/main.vue | 142 + .../items/properties/styles/main.js | 4 + .../items/properties/styles/main.vue | 87 + .../items/properties/text/main.js | 4 + .../items/properties/text/main.vue | 79 + .../context-menu/items/properties/url/main.js | 4 + .../items/properties/url/main.vue | 81 + .../items/rendering/content-render/main.js | 4 + .../items/rendering/content-render/main.vue | 88 + .../items/rendering/item-render/main.js | 4 + .../items/rendering/item-render/main.vue | 88 + .../items/rendering/link-render/main.js | 4 + .../items/rendering/link-render/main.vue | 100 + .../items/rendering/menu-item-render/main.js | 4 + .../items/rendering/menu-item-render/main.vue | 101 + .../items/rendering/menu-link-render/main.js | 4 + .../items/rendering/menu-link-render/main.vue | 99 + .../layout/context-menu/open-close/main.js | 4 + .../layout/context-menu/open-close/main.vue | 98 + .../layout/context-menu/overview/main.js | 4 + .../layout/context-menu/overview/main.vue | 93 + .../layout/context-menu/vertical/main.js | 4 + .../layout/context-menu/vertical/main.vue | 110 + .../layout/drawer/custom-render/Berlin.vue | 30 + .../layout/drawer/custom-render/Madrid.vue | 31 + .../layout/drawer/custom-render/Paris.vue | 29 + .../layout/drawer/custom-render/Rome.vue | 29 + .../layout/drawer/custom-render/index.js | 35 + .../layout/drawer/custom-render/main.js | 6 + .../layout/drawer/custom-render/main.vue | 125 + .../layout/drawer/custom-render/styles.css | 50 + .../layout/drawer/display-modes/main.js | 4 + .../layout/drawer/display-modes/main.vue | 134 + .../layout/drawer/events/Logger.vue | 43 + .../layout/drawer/events/main.js | 5 + .../layout/drawer/events/main.vue | 96 + .../layout/drawer/events/styles.css | 47 + .../layout/drawer/expanded/main.js | 4 + .../layout/drawer/expanded/main.vue | 74 + .../layout/drawer/expanded/styles.css | 13 + .../drawer/getting-started/Attachments.vue | 14 + .../drawer/getting-started/Calendar.vue | 17 + .../drawer/getting-started/Favourites.vue | 12 + .../layout/drawer/getting-started/Inbox.vue | 23 + .../drawer/getting-started/Notifications.vue | 14 + .../layout/drawer/getting-started/index.js | 41 + .../layout/drawer/getting-started/main.js | 5 + .../layout/drawer/getting-started/main.vue | 114 + .../layout/drawer/getting-started/styles.css | 47 + .../layout/drawer/hierarchical/Education.vue | 177 + .../layout/drawer/hierarchical/Europe.vue | 162 + .../layout/drawer/hierarchical/Food.vue | 16 + .../drawer/hierarchical/ItalianFood.vue | 157 + .../drawer/hierarchical/JapaneseFood.vue | 169 + .../drawer/hierarchical/NorthAmerica.vue | 162 + .../layout/drawer/hierarchical/Travel.vue | 16 + .../layout/drawer/hierarchical/index.js | 73 + .../layout/drawer/hierarchical/main.js | 6 + .../layout/drawer/hierarchical/main.vue | 197 + .../layout/drawer/hierarchical/styles.css | 52 + .../layout/drawer/mini-mode/main.js | 4 + .../layout/drawer/mini-mode/main.vue | 104 + .../layout/drawer/positioning/main.js | 4 + .../layout/drawer/positioning/main.vue | 129 + .../layout/drawer/routing/About.vue | 49 + .../layout/drawer/routing/Home.vue | 45 + .../layout/drawer/routing/Products.vue | 29 + .../layout/drawer/routing/index.js | 29 + .../layout/drawer/routing/main.js | 6 + .../layout/drawer/routing/main.vue | 78 + .../layout/drawer/routing/styles.css | 35 + .../layout/drawer/templates/content/index.js | 0 .../layout/drawer/templates/content/main.js | 4 + .../layout/drawer/templates/content/main.vue | 85 + .../templates/header-footer/Attachments.vue | 14 + .../templates/header-footer/Calendar.vue | 17 + .../templates/header-footer/Favourites.vue | 12 + .../drawer/templates/header-footer/Inbox.vue | 23 + .../templates/header-footer/Notifications.vue | 14 + .../drawer/templates/header-footer/index.js | 41 + .../drawer/templates/header-footer/main.js | 5 + .../drawer/templates/header-footer/main.vue | 110 + .../drawer/templates/header-footer/styles.css | 53 + .../layout/expansionpanel/animations/data.js | 38 + .../layout/expansionpanel/animations/main.js | 4 + .../layout/expansionpanel/animations/main.vue | 59 + .../expansionpanel/animations/styles.css | 27 + .../layout/expansionpanel/disabled/main.js | 4 + .../layout/expansionpanel/disabled/main.vue | 51 + .../layout/expansionpanel/events/Logger.vue | 43 + .../layout/expansionpanel/events/data.js | 28 + .../layout/expansionpanel/events/main.js | 4 + .../layout/expansionpanel/events/main.vue | 76 + .../layout/expansionpanel/events/styles.css | 28 + .../layout/expansionpanel/icons/main.js | 4 + .../layout/expansionpanel/icons/main.vue | 96 + .../layout/expansionpanel/overview/data.js | 38 + .../layout/expansionpanel/overview/main.js | 4 + .../layout/expansionpanel/overview/main.vue | 58 + .../layout/expansionpanel/overview/styles.css | 27 + .../layout/get-started/main.js | 4 + .../layout/get-started/main.vue | 44 + .../layout/globalization/AccountDetails.vue | 90 + .../layout/globalization/AvatarComponent.vue | 131 + .../layout/globalization/CardComponent.vue | 60 + .../layout/globalization/FormInput.vue | 90 + .../layout/globalization/MenuComponent.vue | 45 + .../globalization/PanelBarComponent.vue | 50 + .../layout/globalization/PersonalDetails.vue | 64 + .../globalization/RegisterComponent.vue | 14 + .../globalization/SplitterComponent.vue | 76 + .../layout/globalization/StepperComponent.vue | 38 + .../globalization/TabStripComponent.vue | 150 + .../globalization/TileLayoutComponent.vue | 54 + .../layout/globalization/WizardComponent.vue | 123 + .../layout/globalization/content-overview.js | 3 + .../layout/globalization/index.js | 53 + .../layout/globalization/main.js | 5 + .../layout/globalization/main.vue | 159 + .../layout/globalization/panelbar-styles.css | 35 + .../layout/globalization/splitter-styles.css | 14 + .../layout/globalization/styles.css | 59 + .../layout/globalization/validators.js | 83 + .../layout/gridlayout/items/main.js | 4 + .../layout/gridlayout/items/main.vue | 80 + .../layout/gridlayout/items/styles.css | 26 + .../layout/gridlayout/layout/gaps/main.js | 4 + .../layout/gridlayout/layout/gaps/main.vue | 114 + .../layout/gridlayout/layout/gaps/styles.css | 44 + .../gridlayout/layout/horizontalalign/main.js | 4 + .../layout/horizontalalign/main.vue | 91 + .../layout/horizontalalign/styles.css | 44 + .../gridlayout/layout/rows-cols/main.js | 4 + .../gridlayout/layout/rows-cols/main.vue | 122 + .../gridlayout/layout/rows-cols/styles.css | 44 + .../gridlayout/layout/verticalalign/main.js | 4 + .../gridlayout/layout/verticalalign/main.vue | 91 + .../layout/verticalalign/styles.css | 44 + .../overview/RecommendedArticle.vue | 51 + .../gridlayout/overview/TrendingArticle.vue | 36 + .../gridlayout/overview/articles-info.js | 84 + .../layout/gridlayout/overview/main.js | 4 + .../layout/gridlayout/overview/main.vue | 131 + .../layout/gridlayout/overview/styles.css | 83 + .../layout/menu/data-binding/local/main.js | 4 + .../layout/menu/data-binding/local/main.vue | 34 + .../layout/menu/data-binding/remote/main.js | 4 + .../layout/menu/data-binding/remote/main.vue | 50 + .../layout/menu/events/Logger.vue | 43 + .../layout/menu/events/main.js | 5 + .../layout/menu/events/main.vue | 49 + .../menu/items/properties/disabled/main.js | 4 + .../menu/items/properties/disabled/main.vue | 36 + .../layout/menu/items/properties/icon/main.js | 4 + .../menu/items/properties/icon/main.vue | 93 + .../menu/items/properties/separator/main.js | 4 + .../menu/items/properties/separator/main.vue | 34 + .../menu/items/properties/styles/main.js | 4 + .../menu/items/properties/styles/main.vue | 33 + .../menu/items/properties/styles/styles.css | 3 + .../layout/menu/items/properties/text/main.js | 4 + .../menu/items/properties/text/main.vue | 30 + .../layout/menu/items/properties/url/main.js | 4 + .../layout/menu/items/properties/url/main.vue | 32 + .../content-render-with-popup/items.json | 16 + .../content-render-with-popup/main.js | 4 + .../content-render-with-popup/main.vue | 47 + .../items/rendering/content-render/main.js | 4 + .../items/rendering/content-render/main.vue | 43 + .../menu/items/rendering/item-render/main.js | 4 + .../menu/items/rendering/item-render/main.vue | 39 + .../menu/items/rendering/link-render/main.js | 4 + .../menu/items/rendering/link-render/main.vue | 53 + .../items/rendering/menu-item-render/main.js | 4 + .../items/rendering/menu-item-render/main.vue | 54 + .../items/rendering/menu-link-render/main.js | 4 + .../items/rendering/menu-link-render/main.vue | 52 + .../layout/menu/localization/Menu.vue | 107 + .../layout/menu/localization/en-US.js | 9 + .../layout/menu/localization/es.js | 9 + .../layout/menu/localization/fr.js | 9 + .../layout/menu/localization/main.js | 4 + .../layout/menu/localization/main.vue | 60 + .../layout/menu/open-close/click/main.js | 4 + .../layout/menu/open-close/click/main.vue | 52 + .../layout/menu/open-close/hover/main.js | 4 + .../layout/menu/open-close/hover/main.vue | 48 + .../layout/menu/overview/main.js | 4 + .../layout/menu/overview/main.vue | 44 + .../layout/menu/routing/About.vue | 49 + .../layout/menu/routing/Home.vue | 45 + .../layout/menu/routing/Products.vue | 29 + .../layout/menu/routing/Team.vue | 39 + .../layout/menu/routing/index.js | 35 + .../layout/menu/routing/main.js | 5 + .../layout/menu/routing/main.vue | 56 + .../layout/menu/vertical/main.js | 4 + .../layout/menu/vertical/main.vue | 50 + .../layout/overview/AccountDetails.vue | 93 + .../layout/overview/Avatar.vue | 129 + .../layout/overview/BottomNavigation.vue | 140 + .../layout/overview/Card.vue | 58 + .../layout/overview/ContextMenu.vue | 93 + .../layout/overview/ExpansionPanel.vue | 90 + .../layout/overview/FormInput.vue | 90 + .../layout/overview/GridLayout.vue | 78 + .../layout/overview/Menu.vue | 45 + .../layout/overview/PanelBar.vue | 87 + .../layout/overview/PersonalDetails.vue | 67 + .../layout/overview/Register.vue | 17 + .../layout/overview/Splitter.vue | 76 + .../layout/overview/StackLayout.vue | 36 + .../layout/overview/Stepper.vue | 38 + .../layout/overview/TabStrip.vue | 150 + .../layout/overview/TileLayout.vue | 65 + .../layout/overview/Wizard.vue | 123 + .../layout/overview/gridlayout-styles.css | 22 + .../layout/overview/index.js | 95 + vue-options-api-demos/layout/overview/main.js | 5 + .../layout/overview/main.vue | 277 + .../layout/overview/panelbar-styles.css | 35 + .../layout/overview/splitter-styles.css | 14 + .../layout/overview/stacklayout-styles.css | 20 + .../layout/overview/styles.css | 49 + .../layout/overview/validators.js | 83 + .../layout/panelbar/animation/main.js | 4 + .../layout/panelbar/animation/main.vue | 43 + .../layout/panelbar/animation/styles.css | 35 + .../layout/panelbar/binding/local/main.js | 4 + .../layout/panelbar/binding/local/main.vue | 31 + .../layout/panelbar/binding/local/styles.css | 3 + .../layout/panelbar/binding/remote/main.js | 4 + .../layout/panelbar/binding/remote/main.vue | 67 + .../layout/panelbar/binding/remote/styles.css | 8 + .../panelbar/controlled-state/all/main.js | 4 + .../panelbar/controlled-state/all/main.vue | 12 + .../panelbar/controlled-state/basic/main.js | 4 + .../panelbar/controlled-state/basic/main.vue | 120 + .../controlled-state/basic/styles.css | 5 + .../layout/panelbar/controlled/basic/main.js | 4 + .../layout/panelbar/controlled/basic/main.vue | 78 + .../panelbar/controlled/basic/styles.css | 4 + .../layout/panelbar/controlled/custom/main.js | 4 + .../panelbar/controlled/custom/main.vue | 102 + .../panelbar/controlled/custom/styles.css | 4 + .../panelbar/custom/collections/main.js | 4 + .../panelbar/custom/collections/main.vue | 38 + .../panelbar/custom/collections/styles.css | 4 + .../layout/panelbar/custom/custom/main.js | 4 + .../layout/panelbar/custom/custom/main.vue | 50 + .../layout/panelbar/custom/custom/styles.css | 4 + .../layout/panelbar/expand/main.js | 4 + .../layout/panelbar/expand/main.vue | 90 + .../layout/panelbar/expand/styles.css | 4 + .../layout/panelbar/items/custom/main.js | 4 + .../layout/panelbar/items/custom/main.vue | 50 + .../layout/panelbar/items/custom/styles.css | 4 + .../panelbar/items/state/disabled/main.js | 4 + .../panelbar/items/state/disabled/main.vue | 26 + .../panelbar/items/state/disabled/styles.css | 4 + .../panelbar/items/state/expanded/main.js | 4 + .../panelbar/items/state/expanded/main.vue | 37 + .../panelbar/items/state/expanded/styles.css | 4 + .../panelbar/items/state/selected/main.js | 4 + .../panelbar/items/state/selected/main.vue | 26 + .../panelbar/items/state/selected/styles.css | 4 + .../items/titles/getting-started/main.js | 4 + .../items/titles/getting-started/main.vue | 28 + .../items/titles/getting-started/styles.css | 4 + .../panelbar/items/titles/icons/main.js | 4 + .../panelbar/items/titles/icons/main.vue | 69 + .../panelbar/items/titles/icons/styles.css | 4 + .../panelbar/items/titles/images/main.js | 4 + .../panelbar/items/titles/images/main.vue | 49 + .../panelbar/items/titles/images/styles.css | 4 + .../layout/panelbar/keyboard/main.js | 4 + .../layout/panelbar/keyboard/main.vue | 50 + .../layout/panelbar/keyboard/styles.css | 35 + .../layout/panelbar/mounted/main.js | 4 + .../layout/panelbar/mounted/main.vue | 12 + .../layout/panelbar/overview/basic/main.js | 4 + .../layout/panelbar/overview/basic/main.vue | 87 + .../layout/panelbar/overview/basic/styles.css | 35 + .../panelbar/overview/events/Logger.vue | 43 + .../layout/panelbar/overview/events/main.js | 4 + .../layout/panelbar/overview/events/main.vue | 60 + .../panelbar/overview/events/styles.css | 20 + .../layout/panelbar/routing/About.vue | 49 + .../layout/panelbar/routing/Home.vue | 45 + .../layout/panelbar/routing/Products.vue | 29 + .../layout/panelbar/routing/Team.vue | 39 + .../layout/panelbar/routing/index.js | 35 + .../layout/panelbar/routing/main.js | 5 + .../layout/panelbar/routing/main.vue | 67 + .../layout/splitter/events/Logger.vue | 43 + .../layout/splitter/events/main.js | 4 + .../layout/splitter/events/main.vue | 162 + .../layout/splitter/events/styles.css | 20 + .../layout/splitter/keyboard/main.js | 4 + .../layout/splitter/keyboard/main.vue | 12 + .../layout/splitter/keyboard/styles.css | 2 + .../layout/splitter/orientation/main.js | 4 + .../layout/splitter/orientation/main.vue | 88 + .../layout/splitter/orientation/styles.css | 10 + .../layout/splitter/overview/basic/main.js | 4 + .../layout/splitter/overview/basic/main.vue | 76 + .../layout/splitter/overview/basic/styles.css | 3 + .../layout/splitter/panes/collapsing/main.js | 4 + .../layout/splitter/panes/collapsing/main.vue | 49 + .../splitter/panes/collapsing/styles.css | 9 + .../layout/splitter/panes/dimensions/main.js | 4 + .../layout/splitter/panes/dimensions/main.vue | 52 + .../splitter/panes/dimensions/styles.css | 9 + .../layout/splitter/panes/resizing/main.js | 4 + .../layout/splitter/panes/resizing/main.vue | 52 + .../layout/splitter/panes/resizing/styles.css | 9 + .../layout/splitter/panes/scrolling/main.js | 4 + .../layout/splitter/panes/scrolling/main.vue | 91 + .../splitter/panes/scrolling/styles.css | 20 + .../layout/stacklayout/gaps/main.js | 4 + .../layout/stacklayout/gaps/main.vue | 43 + .../layout/stacklayout/gaps/styles.css | 23 + .../stacklayout/horizontalalign/main.js | 4 + .../stacklayout/horizontalalign/main.vue | 61 + .../stacklayout/horizontalalign/styles.css | 18 + .../layout/stacklayout/nestedlayouts/main.js | 4 + .../layout/stacklayout/nestedlayouts/main.vue | 35 + .../stacklayout/nestedlayouts/styles.css | 10 + .../layout/stacklayout/orientation/main.js | 4 + .../layout/stacklayout/orientation/main.vue | 46 + .../layout/stacklayout/orientation/styles.css | 23 + .../layout/stacklayout/overview/main.js | 4 + .../layout/stacklayout/overview/main.vue | 156 + .../layout/stacklayout/overview/styles.css | 30 + .../layout/stacklayout/verticalalign/main.js | 4 + .../layout/stacklayout/verticalalign/main.vue | 64 + .../stacklayout/verticalalign/styles.css | 18 + .../layout/stepper/custom-rendering/main.js | 4 + .../layout/stepper/custom-rendering/main.vue | 148 + .../layout/stepper/display-modes/main.js | 4 + .../layout/stepper/display-modes/main.vue | 116 + .../layout/stepper/events/Logger.vue | 43 + .../layout/stepper/events/main.js | 5 + .../layout/stepper/events/main.vue | 75 + .../layout/stepper/getting-started/main.js | 4 + .../layout/stepper/getting-started/main.vue | 53 + .../stepper/keyboard-navigation/main.js | 4 + .../stepper/keyboard-navigation/main.vue | 53 + .../layout/stepper/linear/main.js | 4 + .../layout/stepper/linear/main.vue | 58 + .../layout/stepper/orientation/main.js | 4 + .../layout/stepper/orientation/main.vue | 67 + .../layout/stepper/types/main.js | 4 + .../layout/stepper/types/main.vue | 42 + .../layout/stepper/validation/basic/main.js | 4 + .../layout/stepper/validation/basic/main.vue | 58 + .../layout/stepper/validation/icons/main.js | 4 + .../layout/stepper/validation/icons/main.vue | 77 + .../layout/tabstrip/configuration/main.js | 4 + .../layout/tabstrip/configuration/main.vue | 47 + .../layout/tabstrip/events/Logger.vue | 43 + .../layout/tabstrip/events/main.js | 4 + .../layout/tabstrip/events/main.vue | 150 + .../layout/tabstrip/keyboard/main.js | 4 + .../layout/tabstrip/keyboard/main.vue | 103 + .../layout/tabstrip/overview/main.js | 4 + .../layout/tabstrip/overview/main.vue | 144 + .../layout/tabstrip/size/main.js | 4 + .../layout/tabstrip/size/main.vue | 103 + .../layout/tabstrip/tabs/alignment/main.js | 4 + .../layout/tabstrip/tabs/alignment/main.vue | 129 + .../tabstrip/tabs/closable-tabs/Title.vue | 32 + .../tabstrip/tabs/closable-tabs/main.js | 4 + .../tabstrip/tabs/closable-tabs/main.vue | 62 + .../layout/tabstrip/tabs/disabled/main.js | 4 + .../layout/tabstrip/tabs/disabled/main.vue | 48 + .../layout/tabstrip/tabs/initial/main.js | 4 + .../layout/tabstrip/tabs/initial/main.vue | 47 + .../layout/tabstrip/tabs/position/main.js | 4 + .../layout/tabstrip/tabs/position/main.vue | 125 + .../layout/tabstrip/tabs/titles/main.js | 4 + .../layout/tabstrip/tabs/titles/main.vue | 47 + .../tilelayout/add-remove/PageViews.vue | 77 + .../add-remove/PopularPagesChart.vue | 60 + .../tilelayout/add-remove/VisitorsDonut.vue | 37 + .../tilelayout/add-remove/WindowContent.vue | 109 + .../layout/tilelayout/add-remove/main.js | 4 + .../layout/tilelayout/add-remove/main.vue | 234 + .../tilelayout/add-remove/tilelayout-data.js | 104 + .../layout/tilelayout/auto-flow/main.js | 4 + .../layout/tilelayout/auto-flow/main.vue | 105 + .../tilelayout/configuration-unique/main.js | 4 + .../tilelayout/configuration-unique/main.vue | 96 + .../layout/tilelayout/configuration/main.js | 4 + .../layout/tilelayout/configuration/main.vue | 89 + .../layout/tilelayout/events/Logger.vue | 45 + .../layout/tilelayout/events/main.js | 4 + .../layout/tilelayout/events/main.vue | 106 + .../tilelayout/overview/ConversionRate.vue | 33 + .../tilelayout/overview/ConversionsChart.vue | 70 + .../layout/tilelayout/overview/PageViews.vue | 76 + .../tilelayout/overview/PopularPagesChart.vue | 60 + .../layout/tilelayout/overview/UsersGrid.vue | 32 + .../tilelayout/overview/VisitorsDonut.vue | 37 + .../layout/tilelayout/overview/main.js | 4 + .../layout/tilelayout/overview/main.vue | 183 + .../tilelayout/overview/tilelayout-data.js | 78 + .../tilelayout/tiles/controlled-mode/main.js | 4 + .../tilelayout/tiles/controlled-mode/main.vue | 76 + .../tiles/custom-header-body/main.js | 4 + .../tiles/custom-header-body/main.vue | 88 + .../tilelayout/tiles/custom-rendering/main.js | 4 + .../tiles/custom-rendering/main.vue | 78 + .../layout/tilelayout/tiles/positions/main.js | 4 + .../tilelayout/tiles/positions/main.vue | 78 + .../tilelayout/tiles/reordering/main.js | 4 + .../tilelayout/tiles/reordering/main.vue | 52 + .../layout/tilelayout/tiles/resizing/main.js | 4 + .../layout/tilelayout/tiles/resizing/main.vue | 68 + .../layout/wizard/basic/AccountDetails.vue | 93 + .../layout/wizard/basic/FormInput.vue | 90 + .../layout/wizard/basic/PersonalDetails.vue | 67 + .../layout/wizard/basic/Register.vue | 16 + .../layout/wizard/basic/main.js | 4 + .../layout/wizard/basic/main.vue | 123 + .../layout/wizard/basic/validators.js | 83 + .../wizard/positioning/AccountDetails.vue | 93 + .../layout/wizard/positioning/FormInput.vue | 90 + .../wizard/positioning/PersonalDetails.vue | 67 + .../layout/wizard/positioning/Register.vue | 17 + .../layout/wizard/positioning/main.js | 4 + .../layout/wizard/positioning/main.vue | 173 + .../layout/wizard/positioning/validators.js | 83 + .../layout/wizard/router/FormContent.vue | 58 + .../layout/wizard/router/FormInput.vue | 82 + .../layout/wizard/router/Overview.vue | 13 + .../layout/wizard/router/Register.vue | 13 + .../layout/wizard/router/UserDetails.vue | 20 + .../layout/wizard/router/index.js | 29 + .../layout/wizard/router/main.js | 5 + .../layout/wizard/router/main.vue | 94 + .../wizard/validation/step/AccountDetails.vue | 124 + .../wizard/validation/step/CardSelector.vue | 201 + .../wizard/validation/step/ErrorSummary.vue | 62 + .../validation/step/FormAutoComplete.vue | 79 + .../wizard/validation/step/FormCheckbox.vue | 89 + .../wizard/validation/step/FormDateInput.vue | 77 + .../wizard/validation/step/FormDatePicker.vue | 79 + .../wizard/validation/step/FormInput.vue | 90 + .../validation/step/FormMaskedTextBox.vue | 83 + .../validation/step/FormNumericTextBox.vue | 79 + .../wizard/validation/step/FormRadioGroup.vue | 104 + .../wizard/validation/step/FormTextArea.vue | 80 + .../wizard/validation/step/FormUpload.vue | 90 + .../wizard/validation/step/PaymentDetails.vue | 152 + .../validation/step/PersonalDetails.vue | 182 + .../layout/wizard/validation/step/main.js | 4 + .../layout/wizard/validation/step/main.vue | 167 + .../wizard/validation/step/validators.js | 83 + .../validation/submit/AccountDetails.vue | 111 + .../wizard/validation/submit/CardSelector.vue | 201 + .../wizard/validation/submit/ErrorSummary.vue | 62 + .../validation/submit/FormAutoComplete.vue | 79 + .../wizard/validation/submit/FormCheckbox.vue | 89 + .../validation/submit/FormDateInput.vue | 77 + .../validation/submit/FormDatePicker.vue | 79 + .../wizard/validation/submit/FormInput.vue | 90 + .../validation/submit/FormMaskedTextBox.vue | 83 + .../validation/submit/FormNumericTextBox.vue | 79 + .../validation/submit/FormRadioGroup.vue | 106 + .../wizard/validation/submit/FormTextArea.vue | 80 + .../wizard/validation/submit/FormUpload.vue | 90 + .../validation/submit/PaymentDetails.vue | 136 + .../validation/submit/PersonalDetails.vue | 167 + .../layout/wizard/validation/submit/main.js | 4 + .../layout/wizard/validation/submit/main.vue | 138 + .../wizard/validation/submit/validators.js | 83 + .../listbox/customization/main.js | 4 + .../listbox/customization/main.vue | 130 + .../listbox/customization/products.json | 1233 + .../listbox/drag-and-drop/main.js | 4 + .../listbox/drag-and-drop/main.vue | 94 + .../listbox/drag-and-drop/products.json | 1233 + .../listbox/get-started/data.js | 30 + .../listbox/get-started/main.js | 4 + .../listbox/get-started/main.vue | 101 + .../listbox/messages/data.js | 30 + .../listbox/messages/es.json | 11 + .../listbox/messages/main.js | 4 + .../listbox/messages/main.vue | 108 + .../listbox/multiple-lists/main.js | 4 + .../listbox/multiple-lists/main.vue | 151 + .../listbox/overview/data.js | 30 + .../listbox/overview/main.js | 4 + .../listbox/overview/main.vue | 101 + vue-options-api-demos/listbox/rtl/data.js | 30 + vue-options-api-demos/listbox/rtl/main.js | 4 + vue-options-api-demos/listbox/rtl/main.vue | 103 + .../listbox/selection/data.js | 30 + .../listbox/selection/main.js | 4 + .../listbox/selection/main.vue | 100 + vue-options-api-demos/listbox/shared/data.js | 30 + vue-options-api-demos/listbox/shared/es.json | 11 + .../listbox/shared/products.json | 1233 + .../listview/default-scrolling/employees.js | 1402 + .../listview/default-scrolling/images.js | 55 + .../listview/default-scrolling/main.js | 4 + .../listview/default-scrolling/main.vue | 112 + .../listview/editing/ItemRender.vue | 175 + .../listview/editing/main.js | 4 + .../listview/editing/main.vue | 55 + .../listview/editing/products.json | 1234 + .../endless-scrolling/destinations.json | 117 + .../listview/endless-scrolling/main.js | 4 + .../listview/endless-scrolling/main.vue | 102 + .../listview/events/Logger.vue | 45 + vue-options-api-demos/listview/events/main.js | 4 + .../listview/events/main.vue | 49 + .../listview/events/products.json | 1234 + .../listview/filtering/main.js | 4 + .../listview/filtering/main.vue | 138 + .../listview/filtering/products.json | 1234 + .../listview/footer-template/main.js | 4 + .../listview/footer-template/main.vue | 91 + .../listview/footer-template/products.json | 1234 + .../listview/get-started/main.js | 4 + .../listview/get-started/main.vue | 31 + .../listview/get-started/products.json | 1234 + .../listview/header-template/main.js | 4 + .../listview/header-template/main.vue | 121 + .../listview/header-template/products.json | 1234 + .../listview/item-template/main.js | 4 + .../listview/item-template/main.vue | 66 + .../listview/item-template/products.json | 1234 + .../listview/overview/contacts.json | 45 + .../listview/overview/main.js | 4 + .../listview/overview/main.vue | 96 + .../listview/paging/articles.json | 152 + vue-options-api-demos/listview/paging/main.js | 4 + .../listview/paging/main.vue | 111 + .../listview/shared/articles.json | 152 + .../listview/shared/contacts.json | 45 + .../listview/shared/destinations.json | 117 + .../listview/shared/products.json | 1234 + .../notification/animation/main.js | 4 + .../notification/animation/main.vue | 149 + .../notification/animation/styles.css | 3 + .../notification/events/Logger.vue | 45 + .../notification/events/main.js | 5 + .../notification/events/main.vue | 139 + .../notification/get-started/main.js | 4 + .../notification/get-started/main.vue | 56 + .../notification/get-started/styles.css | 3 + .../notification/overview/main.js | 4 + .../notification/overview/main.vue | 135 + .../notification/overview/styles.css | 3 + .../notification/positions/Notifications.vue | 22 + .../notification/positions/main.js | 4 + .../notification/positions/main.vue | 51 + .../notification/types/main.js | 4 + .../notification/types/main.vue | 124 + vue-options-api-demos/pdf/base64/main.js | 4 + vue-options-api-demos/pdf/base64/main.vue | 66 + .../pdf/content-scaling/main.js | 4 + .../pdf/content-scaling/main.vue | 67 + .../pdf/content-styling/class/main.js | 4 + .../pdf/content-styling/class/main.vue | 44 + .../pdf/content-styling/class/styles.css | 4 + .../pdf/content-styling/element/main.js | 4 + .../pdf/content-styling/element/main.vue | 44 + .../pdf/content-styling/element/styles.css | 3 + .../pdf/embedded-image/main.js | 4 + .../pdf/embedded-image/main.vue | 39 + vue-options-api-demos/pdf/get-started/main.js | 4 + .../pdf/get-started/main.vue | 58 + .../pdf/get-started/products.json | 155 + .../pdf/hidden-content/main.js | 4 + .../pdf/hidden-content/main.vue | 53 + vue-options-api-demos/pdf/hyperlinks/main.js | 4 + vue-options-api-demos/pdf/hyperlinks/main.vue | 29 + .../automatic-page-breaking/main.js | 4 + .../automatic-page-breaking/main.vue | 71 + .../manual-page-breaking/main.js | 4 + .../manual-page-breaking/main.vue | 46 + .../Content.vue | 56 + .../multi-page-content-keep-together/main.js | 4 + .../multi-page-content-keep-together/main.vue | 31 + .../page-templates/Content.vue | 56 + .../multipage-content/page-templates/main.js | 4 + .../multipage-content/page-templates/main.vue | 47 + vue-options-api-demos/pdf/overview/main.js | 4 + vue-options-api-demos/pdf/overview/main.vue | 136 + .../pdf/table-headers/main.js | 4 + .../pdf/table-headers/main.vue | 59 + .../pdf/table-headers/products.json | 1021 + .../popup/align/absolute/main.js | 4 + .../popup/align/absolute/main.vue | 25 + .../popup/align/absolute/styles.css | 6 + .../popup/align/basic/main.js | 4 + .../popup/align/basic/main.vue | 48 + .../popup/align/basic/styles.css | 6 + .../popup/align/positioning/main.js | 4 + .../popup/align/positioning/main.vue | 118 + .../popup/align/positioning/styles.css | 23 + .../popup/animations/main.js | 4 + .../popup/animations/main.vue | 78 + .../popup/animations/styles.css | 6 + vue-options-api-demos/popup/basic/main.js | 4 + vue-options-api-demos/popup/basic/main.vue | 48 + vue-options-api-demos/popup/basic/styles.css | 6 + vue-options-api-demos/popup/hidden/main.js | 4 + vue-options-api-demos/popup/hidden/main.vue | 48 + vue-options-api-demos/popup/hidden/styles.css | 6 + vue-options-api-demos/popup/styling/main.js | 4 + vue-options-api-demos/popup/styling/main.vue | 49 + .../popup/styling/styles.css | 9 + vue-options-api-demos/popup/viewport/main.js | 4 + vue-options-api-demos/popup/viewport/main.vue | 56 + .../popup/viewport/styles.css | 19 + .../appearance/FormContent.vue | 141 + .../appearance/FormDropDownList.vue | 82 + .../chunkprogressbar/appearance/FormInput.vue | 84 + .../chunkprogressbar/appearance/main.js | 4 + .../chunkprogressbar/appearance/main.vue | 27 + .../chunkprogressbar/dimensions/main.js | 4 + .../chunkprogressbar/dimensions/main.vue | 31 + .../chunkprogressbar/direction/main.js | 4 + .../chunkprogressbar/direction/main.vue | 54 + .../chunkprogressbar/disabled/main.js | 4 + .../chunkprogressbar/disabled/main.vue | 35 + .../chunkprogressbar/orientation/main.js | 4 + .../chunkprogressbar/orientation/main.vue | 41 + .../chunkprogressbar/overview/main.js | 4 + .../chunkprogressbar/overview/main.vue | 33 + .../chunkprogressbar/value_ranges/main.js | 4 + .../chunkprogressbar/value_ranges/main.vue | 71 + .../progressbars/get-started/main.js | 4 + .../progressbars/get-started/main.vue | 18 + .../progressbars/globalization/main.js | 4 + .../progressbars/globalization/main.vue | 43 + .../progressbars/overview/main.js | 4 + .../progressbars/overview/main.vue | 45 + .../progressbar/animation-2/main.js | 4 + .../progressbar/animation-2/main.vue | 53 + .../progressbar/animation/main.js | 4 + .../progressbar/animation/main.vue | 53 + .../progressbar/appearance/main.js | 4 + .../progressbar/appearance/main.vue | 101 + .../progressbar/dimensions/main.js | 4 + .../progressbar/dimensions/main.vue | 22 + .../progressbar/direction/main.js | 4 + .../progressbar/direction/main.vue | 44 + .../progressbars/progressbar/disabled/main.js | 4 + .../progressbar/disabled/main.vue | 41 + .../progressbar/label/custom/main.js | 4 + .../progressbar/label/custom/main.vue | 53 + .../progressbar/label/getting-started/main.js | 4 + .../label/getting-started/main.vue | 67 + .../progressbar/orientation/main.js | 4 + .../progressbar/orientation/main.vue | 23 + .../progressbars/progressbar/overview/main.js | 4 + .../progressbar/overview/main.vue | 49 + .../progressbar/value_ranges/main.js | 4 + .../progressbar/value_ranges/main.vue | 73 + .../scheduler/accessibility/summary/main.js | 4 + .../scheduler/accessibility/summary/main.vue | 9 + .../disabled/events-utc.js | 847 + .../adaptive-slot-height/disabled/main.js | 4 + .../adaptive-slot-height/disabled/main.vue | 80 + .../overview/events-utc.js | 847 + .../adaptive-slot-height/overview/main.js | 4 + .../adaptive-slot-height/overview/main.vue | 88 + .../auto-item-height/constant/events-utc.js | 847 + .../auto-item-height/constant/main.js | 4 + .../auto-item-height/constant/main.vue | 82 + .../auto-item-height/overview/events-utc.js | 847 + .../auto-item-height/overview/main.js | 4 + .../auto-item-height/overview/main.vue | 82 + .../scheduler/context/main.js | 4 + .../scheduler/context/main.vue | 9 + .../agenda/task/events-utc.js | 847 + .../custom-templates/agenda/task/main.js | 4 + .../custom-templates/agenda/task/main.vue | 62 + .../events/color/events-utc.js | 847 + .../custom-templates/events/color/main.js | 4 + .../custom-templates/events/color/main.vue | 47 + .../events/image/events-utc.js | 900 + .../custom-templates/events/image/main.js | 4 + .../custom-templates/events/image/main.vue | 51 + .../events/resources/events-utc.js | 900 + .../custom-templates/events/resources/main.js | 4 + .../events/resources/main.vue | 107 + .../header-footer/events-utc.js | 847 + .../custom-templates/header-footer/main.js | 4 + .../custom-templates/header-footer/main.vue | 145 + .../slots/color/events-utc.js | 847 + .../custom-templates/slots/color/main.js | 4 + .../custom-templates/slots/color/main.vue | 55 + .../slots/month/events-utc.js | 847 + .../custom-templates/slots/month/main.js | 4 + .../custom-templates/slots/month/main.vue | 52 + .../custom-templates/slots/time/events-utc.js | 847 + .../custom-templates/slots/time/main.js | 4 + .../custom-templates/slots/time/main.vue | 52 + .../scheduler/customization/.DS_Store | Bin 0 -> 6148 bytes .../editor/custom-editor/main.js | 4 + .../editor/custom-editor/main.vue | 9 + .../default-editor/extending-root/main.js | 4 + .../default-editor/extending-root/main.vue | 9 + .../default-editor/replacing-editors/main.js | 4 + .../default-editor/replacing-editors/main.vue | 9 + .../form/custom-components/main.js | 4 + .../form/custom-components/main.vue | 9 + .../form/default-rendering/main.js | 4 + .../form/default-rendering/main.vue | 9 + .../data-binding/data-change/main.js | 4 + .../data-binding/data-change/main.vue | 9 + .../scheduler/data-binding/data/main.js | 4 + .../scheduler/data-binding/data/main.vue | 40 + .../data-binding/model-fields/main.js | 4 + .../data-binding/model-fields/main.vue | 52 + .../editing/basic/events-utc.js | 847 + .../data-operations/editing/basic/main.js | 4 + .../data-operations/editing/basic/main.vue | 62 + .../editing/custom-form/CustomEditForm.vue | 116 + .../custom-form/FormDateTimePicker.vue | 78 + .../editing/custom-form/FormInput.vue | 89 + .../editing/custom-form/FormSwitch.vue | 102 + .../editing/custom-form/FormTextArea.vue | 84 + .../editing/custom-form/events-utc.js | 847 + .../editing/custom-form/main.js | 4 + .../editing/custom-form/main.vue | 67 + .../customize-default/CustomEditForm.vue | 63 + .../editing/customize-default/FormInput.vue | 89 + .../editing/customize-default/FormSwitch.vue | 102 + .../editing/customize-default/events-utc.js | 847 + .../editing/customize-default/main.js | 4 + .../editing/customize-default/main.vue | 67 + .../editing/default-values/events-utc.js | 847 + .../editing/default-values/main.js | 4 + .../editing/default-values/main.vue | 117 + .../using-custom-form/CustomEditForm.vue | 116 + .../using-custom-form/FormDateTimePicker.vue | 78 + .../using-custom-form/FormInput.vue | 89 + .../using-custom-form/FormSwitch.vue | 102 + .../using-custom-form/FormTextArea.vue | 84 + .../using-custom-form/events-utc.js | 847 + .../validation/using-custom-form/main.js | 4 + .../validation/using-custom-form/main.vue | 76 + .../using-default-form/events-utc.js | 847 + .../validation/using-default-form/main.js | 4 + .../validation/using-default-form/main.vue | 116 + .../grouping/configuration/data.js | 32 + .../grouping/configuration/main.js | 4 + .../grouping/configuration/main.vue | 56 + .../data-operations/grouping/multiple/data.js | 18 + .../data-operations/grouping/multiple/main.js | 4 + .../grouping/multiple/main.vue | 59 + .../resources/multiple/events-utc.js | 847 + .../resources/multiple/main.js | 4 + .../resources/multiple/main.vue | 58 + .../resources/visual/events-utc.js | 847 + .../data-operations/resources/visual/main.js | 4 + .../data-operations/resources/visual/main.vue | 47 + .../date-selection/controlled/main.js | 4 + .../date-selection/controlled/main.vue | 9 + .../date-selection/uncontrolled/main.js | 4 + .../date-selection/uncontrolled/main.vue | 9 + .../scheduler/globalization/overview/es.json | 19 + .../globalization/overview/events-utc.js | 847 + .../scheduler/globalization/overview/main.js | 4 + .../scheduler/globalization/overview/main.vue | 92 + .../scheduler/globalization/rtl/events-utc.js | 847 + .../scheduler/globalization/rtl/main.js | 4 + .../scheduler/globalization/rtl/main.vue | 32 + .../header-footer/customization/main.js | 4 + .../header-footer/customization/main.vue | 9 + .../items/context/action-binding/main.js | 4 + .../items/context/action-binding/main.vue | 9 + .../items/edit-item/controlled-state/main.js | 4 + .../items/edit-item/controlled-state/main.vue | 9 + .../items/edit-item/extending/main.js | 4 + .../items/edit-item/extending/main.vue | 9 + .../scheduler/items/item/callbacks/main.js | 4 + .../scheduler/items/item/callbacks/main.vue | 9 + .../scheduler/items/item/children/main.js | 4 + .../scheduler/items/item/children/main.vue | 9 + .../scheduler/items/item/style/main.js | 4 + .../scheduler/items/item/style/main.vue | 9 + .../custom-behavior/main.js | 4 + .../custom-behavior/main.vue | 9 + .../multiple-selection/custom-trigger/main.js | 4 + .../custom-trigger/main.vue | 9 + .../default-behavior/main.js | 4 + .../default-behavior/main.vue | 9 + .../scheduler/items/overview/events-utc.js | 847 + .../scheduler/items/overview/main.js | 4 + .../scheduler/items/overview/main.vue | 47 + .../items/view-item/extending/main.js | 4 + .../items/view-item/extending/main.vue | 9 + .../keyboard-navigation/basic/events-utc.js | 847 + .../keyboard-navigation/basic/main.js | 4 + .../keyboard-navigation/basic/main.vue | 107 + .../scheduler/overview/basic/events-utc.js | 847 + .../scheduler/overview/basic/main.js | 4 + .../scheduler/overview/basic/main.vue | 31 + .../scheduler/overview/demo/es.json | 13 + .../scheduler/overview/demo/events-utc.js | 847 + .../scheduler/overview/demo/main.js | 4 + .../scheduler/overview/demo/main.vue | 126 + .../scheduler/recurring/overview/id/main.js | 4 + .../scheduler/recurring/overview/id/main.vue | 9 + .../recurring/overview/id/server-data.js | 51 + .../recurring/overview/overview/data.js | 35 + .../recurring/overview/overview/main.js | 4 + .../recurring/overview/overview/main.vue | 9 + .../scheduler/shared/events-utc.js | 847 + .../slots/context/action-binding/main.js | 4 + .../slots/context/action-binding/main.vue | 9 + .../slots/edit-slot/controlled-state/main.js | 4 + .../slots/edit-slot/controlled-state/main.vue | 9 + .../scheduler/slots/overview/main.js | 4 + .../scheduler/slots/overview/main.vue | 9 + .../scheduler/slots/slot/style/main.js | 4 + .../scheduler/slots/slot/style/main.vue | 9 + .../slots/view-slot/extending/main.js | 4 + .../slots/view-slot/extending/main.vue | 9 + .../scheduler/tasks/overview/main.js | 4 + .../scheduler/tasks/overview/main.vue | 9 + .../scheduler/timezones/default/main.js | 4 + .../scheduler/timezones/default/main.vue | 34 + .../scheduler/timezones/fixed/main.js | 4 + .../scheduler/timezones/fixed/main.vue | 34 + .../views/agenda/configuration/events-utc.js | 847 + .../views/agenda/configuration/main.js | 4 + .../views/agenda/configuration/main.vue | 33 + .../views/agenda/grouping/events-utc.js | 847 + .../scheduler/views/agenda/grouping/main.js | 4 + .../scheduler/views/agenda/grouping/main.vue | 64 + .../views/controlled-state/events-utc.js | 847 + .../scheduler/views/controlled-state/main.js | 4 + .../scheduler/views/controlled-state/main.vue | 56 + .../views/day/configuration/events-utc.js | 847 + .../scheduler/views/day/configuration/main.js | 4 + .../views/day/configuration/main.vue | 41 + .../scheduler/views/day/current-time/main.js | 4 + .../scheduler/views/day/current-time/main.vue | 68 + .../views/day/grouping-vertical/events-utc.js | 847 + .../views/day/grouping-vertical/main.js | 4 + .../views/day/grouping-vertical/main.vue | 71 + .../views/day/grouping/events-utc.js | 847 + .../scheduler/views/day/grouping/main.js | 4 + .../scheduler/views/day/grouping/main.vue | 71 + .../views/default-view/events-utc.js | 847 + .../scheduler/views/default-view/main.js | 4 + .../scheduler/views/default-view/main.vue | 30 + .../views/getting-started/events-utc.js | 847 + .../scheduler/views/getting-started/main.js | 4 + .../scheduler/views/getting-started/main.vue | 30 + .../views/month/configuration/events-utc.js | 847 + .../views/month/configuration/main.js | 4 + .../views/month/configuration/main.vue | 36 + .../month/grouping-vertical/events-utc.js | 847 + .../views/month/grouping-vertical/main.js | 4 + .../views/month/grouping-vertical/main.vue | 66 + .../views/month/grouping/events-utc.js | 847 + .../scheduler/views/month/grouping/main.js | 4 + .../scheduler/views/month/grouping/main.vue | 66 + .../timeline/configuration/events-utc.js | 847 + .../views/timeline/configuration/main.js | 4 + .../views/timeline/configuration/main.vue | 46 + .../views/timeline/current-time/main.js | 4 + .../views/timeline/current-time/main.vue | 9 + .../timeline/grouping-vertical/events-utc.js | 847 + .../views/timeline/grouping-vertical/main.js | 4 + .../views/timeline/grouping-vertical/main.vue | 71 + .../views/timeline/grouping/events-utc.js | 847 + .../scheduler/views/timeline/grouping/main.js | 4 + .../views/timeline/grouping/main.vue | 71 + .../views/week/configuration/events-utc.js | 847 + .../views/week/configuration/main.js | 4 + .../views/week/configuration/main.vue | 43 + .../week/grouping-vertical/events-utc.js | 847 + .../views/week/grouping-vertical/main.js | 4 + .../views/week/grouping-vertical/main.vue | 72 + .../views/week/grouping/events-utc.js | 847 + .../scheduler/views/week/grouping/main.js | 4 + .../scheduler/views/week/grouping/main.vue | 72 + .../scrollview/active-view/main.js | 4 + .../scrollview/active-view/main.vue | 76 + .../scrollview/active-view/styles.css | 18 + .../scrollview/arrows/main.js | 4 + .../scrollview/arrows/main.vue | 90 + .../scrollview/arrows/styles.css | 18 + .../scrollview/automatic-interval/main.js | 4 + .../scrollview/automatic-interval/main.vue | 76 + .../scrollview/automatic-interval/styles.css | 18 + .../scrollview/automatic-scrolling/main.js | 4 + .../scrollview/automatic-scrolling/main.vue | 76 + .../scrollview/automatic-scrolling/styles.css | 18 + .../scrollview/endless/main.js | 4 + .../scrollview/endless/main.vue | 76 + .../scrollview/endless/styles.css | 18 + .../scrollview/get-started/main.js | 4 + .../scrollview/get-started/main.vue | 56 + .../scrollview/get-started/styles.css | 5 + .../scrollview/keyboard-navigation/main.js | 4 + .../scrollview/keyboard-navigation/main.vue | 72 + .../scrollview/keyboard-navigation/styles.css | 20 + .../scrollview/overview/main.js | 4 + .../scrollview/overview/main.vue | 73 + .../scrollview/overview/styles.css | 20 + .../scrollview/pager-overlay/main.js | 4 + .../scrollview/pager-overlay/main.vue | 105 + .../scrollview/pager-overlay/styles.css | 18 + .../scrollview/paging/main.js | 4 + .../scrollview/paging/main.vue | 97 + .../scrollview/paging/styles.css | 18 + vue-options-api-demos/scrollview/rtl/main.js | 4 + vue-options-api-demos/scrollview/rtl/main.vue | 51 + .../scrollview/rtl/styles.css | 5 + .../tooltip/controlled-mode/main.js | 4 + .../tooltip/controlled-mode/main.vue | 73 + .../tooltip/customization/main.js | 4 + .../tooltip/customization/main.vue | 62 + .../tooltip/events/Logger.vue | 43 + vue-options-api-demos/tooltip/events/main.js | 4 + vue-options-api-demos/tooltip/events/main.vue | 57 + .../tooltip/events/styles.css | 72 + vue-options-api-demos/tooltip/filters/main.js | 4 + .../tooltip/filters/main.vue | 47 + .../tooltip/grid-integration/main.js | 4 + .../tooltip/grid-integration/main.vue | 27 + .../tooltip/multiple/main.js | 4 + .../tooltip/multiple/main.vue | 37 + .../tooltip/overview/main.js | 4 + .../tooltip/overview/main.vue | 30 + .../tooltip/overview/styles.css | 71 + .../tooltip/positioning/main.js | 4 + .../tooltip/positioning/main.vue | 76 + .../tooltip/shared/products.json | 1233 + vue-options-api-demos/tooltip/svg/main.js | 4 + vue-options-api-demos/tooltip/svg/main.vue | 303 + .../tooltip/templates/main.js | 4 + .../tooltip/templates/main.vue | 70 + .../treelist/aggregates/data.js | 1150 + .../treelist/aggregates/main.js | 4 + .../treelist/aggregates/main.vue | 125 + .../treelist/cells-custom/data.js | 1150 + .../treelist/cells-custom/main.js | 4 + .../treelist/cells-custom/main.vue | 155 + .../treelist/column-menu/data.js | 1150 + .../treelist/column-menu/main.js | 4 + .../treelist/column-menu/main.vue | 111 + .../treelist/column-virtualization/main.js | 4 + .../treelist/column-virtualization/main.vue | 75 + .../column-virtualization/treelist-data.js | 26 + .../treelist/column-width-fixed/data.js | 1150 + .../treelist/column-width-fixed/main.js | 4 + .../treelist/column-width-fixed/main.vue | 78 + .../treelist/column-width-percentage/data.js | 1150 + .../treelist/column-width-percentage/main.js | 4 + .../treelist/column-width-percentage/main.vue | 74 + .../treelist/dragdrop/data.js | 1150 + .../treelist/dragdrop/main.js | 4 + .../treelist/dragdrop/main.vue | 85 + .../editing-external-form/CommandCell.vue | 49 + .../editing-external-form/DialogContainer.vue | 86 + .../treelist/editing-external-form/data.js | 1150 + .../treelist/editing-external-form/main.js | 4 + .../treelist/editing-external-form/main.vue | 114 + .../treelist/editing-in-cell/data.js | 1150 + .../treelist/editing-in-cell/main.js | 4 + .../treelist/editing-in-cell/main.vue | 216 + .../treelist/editing-inline/CommandCell.vue | 90 + .../treelist/editing-inline/data.js | 1150 + .../treelist/editing-inline/main.js | 4 + .../treelist/editing-inline/main.vue | 191 + .../treelist/editing-row-click/data.js | 1150 + .../treelist/editing-row-click/main.js | 4 + .../treelist/editing-row-click/main.vue | 156 + .../treelist/excel/basic/data.js | 1150 + .../treelist/excel/basic/main.js | 4 + .../treelist/excel/basic/main.vue | 104 + .../treelist/excel/customization/data.js | 1150 + .../treelist/excel/customization/main.js | 4 + .../treelist/excel/customization/main.vue | 126 + .../treelist/excel/single-page/data.js | 1150 + .../treelist/excel/single-page/main.js | 4 + .../treelist/excel/single-page/main.vue | 115 + .../treelist/filtering-basic/data.js | 1150 + .../treelist/filtering-basic/main.js | 4 + .../treelist/filtering-basic/main.vue | 96 + .../filtering-custom/DropDownListFilter.vue | 25 + .../treelist/filtering-custom/data.js | 1150 + .../treelist/filtering-custom/main.js | 4 + .../treelist/filtering-custom/main.vue | 126 + .../treelist/flat-data/flat-data.js | 1093 + .../treelist/flat-data/main.js | 4 + .../treelist/flat-data/main.vue | 117 + .../treelist/get-started/main.js | 4 + .../treelist/get-started/main.vue | 42 + .../treelist/get-started/simple-data.js | 28 + .../treelist/globalization/data.js | 1150 + .../treelist/globalization/es.json | 44 + .../treelist/globalization/main.js | 4 + .../treelist/globalization/main.vue | 99 + .../treelist/keyboard-navigation/data.js | 1150 + .../treelist/keyboard-navigation/main.js | 4 + .../treelist/keyboard-navigation/main.vue | 109 + vue-options-api-demos/treelist/locked/data.js | 1150 + vue-options-api-demos/treelist/locked/main.js | 4 + .../treelist/locked/main.vue | 103 + .../treelist/multi-column-headers/data.js | 1150 + .../treelist/multi-column-headers/main.js | 4 + .../treelist/multi-column-headers/main.vue | 107 + .../treelist/overview/data.js | 1150 + .../treelist/overview/main.js | 4 + .../treelist/overview/main.vue | 108 + vue-options-api-demos/treelist/paging/main.js | 4 + .../treelist/paging/main.vue | 73 + .../treelist/paging/treelist-data.js | 26 + .../treelist/pdf/all-data-expanded/data.js | 1150 + .../treelist/pdf/all-data-expanded/main.js | 4 + .../treelist/pdf/all-data-expanded/main.vue | 128 + .../treelist/pdf/basic/data.js | 1150 + .../treelist/pdf/basic/main.js | 4 + .../treelist/pdf/basic/main.vue | 114 + .../treelist/pdf/columns-modification/data.js | 1150 + .../treelist/pdf/columns-modification/main.js | 4 + .../pdf/columns-modification/main.vue | 131 + .../treelist/reordering/data.js | 1150 + .../treelist/reordering/main.js | 4 + .../treelist/reordering/main.vue | 94 + .../treelist/resizing/data.js | 1150 + .../treelist/resizing/main.js | 4 + .../treelist/resizing/main.vue | 100 + .../treelist/selection-basic/data.js | 1150 + .../treelist/selection-basic/main.js | 4 + .../treelist/selection-basic/main.vue | 130 + vue-options-api-demos/treelist/shared/data.js | 1150 + .../treelist/shared/flat-data.js | 1093 + .../treelist/shared/pager.tsx | 14 + .../treelist/shared/simple-data.js | 28 + .../treelist/shared/treelist-data.js | 26 + .../treelist/sorting-basic/data.js | 1150 + .../treelist/sorting-basic/main.js | 4 + .../treelist/sorting-basic/main.vue | 101 + .../treelist/sorting-customization/data.js | 1150 + .../treelist/sorting-customization/main.js | 4 + .../treelist/sorting-customization/main.vue | 129 + .../treelist/toolbar/data.js | 1150 + .../treelist/toolbar/main.js | 4 + .../treelist/toolbar/main.vue | 126 + .../treelist/virtual-scroll/main.js | 4 + .../treelist/virtual-scroll/main.vue | 77 + .../treelist/virtual-scroll/treelist-data.js | 26 + .../treeview/appearance/StyleConfigurator.vue | 61 + .../treeview/appearance/main.js | 4 + .../treeview/appearance/main.vue | 112 + .../checkbox/checkbox-all-helper/main.js | 4 + .../checkbox/checkbox-all-helper/main.vue | 113 + .../treeview/checkbox/checkbox-all/main.js | 4 + .../treeview/checkbox/checkbox-all/main.vue | 101 + .../checkbox/checkbox-helper-multiple/main.js | 4 + .../checkbox-helper-multiple/main.vue | 70 + .../checkbox/checkbox-helper-single/main.js | 4 + .../checkbox/checkbox-helper-single/main.vue | 71 + .../treeview/checkbox/checkbox-helper/main.js | 4 + .../checkbox/checkbox-helper/main.vue | 113 + vue-options-api-demos/treeview/custom/main.js | 4 + .../treeview/custom/main.vue | 106 + .../treeview/data-binding/basic/main.js | 4 + .../treeview/data-binding/basic/main.vue | 51 + .../treeview/data-binding/item-fields/main.js | 4 + .../data-binding/item-fields/main.vue | 50 + .../treeview/data-binding/remote-data/main.js | 4 + .../data-binding/remote-data/main.vue | 68 + .../treeview/data-reload/main.js | 4 + .../treeview/data-reload/main.vue | 12 + .../treeview/drag/multiple/main.js | 4 + .../treeview/drag/multiple/main.vue | 191 + .../treeview/drag/single/main.js | 4 + .../treeview/drag/single/main.vue | 167 + .../treeview/events/drag/Logger.vue | 45 + .../treeview/events/drag/main.js | 4 + .../treeview/events/drag/main.vue | 190 + .../treeview/events/select-check/Logger.vue | 45 + .../treeview/events/select-check/main.js | 4 + .../treeview/events/select-check/main.vue | 121 + .../main.js | 4 + .../main.vue | 101 + .../expand/items-expanded-all/main.js | 4 + .../expand/items-expanded-all/main.vue | 132 + .../expand/items-expanded-directly/main.js | 4 + .../expand/items-expanded-directly/main.vue | 59 + .../items-expanded-helper-function/main.js | 4 + .../items-expanded-helper-function/main.vue | 66 + .../treeview/get-started/main.js | 4 + .../treeview/get-started/main.vue | 51 + .../treeview/keyboard/main.js | 4 + .../treeview/keyboard/main.vue | 103 + .../treeview/overview/basic/main.js | 4 + .../treeview/overview/basic/main.vue | 103 + .../treeview/select/selection-all/main.js | 4 + .../treeview/select/selection-all/main.vue | 91 + .../selection-update-helper-function/main.js | 4 + .../selection-update-helper-function/main.vue | 72 + .../treeview/select/selection-update/main.js | 4 + .../treeview/select/selection-update/main.vue | 61 + .../upload/action-buttons/main.js | 4 + .../upload/action-buttons/main.vue | 58 + .../upload/additional-data/main.js | 4 + .../upload/additional-data/main.vue | 31 + .../upload/credentials/main.js | 4 + .../upload/credentials/main.vue | 21 + .../upload/custom-complex/CustomList.vue | 41 + .../upload/custom-complex/main.js | 4 + .../upload/custom-complex/main.vue | 38 + .../custom-external-drop-zone/CustomHint.vue | 3 + .../custom-external-drop-zone/CustomNote.vue | 3 + .../upload/custom-external-drop-zone/main.js | 4 + .../upload/custom-external-drop-zone/main.vue | 47 + .../upload/custom/CustomList.vue | 15 + vue-options-api-demos/upload/custom/main.js | 4 + vue-options-api-demos/upload/custom/main.vue | 34 + vue-options-api-demos/upload/disabled/main.js | 4 + .../upload/disabled/main.vue | 37 + .../upload/drag-drop/main.js | 4 + .../upload/drag-drop/main.vue | 21 + vue-options-api-demos/upload/events/main.js | 4 + vue-options-api-demos/upload/events/main.vue | 102 + .../upload/external-drop-zone/main.js | 4 + .../upload/external-drop-zone/main.vue | 28 + .../upload/file-processing/automatic/main.js | 4 + .../upload/file-processing/automatic/main.vue | 21 + .../upload/file-processing/batch/main.js | 4 + .../upload/file-processing/batch/main.vue | 20 + .../upload/file-processing/single/main.js | 4 + .../upload/file-processing/single/main.vue | 21 + .../upload/getting-started/main.js | 4 + .../upload/getting-started/main.vue | 122 + .../upload/globalization/main.js | 4 + .../upload/globalization/main.vue | 50 + vue-options-api-demos/upload/keyboard/main.js | 4 + .../upload/keyboard/main.vue | 21 + .../upload/modes/controlled/main.js | 4 + .../upload/modes/controlled/main.vue | 46 + .../upload/modes/uncontrolled/main.js | 4 + .../upload/modes/uncontrolled/main.vue | 36 + .../upload/restrictions/custom/main.js | 4 + .../upload/restrictions/custom/main.vue | 75 + .../upload/restrictions/extension/main.js | 4 + .../upload/restrictions/extension/main.vue | 22 + .../upload/restrictions/max-file-size/main.js | 4 + .../restrictions/max-file-size/main.vue | 22 + .../upload/restrictions/min-file-size/main.js | 4 + .../restrictions/min-file-size/main.vue | 22 + vue-options-api-demos/upload/rtl/main.js | 4 + vue-options-api-demos/upload/rtl/main.vue | 21 + 4206 files changed, 400036 insertions(+) create mode 100644 vue-options-api-demos/README.md create mode 100644 vue-options-api-demos/animation/animations/entering/main.js create mode 100644 vue-options-api-demos/animation/animations/entering/main.vue create mode 100644 vue-options-api-demos/animation/animations/entering/styles.css create mode 100644 vue-options-api-demos/animation/animations/exiting/main.js create mode 100644 vue-options-api-demos/animation/animations/exiting/main.vue create mode 100644 vue-options-api-demos/animation/animations/exiting/styles.css create mode 100644 vue-options-api-demos/animation/api/expand-props/main.js create mode 100644 vue-options-api-demos/animation/api/expand-props/main.vue create mode 100644 vue-options-api-demos/animation/api/expand-props/styles.css create mode 100644 vue-options-api-demos/animation/api/fade-props/main.js create mode 100644 vue-options-api-demos/animation/api/fade-props/main.vue create mode 100644 vue-options-api-demos/animation/api/fade-props/styles.css create mode 100644 vue-options-api-demos/animation/api/push-props/main.js create mode 100644 vue-options-api-demos/animation/api/push-props/main.vue create mode 100644 vue-options-api-demos/animation/api/push-props/styles.css create mode 100644 vue-options-api-demos/animation/api/reveal-props/main.js create mode 100644 vue-options-api-demos/animation/api/reveal-props/main.vue create mode 100644 vue-options-api-demos/animation/api/reveal-props/styles.css create mode 100644 vue-options-api-demos/animation/api/slide-props/main.js create mode 100644 vue-options-api-demos/animation/api/slide-props/main.vue create mode 100644 vue-options-api-demos/animation/api/slide-props/styles.css create mode 100644 vue-options-api-demos/animation/api/zoom-props/main.js create mode 100644 vue-options-api-demos/animation/api/zoom-props/main.vue create mode 100644 vue-options-api-demos/animation/api/zoom-props/styles.css create mode 100644 vue-options-api-demos/animation/appearance/child/main.js create mode 100644 vue-options-api-demos/animation/appearance/child/main.vue create mode 100644 vue-options-api-demos/animation/appearance/child/styles.css create mode 100644 vue-options-api-demos/animation/appearance/default/main.js create mode 100644 vue-options-api-demos/animation/appearance/default/main.vue create mode 100644 vue-options-api-demos/animation/appearance/default/styles.css create mode 100644 vue-options-api-demos/animation/appearance/parent/main.js create mode 100644 vue-options-api-demos/animation/appearance/parent/main.vue create mode 100644 vue-options-api-demos/animation/appearance/parent/styles.css create mode 100644 vue-options-api-demos/animation/configuration/main.js create mode 100644 vue-options-api-demos/animation/configuration/main.vue create mode 100644 vue-options-api-demos/animation/configuration/styles.css create mode 100644 vue-options-api-demos/animation/direction/expand/main.js create mode 100644 vue-options-api-demos/animation/direction/expand/main.vue create mode 100644 vue-options-api-demos/animation/direction/expand/styles.css create mode 100644 vue-options-api-demos/animation/direction/fade/main.js create mode 100644 vue-options-api-demos/animation/direction/fade/main.vue create mode 100644 vue-options-api-demos/animation/direction/fade/styles.css create mode 100644 vue-options-api-demos/animation/direction/push/main.js create mode 100644 vue-options-api-demos/animation/direction/push/main.vue create mode 100644 vue-options-api-demos/animation/direction/push/styles.css create mode 100644 vue-options-api-demos/animation/direction/reveal/main.js create mode 100644 vue-options-api-demos/animation/direction/reveal/main.vue create mode 100644 vue-options-api-demos/animation/direction/reveal/styles.css create mode 100644 vue-options-api-demos/animation/direction/slide/main.js create mode 100644 vue-options-api-demos/animation/direction/slide/main.vue create mode 100644 vue-options-api-demos/animation/direction/slide/styles.css create mode 100644 vue-options-api-demos/animation/direction/zoom/main.js create mode 100644 vue-options-api-demos/animation/direction/zoom/main.vue create mode 100644 vue-options-api-demos/animation/direction/zoom/styles.css create mode 100644 vue-options-api-demos/animation/disabled/main.js create mode 100644 vue-options-api-demos/animation/disabled/main.vue create mode 100644 vue-options-api-demos/animation/disabled/styles.css create mode 100644 vue-options-api-demos/animation/duration/main.js create mode 100644 vue-options-api-demos/animation/duration/main.vue create mode 100644 vue-options-api-demos/animation/duration/styles.css create mode 100644 vue-options-api-demos/animation/overview/main.js create mode 100644 vue-options-api-demos/animation/overview/main.vue create mode 100644 vue-options-api-demos/animation/overview/styles.css create mode 100644 vue-options-api-demos/animation/types/expand/main.js create mode 100644 vue-options-api-demos/animation/types/expand/main.vue create mode 100644 vue-options-api-demos/animation/types/expand/styles.css create mode 100644 vue-options-api-demos/animation/types/fade/main.js create mode 100644 vue-options-api-demos/animation/types/fade/main.vue create mode 100644 vue-options-api-demos/animation/types/fade/styles.css create mode 100644 vue-options-api-demos/animation/types/push/main.js create mode 100644 vue-options-api-demos/animation/types/push/main.vue create mode 100644 vue-options-api-demos/animation/types/push/styles.css create mode 100644 vue-options-api-demos/animation/types/reveal/main.js create mode 100644 vue-options-api-demos/animation/types/reveal/main.vue create mode 100644 vue-options-api-demos/animation/types/reveal/styles.css create mode 100644 vue-options-api-demos/animation/types/slide/main.js create mode 100644 vue-options-api-demos/animation/types/slide/main.vue create mode 100644 vue-options-api-demos/animation/types/slide/styles.css create mode 100644 vue-options-api-demos/animation/types/zoom/main.js create mode 100644 vue-options-api-demos/animation/types/zoom/main.vue create mode 100644 vue-options-api-demos/animation/types/zoom/styles.css create mode 100644 vue-options-api-demos/buttons/button/appearance/configurator/ButtonStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/button/appearance/configurator/main.js create mode 100644 vue-options-api-demos/buttons/button/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/buttons/button/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/buttons/button/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/buttons/button/appearance/rounded/main.js create mode 100644 vue-options-api-demos/buttons/button/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/buttons/button/appearance/shape/main.js create mode 100644 vue-options-api-demos/buttons/button/appearance/shape/main.vue create mode 100644 vue-options-api-demos/buttons/button/appearance/size/main.js create mode 100644 vue-options-api-demos/buttons/button/appearance/size/main.vue create mode 100644 vue-options-api-demos/buttons/button/appearance/theme-colors/main.js create mode 100644 vue-options-api-demos/buttons/button/appearance/theme-colors/main.vue create mode 100644 vue-options-api-demos/buttons/button/basic/main.js create mode 100644 vue-options-api-demos/buttons/button/basic/main.vue create mode 100644 vue-options-api-demos/buttons/button/disabled/main.js create mode 100644 vue-options-api-demos/buttons/button/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/button/events/main.js create mode 100644 vue-options-api-demos/buttons/button/events/main.vue create mode 100644 vue-options-api-demos/buttons/button/icon/main.js create mode 100644 vue-options-api-demos/buttons/button/icon/main.vue create mode 100644 vue-options-api-demos/buttons/button/primary/main.js create mode 100644 vue-options-api-demos/buttons/button/primary/main.vue create mode 100644 vue-options-api-demos/buttons/button/toggleable/main.js create mode 100644 vue-options-api-demos/buttons/button/toggleable/main.vue create mode 100644 vue-options-api-demos/buttons/buttongroup/basic/main.js create mode 100644 vue-options-api-demos/buttons/buttongroup/basic/main.vue create mode 100644 vue-options-api-demos/buttons/buttongroup/disabled/main.js create mode 100644 vue-options-api-demos/buttons/buttongroup/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/chip/appearance/configurator/ChipStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/chip/appearance/configurator/main.js create mode 100644 vue-options-api-demos/buttons/chip/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/buttons/chip/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/buttons/chip/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/buttons/chip/appearance/rounded/main.js create mode 100644 vue-options-api-demos/buttons/chip/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/buttons/chip/appearance/size/main.js create mode 100644 vue-options-api-demos/buttons/chip/appearance/size/main.vue create mode 100644 vue-options-api-demos/buttons/chip/appearance/theme-colors/main.js create mode 100644 vue-options-api-demos/buttons/chip/appearance/theme-colors/main.vue create mode 100644 vue-options-api-demos/buttons/chip/avatar/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chip/avatar/main.js create mode 100644 vue-options-api-demos/buttons/chip/avatar/main.vue create mode 100644 vue-options-api-demos/buttons/chip/customization/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chip/customization/main.js create mode 100644 vue-options-api-demos/buttons/chip/customization/main.vue create mode 100644 vue-options-api-demos/buttons/chip/disabled/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chip/disabled/main.js create mode 100644 vue-options-api-demos/buttons/chip/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/chip/getting-started/main.js create mode 100644 vue-options-api-demos/buttons/chip/getting-started/main.vue create mode 100644 vue-options-api-demos/buttons/chip/remove-icon/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chip/remove-icon/main.js create mode 100644 vue-options-api-demos/buttons/chip/remove-icon/main.vue create mode 100644 vue-options-api-demos/buttons/chip/remove/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chip/remove/main.js create mode 100644 vue-options-api-demos/buttons/chip/remove/main.vue create mode 100644 vue-options-api-demos/buttons/chip/select-icon/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chip/select-icon/main.js create mode 100644 vue-options-api-demos/buttons/chip/select-icon/main.vue create mode 100644 vue-options-api-demos/buttons/chip/types/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chip/types/main.js create mode 100644 vue-options-api-demos/buttons/chip/types/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/appearance/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/appearance/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/controlled/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chiplist/controlled/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/controlled/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/customization/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chiplist/customization/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/customization/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/data-binding/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/data-binding/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/disabled/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chiplist/disabled/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/getting-started/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/getting-started/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/keyboard/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/chiplist/keyboard/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/keyboard/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/selection/multiple/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/selection/multiple/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/selection/none/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/selection/none/main.vue create mode 100644 vue-options-api-demos/buttons/chiplist/selection/single/main.js create mode 100644 vue-options-api-demos/buttons/chiplist/selection/single/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/ButtonsStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/customization/items/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/customization/items/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/disabled/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/events/Logger.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/events/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/events/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/icons/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/icons/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/keyboard/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/keyboard/main.vue create mode 100644 vue-options-api-demos/buttons/dropdownbutton/overview/main.js create mode 100644 vue-options-api-demos/buttons/dropdownbutton/overview/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/FloatingActionButtonConfigurator.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/content-types/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/content-types/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/disabled/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/events/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/events/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/icons/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/icons/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/CustomItem.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/overview/CustomItem.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/overview/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/overview/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.vue create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/positioning/main.js create mode 100644 vue-options-api-demos/buttons/floatingactionbutton/positioning/main.vue create mode 100644 vue-options-api-demos/buttons/overview/CustomChip.vue create mode 100644 vue-options-api-demos/buttons/overview/main.js create mode 100644 vue-options-api-demos/buttons/overview/main.vue create mode 100644 vue-options-api-demos/buttons/rtl/main.js create mode 100644 vue-options-api-demos/buttons/rtl/main.vue create mode 100644 vue-options-api-demos/buttons/shared/ButtonStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/shared/ButtonsStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/shared/ChipStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/shared/FloatingActionButtonConfigurator.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/configurator/ButtonsStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/size/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/size/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/customization/items/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/customization/items/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/customization/popup/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/customization/popup/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/disabled/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/disabled/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/events/Logger.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/events/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/events/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/icons/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/icons/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/keyboard/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/keyboard/main.vue create mode 100644 vue-options-api-demos/buttons/splitbutton/overview/main.js create mode 100644 vue-options-api-demos/buttons/splitbutton/overview/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/basic/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/basic/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/events/Logger.vue create mode 100644 vue-options-api-demos/buttons/toolbar/events/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/events/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/fill-mode/ToolbarStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/toolbar/fill-mode/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/fill-mode/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/keyboard/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/keyboard/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/overflow-scroll/ToolbarScrollConfigurator.vue create mode 100644 vue-options-api-demos/buttons/toolbar/overflow-scroll/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/overflow-scroll/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/overflow-section/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/overflow-section/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/size/ToolbarStyleConfigurator.vue create mode 100644 vue-options-api-demos/buttons/toolbar/size/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/size/main.vue create mode 100644 vue-options-api-demos/buttons/toolbar/tools/main.js create mode 100644 vue-options-api-demos/buttons/toolbar/tools/main.vue create mode 100644 vue-options-api-demos/charts/api/axis-title-position/main.js create mode 100644 vue-options-api-demos/charts/api/axis-title-position/main.vue create mode 100644 vue-options-api-demos/charts/api/base-unit/main.js create mode 100644 vue-options-api-demos/charts/api/base-unit/main.vue create mode 100644 vue-options-api-demos/charts/api/category-base-unit/main.js create mode 100644 vue-options-api-demos/charts/api/category-base-unit/main.vue create mode 100644 vue-options-api-demos/charts/api/dash-type/main.js create mode 100644 vue-options-api-demos/charts/api/dash-type/main.vue create mode 100644 vue-options-api-demos/charts/api/line-style/main.js create mode 100644 vue-options-api-demos/charts/api/line-style/main.vue create mode 100644 vue-options-api-demos/charts/api/marker-type/main.js create mode 100644 vue-options-api-demos/charts/api/marker-type/main.vue create mode 100644 vue-options-api-demos/charts/api/note-label-position/main.js create mode 100644 vue-options-api-demos/charts/api/note-label-position/main.vue create mode 100644 vue-options-api-demos/charts/api/note-position/main.js create mode 100644 vue-options-api-demos/charts/api/note-position/main.vue create mode 100644 vue-options-api-demos/charts/chart/box-plot/box-plot-data.json create mode 100644 vue-options-api-demos/charts/chart/box-plot/main.js create mode 100644 vue-options-api-demos/charts/chart/box-plot/main.vue create mode 100644 vue-options-api-demos/charts/chart/bubble/bubble-data.json create mode 100644 vue-options-api-demos/charts/chart/bubble/main.js create mode 100644 vue-options-api-demos/charts/chart/bubble/main.vue create mode 100644 vue-options-api-demos/charts/chart/bullet/main.js create mode 100644 vue-options-api-demos/charts/chart/bullet/main.vue create mode 100644 vue-options-api-demos/charts/chart/chart-instance/main.js create mode 100644 vue-options-api-demos/charts/chart/chart-instance/main.vue create mode 100644 vue-options-api-demos/charts/chart/donut-center-visuals/main.js create mode 100644 vue-options-api-demos/charts/chart/donut-center-visuals/main.vue create mode 100644 vue-options-api-demos/charts/chart/donut-center-visuals/power-distribution-data.json create mode 100644 vue-options-api-demos/charts/chart/donut-center/main.js create mode 100644 vue-options-api-demos/charts/chart/donut-center/main.vue create mode 100644 vue-options-api-demos/charts/chart/donut-center/power-distribution-data.json create mode 100644 vue-options-api-demos/charts/chart/donut-series/donut-series-data.json create mode 100644 vue-options-api-demos/charts/chart/donut-series/main.js create mode 100644 vue-options-api-demos/charts/chart/donut-series/main.vue create mode 100644 vue-options-api-demos/charts/chart/donut/main.js create mode 100644 vue-options-api-demos/charts/chart/donut/main.vue create mode 100644 vue-options-api-demos/charts/chart/donut/power-distribution-data.json create mode 100644 vue-options-api-demos/charts/chart/funnel-dynamic/funnel-data.json create mode 100644 vue-options-api-demos/charts/chart/funnel-dynamic/main.js create mode 100644 vue-options-api-demos/charts/chart/funnel-dynamic/main.vue create mode 100644 vue-options-api-demos/charts/chart/funnel-ratio/funnel-data.json create mode 100644 vue-options-api-demos/charts/chart/funnel-ratio/main.js create mode 100644 vue-options-api-demos/charts/chart/funnel-ratio/main.vue create mode 100644 vue-options-api-demos/charts/chart/funnel/funnel-data.json create mode 100644 vue-options-api-demos/charts/chart/funnel/main.js create mode 100644 vue-options-api-demos/charts/chart/funnel/main.vue create mode 100644 vue-options-api-demos/charts/chart/globalization/main.js create mode 100644 vue-options-api-demos/charts/chart/globalization/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/basic/heatmap-data.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/basic/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/basic/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/binding-categories/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/binding-categories/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/binding-objects/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/binding-objects/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/color-scale/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/color-scale/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/crosshairs/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/crosshairs/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/marker-size/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/marker-size/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.vue create mode 100644 vue-options-api-demos/charts/chart/heatmap/tooltips/heatmap-data.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/tooltips/main.js create mode 100644 vue-options-api-demos/charts/chart/heatmap/tooltips/main.vue create mode 100644 vue-options-api-demos/charts/chart/pan-zoom/basic/main.js create mode 100644 vue-options-api-demos/charts/chart/pan-zoom/basic/main.vue create mode 100644 vue-options-api-demos/charts/chart/pan-zoom/lock/main.js create mode 100644 vue-options-api-demos/charts/chart/pan-zoom/lock/main.vue create mode 100644 vue-options-api-demos/charts/chart/polar/main.js create mode 100644 vue-options-api-demos/charts/chart/polar/main.vue create mode 100644 vue-options-api-demos/charts/chart/polar/polar-data.json create mode 100644 vue-options-api-demos/charts/chart/pyramid/basic/main.js create mode 100644 vue-options-api-demos/charts/chart/pyramid/basic/main.vue create mode 100644 vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.js create mode 100644 vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.vue create mode 100644 vue-options-api-demos/charts/chart/radar/main.js create mode 100644 vue-options-api-demos/charts/chart/radar/main.vue create mode 100644 vue-options-api-demos/charts/chart/radar/radar-data.json create mode 100644 vue-options-api-demos/charts/chart/range-area/main.js create mode 100644 vue-options-api-demos/charts/chart/range-area/main.vue create mode 100644 vue-options-api-demos/charts/chart/range-area/range-data.json create mode 100644 vue-options-api-demos/charts/chart/range-bar/main.js create mode 100644 vue-options-api-demos/charts/chart/range-bar/main.vue create mode 100644 vue-options-api-demos/charts/chart/range-bar/range-data.json create mode 100644 vue-options-api-demos/charts/chart/rendering/main.js create mode 100644 vue-options-api-demos/charts/chart/rendering/main.vue create mode 100644 vue-options-api-demos/charts/chart/rtl/main.js create mode 100644 vue-options-api-demos/charts/chart/rtl/main.vue create mode 100644 vue-options-api-demos/charts/chart/scatter-line-style/main.js create mode 100644 vue-options-api-demos/charts/chart/scatter-line-style/main.vue create mode 100644 vue-options-api-demos/charts/chart/scatter-line-style/scatter-line-style-data.json create mode 100644 vue-options-api-demos/charts/chart/scatter-line/main.js create mode 100644 vue-options-api-demos/charts/chart/scatter-line/main.vue create mode 100644 vue-options-api-demos/charts/chart/scatter-line/scatter-line-data.json create mode 100644 vue-options-api-demos/charts/chart/scatter-plot/main.js create mode 100644 vue-options-api-demos/charts/chart/scatter-plot/main.vue create mode 100644 vue-options-api-demos/charts/chart/scatter-plot/scatter-plot-data.json create mode 100644 vue-options-api-demos/charts/chart/trendlines/basic/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/basic/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/basic/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/custom-field/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/custom-field/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/custom-field/stock-data-sample.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/date-series/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/date-series/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/date-series/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/exponential/categorical/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/forecast/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/forecast/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/forecast/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/linear/categorical/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/power/categorical/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/power/categorical/main.vue create mode 100644 vue-options-api-demos/charts/chart/trendlines/power/categorical/sales-data.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/power/scatter/main.js create mode 100644 vue-options-api-demos/charts/chart/trendlines/power/scatter/main.vue create mode 100644 vue-options-api-demos/charts/chart/waterfall/main.js create mode 100644 vue-options-api-demos/charts/chart/waterfall/main.vue create mode 100644 vue-options-api-demos/charts/chart/waterfall/waterfall-data.json create mode 100644 vue-options-api-demos/charts/data-binding/arrays/main.js create mode 100644 vue-options-api-demos/charts/data-binding/arrays/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/category-field/main.js create mode 100644 vue-options-api-demos/charts/data-binding/category-field/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.js create mode 100644 vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.js create mode 100644 vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/duplicates/main.js create mode 100644 vue-options-api-demos/charts/data-binding/duplicates/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/group-objects/main.js create mode 100644 vue-options-api-demos/charts/data-binding/group-objects/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/labels/main.js create mode 100644 vue-options-api-demos/charts/data-binding/labels/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.js create mode 100644 vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/no-data-overlay/main.js create mode 100644 vue-options-api-demos/charts/data-binding/no-data-overlay/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/objects/main.js create mode 100644 vue-options-api-demos/charts/data-binding/objects/main.vue create mode 100644 vue-options-api-demos/charts/data-binding/values/main.js create mode 100644 vue-options-api-demos/charts/data-binding/values/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/axis-config/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/axis-config/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/categorical/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/categorical/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/date-aggregates/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/date-aggregates/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/date-aggregates/weather-data.js create mode 100644 vue-options-api-demos/charts/elements/axes/label-rotation/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/label-rotation/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/label-rotation/weather-data.js create mode 100644 vue-options-api-demos/charts/elements/axes/max-divisions/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/max-divisions/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/max-divisions/weather-data.js create mode 100644 vue-options-api-demos/charts/elements/axes/multi-axis/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/multi-axis/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/range-labels/covid-data.json create mode 100644 vue-options-api-demos/charts/elements/axes/range-labels/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/range-labels/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/scatter/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/scatter/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/time-intervals/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/time-intervals/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/time-intervals/weather-data.js create mode 100644 vue-options-api-demos/charts/elements/axes/time-series/main.js create mode 100644 vue-options-api-demos/charts/elements/axes/time-series/main.vue create mode 100644 vue-options-api-demos/charts/elements/axes/time-series/weather-data.js create mode 100644 vue-options-api-demos/charts/elements/chart-area/main.js create mode 100644 vue-options-api-demos/charts/elements/chart-area/main.vue create mode 100644 vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.js create mode 100644 vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.vue create mode 100644 vue-options-api-demos/charts/elements/crosshairs/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/crosshairs/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/error-bars/array-values/main.js create mode 100644 vue-options-api-demos/charts/elements/error-bars/array-values/main.vue create mode 100644 vue-options-api-demos/charts/elements/error-bars/custom/main.js create mode 100644 vue-options-api-demos/charts/elements/error-bars/custom/main.vue create mode 100644 vue-options-api-demos/charts/elements/error-bars/numeric-values/main.js create mode 100644 vue-options-api-demos/charts/elements/error-bars/numeric-values/main.vue create mode 100644 vue-options-api-demos/charts/elements/error-bars/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/error-bars/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/error-bars/percentage-values/main.js create mode 100644 vue-options-api-demos/charts/elements/error-bars/percentage-values/main.vue create mode 100644 vue-options-api-demos/charts/elements/error-bars/scatter/main.js create mode 100644 vue-options-api-demos/charts/elements/error-bars/scatter/main.vue create mode 100644 vue-options-api-demos/charts/elements/error-bars/statistical-values/main.js create mode 100644 vue-options-api-demos/charts/elements/error-bars/statistical-values/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/override-axis-labels/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/override-axis-labels/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/override-series-labels/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/override-series-labels/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/style-axis/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/style-axis/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/style-currency-axis/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/style-currency-axis/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/style-currency-series/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/style-currency-series/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/style-scatter-series/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/style-scatter-series/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/style-series/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/style-series/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/visual-axis/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/visual-axis/main.vue create mode 100644 vue-options-api-demos/charts/elements/labels/visual-series/main.js create mode 100644 vue-options-api-demos/charts/elements/labels/visual-series/main.vue create mode 100644 vue-options-api-demos/charts/elements/legend/click-legend/main.js create mode 100644 vue-options-api-demos/charts/elements/legend/click-legend/main.vue create mode 100644 vue-options-api-demos/charts/elements/legend/custom-legend-position/main.js create mode 100644 vue-options-api-demos/charts/elements/legend/custom-legend-position/main.vue create mode 100644 vue-options-api-demos/charts/elements/legend/hide-legend/main.js create mode 100644 vue-options-api-demos/charts/elements/legend/hide-legend/main.vue create mode 100644 vue-options-api-demos/charts/elements/legend/legend-items/main.js create mode 100644 vue-options-api-demos/charts/elements/legend/legend-items/main.vue create mode 100644 vue-options-api-demos/charts/elements/legend/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/legend/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/legend/title/main.js create mode 100644 vue-options-api-demos/charts/elements/legend/title/main.vue create mode 100644 vue-options-api-demos/charts/elements/notes/appearance/main.js create mode 100644 vue-options-api-demos/charts/elements/notes/appearance/main.vue create mode 100644 vue-options-api-demos/charts/elements/notes/axis-notes/main.js create mode 100644 vue-options-api-demos/charts/elements/notes/axis-notes/main.vue create mode 100644 vue-options-api-demos/charts/elements/notes/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/notes/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/panes/clip/main.js create mode 100644 vue-options-api-demos/charts/elements/panes/clip/main.vue create mode 100644 vue-options-api-demos/charts/elements/panes/default/main.js create mode 100644 vue-options-api-demos/charts/elements/panes/default/main.vue create mode 100644 vue-options-api-demos/charts/elements/panes/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/panes/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/plot-area/main.js create mode 100644 vue-options-api-demos/charts/elements/plot-area/main.vue create mode 100644 vue-options-api-demos/charts/elements/plot-bands/custom/main.js create mode 100644 vue-options-api-demos/charts/elements/plot-bands/custom/main.vue create mode 100644 vue-options-api-demos/charts/elements/plot-bands/labels/main.js create mode 100644 vue-options-api-demos/charts/elements/plot-bands/labels/main.vue create mode 100644 vue-options-api-demos/charts/elements/plot-bands/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/plot-bands/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/selection/navigator/main.js create mode 100644 vue-options-api-demos/charts/elements/selection/navigator/main.vue create mode 100644 vue-options-api-demos/charts/elements/selection/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/selection/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/series/configuration/main.js create mode 100644 vue-options-api-demos/charts/elements/series/configuration/main.vue create mode 100644 vue-options-api-demos/charts/elements/series/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/series/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/title/main.js create mode 100644 vue-options-api-demos/charts/elements/title/main.vue create mode 100644 vue-options-api-demos/charts/elements/tooltips/categorical/main.js create mode 100644 vue-options-api-demos/charts/elements/tooltips/categorical/main.vue create mode 100644 vue-options-api-demos/charts/elements/tooltips/format/main.js create mode 100644 vue-options-api-demos/charts/elements/tooltips/format/main.vue create mode 100644 vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.js create mode 100644 vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.vue create mode 100644 vue-options-api-demos/charts/elements/tooltips/overview/main.js create mode 100644 vue-options-api-demos/charts/elements/tooltips/overview/main.vue create mode 100644 vue-options-api-demos/charts/elements/tooltips/scatter/main.js create mode 100644 vue-options-api-demos/charts/elements/tooltips/scatter/main.vue create mode 100644 vue-options-api-demos/charts/elements/tooltips/template/main.js create mode 100644 vue-options-api-demos/charts/elements/tooltips/template/main.vue create mode 100644 vue-options-api-demos/charts/events/basic/Logger.vue create mode 100644 vue-options-api-demos/charts/events/basic/main.js create mode 100644 vue-options-api-demos/charts/events/basic/main.vue create mode 100644 vue-options-api-demos/charts/events/drag/Logger.vue create mode 100644 vue-options-api-demos/charts/events/drag/main.js create mode 100644 vue-options-api-demos/charts/events/drag/main.vue create mode 100644 vue-options-api-demos/charts/events/select/Logger.vue create mode 100644 vue-options-api-demos/charts/events/select/main.js create mode 100644 vue-options-api-demos/charts/events/select/main.vue create mode 100644 vue-options-api-demos/charts/events/zoom/Logger.vue create mode 100644 vue-options-api-demos/charts/events/zoom/main.js create mode 100644 vue-options-api-demos/charts/events/zoom/main.vue create mode 100644 vue-options-api-demos/charts/export-options/image-size/main.js create mode 100644 vue-options-api-demos/charts/export-options/image-size/main.vue create mode 100644 vue-options-api-demos/charts/export-options/image/main.js create mode 100644 vue-options-api-demos/charts/export-options/image/main.vue create mode 100644 vue-options-api-demos/charts/export-options/pdf-size/main.js create mode 100644 vue-options-api-demos/charts/export-options/pdf-size/main.vue create mode 100644 vue-options-api-demos/charts/export-options/pdf/main.js create mode 100644 vue-options-api-demos/charts/export-options/pdf/main.vue create mode 100644 vue-options-api-demos/charts/export-options/svg/main.js create mode 100644 vue-options-api-demos/charts/export-options/svg/main.vue create mode 100644 vue-options-api-demos/charts/export-options/visuals/main.js create mode 100644 vue-options-api-demos/charts/export-options/visuals/main.vue create mode 100644 vue-options-api-demos/charts/overview/main.js create mode 100644 vue-options-api-demos/charts/overview/main.vue create mode 100644 vue-options-api-demos/charts/sankey/auto-layout/main.js create mode 100644 vue-options-api-demos/charts/sankey/auto-layout/main.vue create mode 100644 vue-options-api-demos/charts/sankey/customization/data/main.js create mode 100644 vue-options-api-demos/charts/sankey/customization/data/main.vue create mode 100644 vue-options-api-demos/charts/sankey/customization/defaults/main.js create mode 100644 vue-options-api-demos/charts/sankey/customization/defaults/main.vue create mode 100644 vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.js create mode 100644 vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.vue create mode 100644 vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.js create mode 100644 vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.vue create mode 100644 vue-options-api-demos/charts/sankey/elements/legend/main.js create mode 100644 vue-options-api-demos/charts/sankey/elements/legend/main.vue create mode 100644 vue-options-api-demos/charts/sankey/elements/title/main.js create mode 100644 vue-options-api-demos/charts/sankey/elements/title/main.vue create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.js create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.vue create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.js create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.vue create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-link-content.vue create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-node-content.vue create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/default/main.js create mode 100644 vue-options-api-demos/charts/sankey/elements/tooltip/default/main.vue create mode 100644 vue-options-api-demos/charts/sankey/events/main.js create mode 100644 vue-options-api-demos/charts/sankey/events/main.vue create mode 100644 vue-options-api-demos/charts/sankey/export/custom/main.js create mode 100644 vue-options-api-demos/charts/sankey/export/custom/main.vue create mode 100644 vue-options-api-demos/charts/sankey/export/image-size/main.js create mode 100644 vue-options-api-demos/charts/sankey/export/image-size/main.vue create mode 100644 vue-options-api-demos/charts/sankey/export/image/main.js create mode 100644 vue-options-api-demos/charts/sankey/export/image/main.vue create mode 100644 vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.js create mode 100644 vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.vue create mode 100644 vue-options-api-demos/charts/sankey/export/pdf/main.js create mode 100644 vue-options-api-demos/charts/sankey/export/pdf/main.vue create mode 100644 vue-options-api-demos/charts/sankey/export/svg/main.js create mode 100644 vue-options-api-demos/charts/sankey/export/svg/main.vue create mode 100644 vue-options-api-demos/charts/sankey/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/charts/sankey/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/charts/sankey/overview/main.js create mode 100644 vue-options-api-demos/charts/sankey/overview/main.vue create mode 100644 vue-options-api-demos/charts/series-types/area/100-stacked/main.js create mode 100644 vue-options-api-demos/charts/series-types/area/100-stacked/main.vue create mode 100644 vue-options-api-demos/charts/series-types/area/basic/main.js create mode 100644 vue-options-api-demos/charts/series-types/area/basic/main.vue create mode 100644 vue-options-api-demos/charts/series-types/area/line-style/main.js create mode 100644 vue-options-api-demos/charts/series-types/area/line-style/main.vue create mode 100644 vue-options-api-demos/charts/series-types/area/stacked/main.js create mode 100644 vue-options-api-demos/charts/series-types/area/stacked/main.vue create mode 100644 vue-options-api-demos/charts/series-types/area/vertical/main.js create mode 100644 vue-options-api-demos/charts/series-types/area/vertical/main.vue create mode 100644 vue-options-api-demos/charts/series-types/bar/100-stacked/main.js create mode 100644 vue-options-api-demos/charts/series-types/bar/100-stacked/main.vue create mode 100644 vue-options-api-demos/charts/series-types/bar/basic/main.js create mode 100644 vue-options-api-demos/charts/series-types/bar/basic/main.vue create mode 100644 vue-options-api-demos/charts/series-types/bar/column/main.js create mode 100644 vue-options-api-demos/charts/series-types/bar/column/main.vue create mode 100644 vue-options-api-demos/charts/series-types/bar/gap/main.js create mode 100644 vue-options-api-demos/charts/series-types/bar/gap/main.vue create mode 100644 vue-options-api-demos/charts/series-types/bar/spacing/main.js create mode 100644 vue-options-api-demos/charts/series-types/bar/spacing/main.vue create mode 100644 vue-options-api-demos/charts/series-types/bar/stacked-group/main.js create mode 100644 vue-options-api-demos/charts/series-types/bar/stacked-group/main.vue create mode 100644 vue-options-api-demos/charts/series-types/bar/stacked/main.js create mode 100644 vue-options-api-demos/charts/series-types/bar/stacked/main.vue create mode 100644 vue-options-api-demos/charts/series-types/line/basic/main.js create mode 100644 vue-options-api-demos/charts/series-types/line/basic/main.vue create mode 100644 vue-options-api-demos/charts/series-types/line/line-style/main.js create mode 100644 vue-options-api-demos/charts/series-types/line/line-style/main.vue create mode 100644 vue-options-api-demos/charts/series-types/line/vertical/main.js create mode 100644 vue-options-api-demos/charts/series-types/line/vertical/main.vue create mode 100644 vue-options-api-demos/charts/series-types/pie/basic/main.js create mode 100644 vue-options-api-demos/charts/series-types/pie/basic/main.vue create mode 100644 vue-options-api-demos/charts/shared/box-plot-data.json create mode 100644 vue-options-api-demos/charts/shared/bubble-data.json create mode 100644 vue-options-api-demos/charts/shared/covid-data.json create mode 100644 vue-options-api-demos/charts/shared/donut-series-data.json create mode 100644 vue-options-api-demos/charts/shared/funnel-data.json create mode 100644 vue-options-api-demos/charts/shared/polar-data.json create mode 100644 vue-options-api-demos/charts/shared/power-distribution-data.json create mode 100644 vue-options-api-demos/charts/shared/radar-data.json create mode 100644 vue-options-api-demos/charts/shared/range-data.json create mode 100644 vue-options-api-demos/charts/shared/sales-data.js create mode 100644 vue-options-api-demos/charts/shared/scatter-line-data.json create mode 100644 vue-options-api-demos/charts/shared/scatter-line-style-data.json create mode 100644 vue-options-api-demos/charts/shared/scatter-plot-data.json create mode 100644 vue-options-api-demos/charts/shared/stock-data-sample.js create mode 100644 vue-options-api-demos/charts/shared/stock-data.json create mode 100644 vue-options-api-demos/charts/shared/waterfall-data.json create mode 100644 vue-options-api-demos/charts/shared/weather-data.js create mode 100644 vue-options-api-demos/charts/sparkline/main.js create mode 100644 vue-options-api-demos/charts/sparkline/main.vue create mode 100644 vue-options-api-demos/charts/stock-chart/default/main.js create mode 100644 vue-options-api-demos/charts/stock-chart/default/main.vue create mode 100644 vue-options-api-demos/charts/stock-chart/default/stock-data.json create mode 100644 vue-options-api-demos/charts/stock-chart/filter-data/main.js create mode 100644 vue-options-api-demos/charts/stock-chart/filter-data/main.vue create mode 100644 vue-options-api-demos/charts/stock-chart/filter-data/stock-data.json create mode 100644 vue-options-api-demos/charts/stock-chart/multiple-panes/main.js create mode 100644 vue-options-api-demos/charts/stock-chart/multiple-panes/main.vue create mode 100644 vue-options-api-demos/charts/stock-chart/multiple-panes/stock-data.json create mode 100644 vue-options-api-demos/charts/styling/dimensions/main.js create mode 100644 vue-options-api-demos/charts/styling/dimensions/main.vue create mode 100644 vue-options-api-demos/charts/styling/pattern-fills/main.js create mode 100644 vue-options-api-demos/charts/styling/pattern-fills/main.vue create mode 100644 vue-options-api-demos/charts/styling/range/main.js create mode 100644 vue-options-api-demos/charts/styling/range/main.vue create mode 100644 vue-options-api-demos/common/adaptive-mode/main.js create mode 100644 vue-options-api-demos/common/adaptive-mode/main.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/commands/main.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/commands/main.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/ai-data.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/events/Logger.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/events/main.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/events/main.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/overview/ai-data.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/overview/main.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/overview/main.vue create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/overview/overview-styles.css create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/suggestions/ai-data.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.js create mode 100644 vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.vue create mode 100644 vue-options-api-demos/conversational-ui/getting-started/main.js create mode 100644 vue-options-api-demos/conversational-ui/getting-started/main.vue create mode 100644 vue-options-api-demos/conversational-ui/overview/main.js create mode 100644 vue-options-api-demos/conversational-ui/overview/main.vue create mode 100644 vue-options-api-demos/datatools/filter/basic-usage/main.js create mode 100644 vue-options-api-demos/datatools/filter/basic-usage/main.vue create mode 100644 vue-options-api-demos/datatools/filter/basic-usage/products.js create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/built-in/CustomEnumFilter.vue create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/built-in/main.js create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/built-in/main.vue create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/built-in/products.js create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomComboBoxFilter.vue create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomDropDownListFilter.vue create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.js create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.vue create mode 100644 vue-options-api-demos/datatools/filter/custom-editors/custom-component/products.js create mode 100644 vue-options-api-demos/datatools/filter/custom-operators/main.js create mode 100644 vue-options-api-demos/datatools/filter/custom-operators/main.vue create mode 100644 vue-options-api-demos/datatools/filter/custom-operators/products.js create mode 100644 vue-options-api-demos/datatools/filter/events/Logger.vue create mode 100644 vue-options-api-demos/datatools/filter/events/main.js create mode 100644 vue-options-api-demos/datatools/filter/events/main.vue create mode 100644 vue-options-api-demos/datatools/globalization/basic-usage/es.json create mode 100644 vue-options-api-demos/datatools/globalization/basic-usage/main.js create mode 100644 vue-options-api-demos/datatools/globalization/basic-usage/main.vue create mode 100644 vue-options-api-demos/datatools/globalization/rtl/main.js create mode 100644 vue-options-api-demos/datatools/globalization/rtl/main.vue create mode 100644 vue-options-api-demos/datatools/pager/basic-usage/Configurator.vue create mode 100644 vue-options-api-demos/datatools/pager/basic-usage/main.js create mode 100644 vue-options-api-demos/datatools/pager/basic-usage/main.vue create mode 100644 vue-options-api-demos/datatools/pager/basic-usage/products.js create mode 100644 vue-options-api-demos/datatools/pager/events/handling/main.js create mode 100644 vue-options-api-demos/datatools/pager/events/handling/main.vue create mode 100644 vue-options-api-demos/datatools/pager/events/prevent/main.js create mode 100644 vue-options-api-demos/datatools/pager/events/prevent/main.vue create mode 100644 vue-options-api-demos/datatools/pager/responsive/main.js create mode 100644 vue-options-api-demos/datatools/pager/responsive/main.vue create mode 100644 vue-options-api-demos/datatools/pager/template/PagerTemplate.vue create mode 100644 vue-options-api-demos/datatools/pager/template/main.js create mode 100644 vue-options-api-demos/datatools/pager/template/main.vue create mode 100644 vue-options-api-demos/datatools/shared/products.js create mode 100644 vue-options-api-demos/datatools/tsconfig.json create mode 100644 vue-options-api-demos/dateinputs/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/activeview/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/activeview/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/cell/Cell.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/cell/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/cell/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/htmlcell/Cell.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/title/Title.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/title/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/custom/title/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/dateranges/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/dateranges/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/focused/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/focused/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/multiple/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/multiple/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/range/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/range/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/selected/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/dates/selected/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/disabled/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/disabled/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/json/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/json/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/keyboard/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/keyboard/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/multipleviews/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/multipleviews/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/reverse-range/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/reverse-range/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/viewdepth/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/viewdepth/main.vue create mode 100644 vue-options-api-demos/dateinputs/calendar/week-numbers/main.js create mode 100644 vue-options-api-demos/dateinputs/calendar/week-numbers/main.vue create mode 100644 vue-options-api-demos/dateinputs/common/es.json create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/configurator/DateInputsStyleConfigurator.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/size/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/appearance/size/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/disabled/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/disabled/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/floating-label/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/floating-label/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/formats/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/formats/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/override/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/forms/override/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/incremental-steps/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/incremental-steps/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/input-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/input-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/keyboard/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/keyboard/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/placeholders/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/placeholders/main.vue create mode 100644 vue-options-api-demos/dateinputs/dateinput/spin-buttons/main.js create mode 100644 vue-options-api-demos/dateinputs/dateinput/spin-buttons/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/configurator/DateInputsStyleConfigurator.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/size/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/appearance/size/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/controlled/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/controlled/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/calendar/CustomCalendar.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/calendar/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/calendar/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/dateinput/CustomDateInput.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/dateinput/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/dateinput/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/popup/CustomPopup.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/popup/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/popup/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/toggle/CustomToggleButton.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/toggle/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/custom/toggle/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/datelimits/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/datelimits/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/default/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/default/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/defaultpopup/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/defaultpopup/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/disabled/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/disabled/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/events/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/events/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/floating-label/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/floating-label/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/focused/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/focused/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/formats/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/formats/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/override/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/forms/override/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/input-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/input-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/json/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/json/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/keyboard/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/keyboard/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/overview/es.json create mode 100644 vue-options-api-demos/dateinputs/datepicker/overview/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/overview/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/placeholders/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/placeholders/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/popup-state/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/popup-state/main.vue create mode 100644 vue-options-api-demos/dateinputs/datepicker/weeknum/main.js create mode 100644 vue-options-api-demos/dateinputs/datepicker/weeknum/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/controlled/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/controlled/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/customCalendar.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customEndDateInput.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customStartDateInput.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/default/value/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/default/value/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/disabled/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/disabled/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/events/Logger.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/events/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/events/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/focused/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/focused/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/overview/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/overview/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/ranges/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/ranges/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.vue create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.js create mode 100644 vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/.DS_Store create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/DateInputsStyleConfigurator.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/.DS_Store create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/CustomCalendar.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/CustomDateInput.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/popup/CustomPopup.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/default/show/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/default/show/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/default/value/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/default/value/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/disabled/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/disabled/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/events/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/events/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/focused/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/focused/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/formats/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/formats/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/json/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/json/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.vue create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.js create mode 100644 vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.vue create mode 100644 vue-options-api-demos/dateinputs/floating-label/main.js create mode 100644 vue-options-api-demos/dateinputs/floating-label/main.vue create mode 100644 vue-options-api-demos/dateinputs/globalization/es.json create mode 100644 vue-options-api-demos/dateinputs/globalization/main.js create mode 100644 vue-options-api-demos/dateinputs/globalization/main.vue create mode 100644 vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.js create mode 100644 vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/configurator/DateInputsStyleConfigurator.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/size/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/appearance/size/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/controlled-show/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/controlled-show/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/controlled-value/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/controlled-value/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/custom/dateinput/CustomDateInput.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/custom/popup/CustomPopup.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/custom/popup/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/custom/popup/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/default-show/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/default-show/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/default-value/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/default-value/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/disabled/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/disabled/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/events/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/events/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/floating-label/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/floating-label/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/formats/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/formats/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/override/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/forms/override/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/incremental/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/incremental/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/input-mode/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/input-mode/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/json/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/json/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/keyboard/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/keyboard/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/overview/basic/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/overview/basic/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/placeholders/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/placeholders/main.vue create mode 100644 vue-options-api-demos/dateinputs/timepicker/time-ranges/main.js create mode 100644 vue-options-api-demos/dateinputs/timepicker/time-ranges/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/action-buttons/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/action-buttons/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/dimetions/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/dimetions/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/keyboard/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/keyboard/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/overview/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/overview/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/rtl/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/rtl/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/title/basic/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/title/basic/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/title/no-title/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/title/no-title/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/title/title-template/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/title/title-template/main.vue create mode 100644 vue-options-api-demos/dialogs/dialog/visibility/main.js create mode 100644 vue-options-api-demos/dialogs/dialog/visibility/main.vue create mode 100644 vue-options-api-demos/dialogs/overview/main.js create mode 100644 vue-options-api-demos/dialogs/overview/main.vue create mode 100644 vue-options-api-demos/dialogs/window/basic/main.js create mode 100644 vue-options-api-demos/dialogs/window/basic/main.vue create mode 100644 vue-options-api-demos/dialogs/window/controlled/main.js create mode 100644 vue-options-api-demos/dialogs/window/controlled/main.vue create mode 100644 vue-options-api-demos/dialogs/window/dimensions/main.js create mode 100644 vue-options-api-demos/dialogs/window/dimensions/main.vue create mode 100644 vue-options-api-demos/dialogs/window/dragging/main.js create mode 100644 vue-options-api-demos/dialogs/window/dragging/main.vue create mode 100644 vue-options-api-demos/dialogs/window/events/main.js create mode 100644 vue-options-api-demos/dialogs/window/events/main.vue create mode 100644 vue-options-api-demos/dialogs/window/hide-buttons/main.js create mode 100644 vue-options-api-demos/dialogs/window/hide-buttons/main.vue create mode 100644 vue-options-api-demos/dialogs/window/minimize-fullscreen/main.js create mode 100644 vue-options-api-demos/dialogs/window/minimize-fullscreen/main.vue create mode 100644 vue-options-api-demos/dialogs/window/positioning/main.js create mode 100644 vue-options-api-demos/dialogs/window/positioning/main.vue create mode 100644 vue-options-api-demos/dialogs/window/resizable/main.js create mode 100644 vue-options-api-demos/dialogs/window/resizable/main.vue create mode 100644 vue-options-api-demos/dialogs/window/title-basic/main.js create mode 100644 vue-options-api-demos/dialogs/window/title-basic/main.vue create mode 100644 vue-options-api-demos/dialogs/window/title-component/Title.vue create mode 100644 vue-options-api-demos/dialogs/window/title-component/main.js create mode 100644 vue-options-api-demos/dialogs/window/title-component/main.vue create mode 100644 vue-options-api-demos/dialogs/window/title-no/main.js create mode 100644 vue-options-api-demos/dialogs/window/title-no/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/DropDownStyleConfigurator.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/basic/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/common/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/override/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/override/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/forms/override/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/basic/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/GroupHeaderItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/StickyHeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/header-footer/FooterRender.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/header-footer/HeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/header-footer/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/header-footer/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/header-footer/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/item-render/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/item-render/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/item-render/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/item-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/nodata-render/NoDataRender.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/autocomplete/suggest/countries.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/suggest/main.js create mode 100644 vue-options-api-demos/dropdowns/autocomplete/suggest/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/configurator/DropDownStyleConfigurator.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/size/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/appearance/size/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/value/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/bindings/value/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/cascading/data.js create mode 100644 vue-options-api-demos/dropdowns/combobox/cascading/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/cascading/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/common/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/custom-values/object/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/custom-values/object/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/loading/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/loading/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/remote/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/filtering/remote/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/custom-message/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/disable-styles/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/override/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/override/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/forms/override/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/basic/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/custom/GroupHeaderItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/custom/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/custom/StickyHeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/custom/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/custom/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/custom/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/filtering/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/header-footer/FooterRender.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/header-footer/HeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/header-footer/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/header-footer/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/header-footer/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/item-render/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/item-render/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/item-render/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/item-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/nodata-render/NoDataRender.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/nodata-render/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/nodata-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/suggest/countries.js create mode 100644 vue-options-api-demos/dropdowns/combobox/suggest/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/suggest/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/common/es.json create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/DropDownStyleConfigurator.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/binding/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/binding/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/cascading/data.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/cascading/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/cascading/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/common/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/events/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/events/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/override/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/GroupHeaderItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/StickyHeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/header-footer/FooterRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/header-footer/HeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/header-footer/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/item-render/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/item-render/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/item-render/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/item-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/nodata-render/NoDataRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-field/main.jsx create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-render/ValueRender.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-render/countries.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-render/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/value-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/DropDownStyleConfigurator.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/basic/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/override/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/override/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/form/override/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/item-template/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/item-template/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/no-data/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/no-data/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/no-data/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/overview/main.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/overview/main.vue create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/globalization/es.json create mode 100644 vue-options-api-demos/dropdowns/globalization/main.js create mode 100644 vue-options-api-demos/dropdowns/globalization/main.vue create mode 100644 vue-options-api-demos/dropdowns/label/main.js create mode 100644 vue-options-api-demos/dropdowns/label/main.vue create mode 100644 vue-options-api-demos/dropdowns/label/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/label/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/label/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/configurator/DropDownStyleConfigurator.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/size/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/appearance/size/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/binding/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/binding/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/complex-value/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/complex-value/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/controlled/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/controlled/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/events/countries.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/events/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/events/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/basic/countries.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/countries.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/countries.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/basic/shop.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/custom-message/shop.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/shop.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/override/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/override/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/forms/override/shop.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/basic/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/custom/GroupHeaderItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/custom/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/custom/StickyHeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/custom/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/filtering/grouping-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/header-footer/FooterRender.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/header-footer/HeaderRender.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/header-footer/countries.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/header-footer/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/header-footer/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/item-render/ItemRender.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/item-render/countries.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/item-render/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/item-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/nodata-render/NoDataRender.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/nodata-render/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/nodata-render/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/summary-tag/countries.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/summary-tag/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/summary-tag/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/tags/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/tags/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/tags/styles.css create mode 100644 vue-options-api-demos/dropdowns/multiselect/value-primitive/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/value-primitive/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/DropDownStyleConfigurator.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/size/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/appearance/size/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/basic/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/basic/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/binding/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/binding/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/binding/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/binding/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/controlled/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/controlled/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/controlled/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/controlled/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/tree-files-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/filtering/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/basic/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/forms/override/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.vue create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/header-footer/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/header-footer/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/no-data/main.js create mode 100644 vue-options-api-demos/dropdowns/multiselecttree/no-data/main.vue create mode 100644 vue-options-api-demos/dropdowns/overview/main.js create mode 100644 vue-options-api-demos/dropdowns/overview/main.vue create mode 100644 vue-options-api-demos/dropdowns/overview/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/overview/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/overview/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/rtl/main.js create mode 100644 vue-options-api-demos/dropdowns/rtl/main.vue create mode 100644 vue-options-api-demos/dropdowns/rtl/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/rtl/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/rtl/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/shared/DropDownStyleConfigurator.vue create mode 100644 vue-options-api-demos/dropdowns/shared/countries.js create mode 100644 vue-options-api-demos/dropdowns/shared/es.json create mode 100644 vue-options-api-demos/dropdowns/shared/multiselecttree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/shared/shop.js create mode 100644 vue-options-api-demos/dropdowns/shared/tree-data-operations.js create mode 100644 vue-options-api-demos/dropdowns/shared/tree-data.js create mode 100644 vue-options-api-demos/dropdowns/shared/tree-files-data.js create mode 100644 vue-options-api-demos/editor/all-tools/content.js create mode 100644 vue-options-api-demos/editor/all-tools/main.js create mode 100644 vue-options-api-demos/editor/all-tools/main.vue create mode 100644 vue-options-api-demos/editor/controlled-value-doc/main.js create mode 100644 vue-options-api-demos/editor/controlled-value-doc/main.vue create mode 100644 vue-options-api-demos/editor/controlled-value-string/main.js create mode 100644 vue-options-api-demos/editor/controlled-value-string/main.vue create mode 100644 vue-options-api-demos/editor/edit-built-in-tools/content-basic.js create mode 100644 vue-options-api-demos/editor/edit-built-in-tools/main.js create mode 100644 vue-options-api-demos/editor/edit-built-in-tools/main.vue create mode 100644 vue-options-api-demos/editor/events/Logger.vue create mode 100644 vue-options-api-demos/editor/events/content.js create mode 100644 vue-options-api-demos/editor/events/main.js create mode 100644 vue-options-api-demos/editor/events/main.vue create mode 100644 vue-options-api-demos/editor/find-replace/content-overview.js create mode 100644 vue-options-api-demos/editor/find-replace/main.js create mode 100644 vue-options-api-demos/editor/find-replace/main.vue create mode 100644 vue-options-api-demos/editor/get-started/content.js create mode 100644 vue-options-api-demos/editor/get-started/main.js create mode 100644 vue-options-api-demos/editor/get-started/main.vue create mode 100644 vue-options-api-demos/editor/gets-and-sets-html/content.js create mode 100644 vue-options-api-demos/editor/gets-and-sets-html/main.js create mode 100644 vue-options-api-demos/editor/gets-and-sets-html/main.vue create mode 100644 vue-options-api-demos/editor/globalization/content.js create mode 100644 vue-options-api-demos/editor/globalization/deMessages.js create mode 100644 vue-options-api-demos/editor/globalization/main.js create mode 100644 vue-options-api-demos/editor/globalization/main.vue create mode 100644 vue-options-api-demos/editor/markdown/main.js create mode 100644 vue-options-api-demos/editor/markdown/main.vue create mode 100644 vue-options-api-demos/editor/markdown/markdown.js create mode 100644 vue-options-api-demos/editor/overview/content-overview.js create mode 100644 vue-options-api-demos/editor/overview/main.js create mode 100644 vue-options-api-demos/editor/overview/main.vue create mode 100644 vue-options-api-demos/editor/paste/main.js create mode 100644 vue-options-api-demos/editor/paste/main.vue create mode 100644 vue-options-api-demos/editor/plugins/placeholder/main.js create mode 100644 vue-options-api-demos/editor/plugins/placeholder/main.vue create mode 100644 vue-options-api-demos/editor/plugins/placeholder/placeholder.js create mode 100644 vue-options-api-demos/editor/plugins/readonly/content-basic.js create mode 100644 vue-options-api-demos/editor/plugins/readonly/main.js create mode 100644 vue-options-api-demos/editor/plugins/readonly/main.vue create mode 100644 vue-options-api-demos/editor/rendering-mode/main.js create mode 100644 vue-options-api-demos/editor/rendering-mode/main.vue create mode 100644 vue-options-api-demos/editor/rendering-mode/styles.css create mode 100644 vue-options-api-demos/editor/resizing/editor/content.js create mode 100644 vue-options-api-demos/editor/resizing/editor/main.js create mode 100644 vue-options-api-demos/editor/resizing/editor/main.vue create mode 100644 vue-options-api-demos/editor/resizing/images/content-overview.js create mode 100644 vue-options-api-demos/editor/resizing/images/main.js create mode 100644 vue-options-api-demos/editor/resizing/images/main.vue create mode 100644 vue-options-api-demos/editor/rtl/content.js create mode 100644 vue-options-api-demos/editor/rtl/main.js create mode 100644 vue-options-api-demos/editor/rtl/main.vue create mode 100644 vue-options-api-demos/editor/schema-custom/content.js create mode 100644 vue-options-api-demos/editor/schema-custom/main.js create mode 100644 vue-options-api-demos/editor/schema-custom/main.vue create mode 100644 vue-options-api-demos/editor/schema-custom/schema-utils.js create mode 100644 vue-options-api-demos/editor/schema-custom/schema.js create mode 100644 vue-options-api-demos/editor/schema-edit/main.js create mode 100644 vue-options-api-demos/editor/schema-edit/main.vue create mode 100644 vue-options-api-demos/editor/schema-edit/new-mark.js create mode 100644 vue-options-api-demos/editor/schema-edit/new-node.js create mode 100644 vue-options-api-demos/editor/selection/cell/content.js create mode 100644 vue-options-api-demos/editor/selection/cell/main.js create mode 100644 vue-options-api-demos/editor/selection/cell/main.vue create mode 100644 vue-options-api-demos/editor/selection/get-html/content.js create mode 100644 vue-options-api-demos/editor/selection/get-html/main.js create mode 100644 vue-options-api-demos/editor/selection/get-html/main.vue create mode 100644 vue-options-api-demos/editor/selection/node/content.js create mode 100644 vue-options-api-demos/editor/selection/node/main.js create mode 100644 vue-options-api-demos/editor/selection/node/main.vue create mode 100644 vue-options-api-demos/editor/selection/select-all/content.js create mode 100644 vue-options-api-demos/editor/selection/select-all/main.js create mode 100644 vue-options-api-demos/editor/selection/select-all/main.vue create mode 100644 vue-options-api-demos/editor/selection/text/content.js create mode 100644 vue-options-api-demos/editor/selection/text/main.js create mode 100644 vue-options-api-demos/editor/selection/text/main.vue create mode 100644 vue-options-api-demos/editor/shared/content-basic.js create mode 100644 vue-options-api-demos/editor/shared/content-overview.js create mode 100644 vue-options-api-demos/editor/shared/content.js create mode 100644 vue-options-api-demos/editor/styling-iframe/content.js create mode 100644 vue-options-api-demos/editor/styling-iframe/main.js create mode 100644 vue-options-api-demos/editor/styling-iframe/main.vue create mode 100644 vue-options-api-demos/editor/tsconfig.json create mode 100644 vue-options-api-demos/excel/basic/main.js create mode 100644 vue-options-api-demos/excel/basic/main.vue create mode 100644 vue-options-api-demos/excel/basic/products.json create mode 100644 vue-options-api-demos/excel/cells/data/main.js create mode 100644 vue-options-api-demos/excel/cells/data/main.vue create mode 100644 vue-options-api-demos/excel/cells/data/products.json create mode 100644 vue-options-api-demos/excel/cells/footer/main.js create mode 100644 vue-options-api-demos/excel/cells/footer/main.vue create mode 100644 vue-options-api-demos/excel/cells/footer/products.json create mode 100644 vue-options-api-demos/excel/cells/group-footer/main.js create mode 100644 vue-options-api-demos/excel/cells/group-footer/main.vue create mode 100644 vue-options-api-demos/excel/cells/group-footer/products.json create mode 100644 vue-options-api-demos/excel/cells/group-header/main.js create mode 100644 vue-options-api-demos/excel/cells/group-header/main.vue create mode 100644 vue-options-api-demos/excel/cells/group-header/products.json create mode 100644 vue-options-api-demos/excel/cells/header-padding/main.js create mode 100644 vue-options-api-demos/excel/cells/header-padding/main.vue create mode 100644 vue-options-api-demos/excel/cells/header-padding/products.json create mode 100644 vue-options-api-demos/excel/cells/header/main.js create mode 100644 vue-options-api-demos/excel/cells/header/main.vue create mode 100644 vue-options-api-demos/excel/cells/header/products.json create mode 100644 vue-options-api-demos/excel/cells/padding/main.js create mode 100644 vue-options-api-demos/excel/cells/padding/main.vue create mode 100644 vue-options-api-demos/excel/cells/padding/products.json create mode 100644 vue-options-api-demos/excel/columns/footer/main.js create mode 100644 vue-options-api-demos/excel/columns/footer/main.vue create mode 100644 vue-options-api-demos/excel/columns/footer/products.json create mode 100644 vue-options-api-demos/excel/columns/group-footer/main.js create mode 100644 vue-options-api-demos/excel/columns/group-footer/main.vue create mode 100644 vue-options-api-demos/excel/columns/group-footer/products.json create mode 100644 vue-options-api-demos/excel/columns/group-header/main.js create mode 100644 vue-options-api-demos/excel/columns/group-header/main.vue create mode 100644 vue-options-api-demos/excel/columns/group-header/products.json create mode 100644 vue-options-api-demos/excel/columns/hidden/main.js create mode 100644 vue-options-api-demos/excel/columns/hidden/main.vue create mode 100644 vue-options-api-demos/excel/columns/hidden/products.json create mode 100644 vue-options-api-demos/excel/columns/locked/main.js create mode 100644 vue-options-api-demos/excel/columns/locked/main.vue create mode 100644 vue-options-api-demos/excel/columns/locked/products.json create mode 100644 vue-options-api-demos/excel/columns/multi/main.js create mode 100644 vue-options-api-demos/excel/columns/multi/main.vue create mode 100644 vue-options-api-demos/excel/columns/multi/products.json create mode 100644 vue-options-api-demos/excel/filtering/main.js create mode 100644 vue-options-api-demos/excel/filtering/main.vue create mode 100644 vue-options-api-demos/excel/filtering/products.json create mode 100644 vue-options-api-demos/excel/rtl/main.js create mode 100644 vue-options-api-demos/excel/rtl/main.vue create mode 100644 vue-options-api-demos/excel/rtl/products.json create mode 100644 vue-options-api-demos/excel/shared/products.json create mode 100644 vue-options-api-demos/excel/workbook/main.js create mode 100644 vue-options-api-demos/excel/workbook/main.vue create mode 100644 vue-options-api-demos/excel/workbook/products.json create mode 100644 vue-options-api-demos/form/advanced/changing/FormContent.vue create mode 100644 vue-options-api-demos/form/advanced/changing/FormNumericTextBox.vue create mode 100644 vue-options-api-demos/form/advanced/changing/main.js create mode 100644 vue-options-api-demos/form/advanced/changing/main.vue create mode 100644 vue-options-api-demos/form/advanced/dynamic-reset/FormContent.vue create mode 100644 vue-options-api-demos/form/advanced/dynamic-reset/FormInput.vue create mode 100644 vue-options-api-demos/form/advanced/dynamic-reset/main.js create mode 100644 vue-options-api-demos/form/advanced/dynamic-reset/main.vue create mode 100644 vue-options-api-demos/form/advanced/reading/FormContent.vue create mode 100644 vue-options-api-demos/form/advanced/reading/FormNumericTextBox.vue create mode 100644 vue-options-api-demos/form/advanced/reading/main.js create mode 100644 vue-options-api-demos/form/advanced/reading/main.vue create mode 100644 vue-options-api-demos/form/basic/FormContent.vue create mode 100644 vue-options-api-demos/form/basic/FormInput.vue create mode 100644 vue-options-api-demos/form/basic/main.js create mode 100644 vue-options-api-demos/form/basic/main.vue create mode 100644 vue-options-api-demos/form/custom-components/advanced/FormContent.vue create mode 100644 vue-options-api-demos/form/custom-components/advanced/FormInput.vue create mode 100644 vue-options-api-demos/form/custom-components/advanced/main.js create mode 100644 vue-options-api-demos/form/custom-components/advanced/main.vue create mode 100644 vue-options-api-demos/form/custom-components/advanced/validators.js create mode 100644 vue-options-api-demos/form/custom-components/basic/FormContent.vue create mode 100644 vue-options-api-demos/form/custom-components/basic/FormInput.vue create mode 100644 vue-options-api-demos/form/custom-components/basic/main.js create mode 100644 vue-options-api-demos/form/custom-components/basic/main.vue create mode 100644 vue-options-api-demos/form/fieldarrayvalidation/CommandCell.vue create mode 100644 vue-options-api-demos/form/fieldarrayvalidation/FormContent.vue create mode 100644 vue-options-api-demos/form/fieldarrayvalidation/FormGrid.vue create mode 100644 vue-options-api-demos/form/fieldarrayvalidation/main.js create mode 100644 vue-options-api-demos/form/fieldarrayvalidation/main.vue create mode 100644 vue-options-api-demos/form/fieldvalidation/FormContent.vue create mode 100644 vue-options-api-demos/form/fieldvalidation/FormInput.vue create mode 100644 vue-options-api-demos/form/fieldvalidation/main.js create mode 100644 vue-options-api-demos/form/fieldvalidation/main.vue create mode 100644 vue-options-api-demos/form/formvalidation/FormContent.vue create mode 100644 vue-options-api-demos/form/formvalidation/FormInput.vue create mode 100644 vue-options-api-demos/form/formvalidation/main.js create mode 100644 vue-options-api-demos/form/formvalidation/main.vue create mode 100644 vue-options-api-demos/form/guideline/checkboxes/FormCheckbox.vue create mode 100644 vue-options-api-demos/form/guideline/checkboxes/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/checkboxes/FormRadioGroup.vue create mode 100644 vue-options-api-demos/form/guideline/checkboxes/data.js create mode 100644 vue-options-api-demos/form/guideline/checkboxes/main.js create mode 100644 vue-options-api-demos/form/guideline/checkboxes/main.vue create mode 100644 vue-options-api-demos/form/guideline/checkboxes/validators.js create mode 100644 vue-options-api-demos/form/guideline/datepickers/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/datepickers/FormDateInput.vue create mode 100644 vue-options-api-demos/form/guideline/datepickers/FormDatePicker.vue create mode 100644 vue-options-api-demos/form/guideline/datepickers/FormDateTimePicker.vue create mode 100644 vue-options-api-demos/form/guideline/datepickers/FormTimePicker.vue create mode 100644 vue-options-api-demos/form/guideline/datepickers/main.js create mode 100644 vue-options-api-demos/form/guideline/datepickers/main.vue create mode 100644 vue-options-api-demos/form/guideline/datepickers/validators.js create mode 100644 vue-options-api-demos/form/guideline/disabled/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/disabled/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/disabled/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/disabled/main.js create mode 100644 vue-options-api-demos/form/guideline/disabled/main.vue create mode 100644 vue-options-api-demos/form/guideline/dropdowns/FormAutoComplete.vue create mode 100644 vue-options-api-demos/form/guideline/dropdowns/FormComboBox.vue create mode 100644 vue-options-api-demos/form/guideline/dropdowns/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/dropdowns/FormDropDownList.vue create mode 100644 vue-options-api-demos/form/guideline/dropdowns/FormMultiSelect.vue create mode 100644 vue-options-api-demos/form/guideline/dropdowns/data.js create mode 100644 vue-options-api-demos/form/guideline/dropdowns/main.js create mode 100644 vue-options-api-demos/form/guideline/dropdowns/main.vue create mode 100644 vue-options-api-demos/form/guideline/dropdowns/validators.js create mode 100644 vue-options-api-demos/form/guideline/errormessages/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/errormessages/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/errormessages/main.js create mode 100644 vue-options-api-demos/form/guideline/errormessages/main.vue create mode 100644 vue-options-api-demos/form/guideline/errormessages/validators.js create mode 100644 vue-options-api-demos/form/guideline/floating/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/floating/FormFloatingNumericTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/floating/main.js create mode 100644 vue-options-api-demos/form/guideline/floating/main.vue create mode 100644 vue-options-api-demos/form/guideline/floating/validators.js create mode 100644 vue-options-api-demos/form/guideline/formbuttons/FormCheckbox.vue create mode 100644 vue-options-api-demos/form/guideline/formbuttons/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/formbuttons/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/formbuttons/main.js create mode 100644 vue-options-api-demos/form/guideline/formbuttons/main.vue create mode 100644 vue-options-api-demos/form/guideline/formbuttons/validators.js create mode 100644 vue-options-api-demos/form/guideline/formcomponents/FormCheckbox.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/FormDatePicker.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/FormNumericTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/FormTextArea.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/main.js create mode 100644 vue-options-api-demos/form/guideline/formcomponents/main.vue create mode 100644 vue-options-api-demos/form/guideline/formcomponents/validators.js create mode 100644 vue-options-api-demos/form/guideline/formvalidation/FormCheckbox.vue create mode 100644 vue-options-api-demos/form/guideline/formvalidation/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/formvalidation/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/formvalidation/main.js create mode 100644 vue-options-api-demos/form/guideline/formvalidation/main.vue create mode 100644 vue-options-api-demos/form/guideline/formvalidation/validators.js create mode 100644 vue-options-api-demos/form/guideline/groups/FormCheckbox.vue create mode 100644 vue-options-api-demos/form/guideline/groups/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/groups/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/groups/main.js create mode 100644 vue-options-api-demos/form/guideline/groups/main.vue create mode 100644 vue-options-api-demos/form/guideline/groups/validators.js create mode 100644 vue-options-api-demos/form/guideline/hints/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/hints/FormDatePicker.vue create mode 100644 vue-options-api-demos/form/guideline/hints/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/hints/main.js create mode 100644 vue-options-api-demos/form/guideline/hints/main.vue create mode 100644 vue-options-api-demos/form/guideline/hints/validators.js create mode 100644 vue-options-api-demos/form/guideline/horizontal/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/horizontal/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/horizontal/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/horizontal/main.js create mode 100644 vue-options-api-demos/form/guideline/horizontal/main.vue create mode 100644 vue-options-api-demos/form/guideline/horizontal/validators.js create mode 100644 vue-options-api-demos/form/guideline/inputs/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/inputs/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/inputs/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/inputs/FormNumericTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/inputs/FormSlider.vue create mode 100644 vue-options-api-demos/form/guideline/inputs/FormTextArea.vue create mode 100644 vue-options-api-demos/form/guideline/inputs/main.js create mode 100644 vue-options-api-demos/form/guideline/inputs/main.vue create mode 100644 vue-options-api-demos/form/guideline/inputs/validators.js create mode 100644 vue-options-api-demos/form/guideline/optional/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/optional/FormFloatingNumericTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/optional/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/form/guideline/optional/main.js create mode 100644 vue-options-api-demos/form/guideline/optional/main.vue create mode 100644 vue-options-api-demos/form/guideline/optional/validators.js create mode 100644 vue-options-api-demos/form/guideline/placeholder/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/placeholder/FormInput.vue create mode 100644 vue-options-api-demos/form/guideline/placeholder/main.js create mode 100644 vue-options-api-demos/form/guideline/placeholder/main.vue create mode 100644 vue-options-api-demos/form/guideline/placeholder/validators.js create mode 100644 vue-options-api-demos/form/guideline/uploads/FormContent.vue create mode 100644 vue-options-api-demos/form/guideline/uploads/FormUpload.vue create mode 100644 vue-options-api-demos/form/guideline/uploads/main.js create mode 100644 vue-options-api-demos/form/guideline/uploads/main.vue create mode 100644 vue-options-api-demos/form/labels/FloatingLabelFormInput.vue create mode 100644 vue-options-api-demos/form/labels/FormContent.vue create mode 100644 vue-options-api-demos/form/labels/LabelFormInput.vue create mode 100644 vue-options-api-demos/form/labels/main.js create mode 100644 vue-options-api-demos/form/labels/main.vue create mode 100644 vue-options-api-demos/form/layout/horizontal/FloatingLabelFormInput.vue create mode 100644 vue-options-api-demos/form/layout/horizontal/FormContent.vue create mode 100644 vue-options-api-demos/form/layout/horizontal/LabelFormInput.vue create mode 100644 vue-options-api-demos/form/layout/horizontal/main.js create mode 100644 vue-options-api-demos/form/layout/horizontal/main.vue create mode 100644 vue-options-api-demos/form/layout/vertical/FloatingLabelFormInput.vue create mode 100644 vue-options-api-demos/form/layout/vertical/FormContent.vue create mode 100644 vue-options-api-demos/form/layout/vertical/LabelFormInput.vue create mode 100644 vue-options-api-demos/form/layout/vertical/main.js create mode 100644 vue-options-api-demos/form/layout/vertical/main.vue create mode 100644 vue-options-api-demos/form/shared/CommandCell.vue create mode 100644 vue-options-api-demos/form/shared/FormAutoComplete.vue create mode 100644 vue-options-api-demos/form/shared/FormCheckbox.vue create mode 100644 vue-options-api-demos/form/shared/FormComboBox.vue create mode 100644 vue-options-api-demos/form/shared/FormDateInput.vue create mode 100644 vue-options-api-demos/form/shared/FormDatePicker.vue create mode 100644 vue-options-api-demos/form/shared/FormDateTimePicker.vue create mode 100644 vue-options-api-demos/form/shared/FormDropDownList.vue create mode 100644 vue-options-api-demos/form/shared/FormFloatingNumericTextBox.vue create mode 100644 vue-options-api-demos/form/shared/FormGrid.vue create mode 100644 vue-options-api-demos/form/shared/FormInput.vue create mode 100644 vue-options-api-demos/form/shared/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/form/shared/FormMultiSelect.vue create mode 100644 vue-options-api-demos/form/shared/FormNumericTextBox.vue create mode 100644 vue-options-api-demos/form/shared/FormRadioGroup.vue create mode 100644 vue-options-api-demos/form/shared/FormSlider.vue create mode 100644 vue-options-api-demos/form/shared/FormTextArea.vue create mode 100644 vue-options-api-demos/form/shared/FormTimePicker.vue create mode 100644 vue-options-api-demos/form/shared/FormUpload.vue create mode 100644 vue-options-api-demos/form/shared/data.js create mode 100644 vue-options-api-demos/form/shared/tree-data-operations.js create mode 100644 vue-options-api-demos/form/shared/validators.js create mode 100644 vue-options-api-demos/gauges/arc-gauge/color-ranges/main.js create mode 100644 vue-options-api-demos/gauges/arc-gauge/color-ranges/main.vue create mode 100644 vue-options-api-demos/gauges/arc-gauge/overview/main.js create mode 100644 vue-options-api-demos/gauges/arc-gauge/overview/main.vue create mode 100644 vue-options-api-demos/gauges/arc-gauge/scale-options/main.js create mode 100644 vue-options-api-demos/gauges/arc-gauge/scale-options/main.vue create mode 100644 vue-options-api-demos/gauges/circular-gauge/center-template/main.js create mode 100644 vue-options-api-demos/gauges/circular-gauge/center-template/main.vue create mode 100644 vue-options-api-demos/gauges/circular-gauge/color-ranges/main.js create mode 100644 vue-options-api-demos/gauges/circular-gauge/color-ranges/main.vue create mode 100644 vue-options-api-demos/gauges/circular-gauge/overview/main.js create mode 100644 vue-options-api-demos/gauges/circular-gauge/overview/main.vue create mode 100644 vue-options-api-demos/gauges/circular-gauge/scale-options/main.js create mode 100644 vue-options-api-demos/gauges/circular-gauge/scale-options/main.vue create mode 100644 vue-options-api-demos/gauges/export-options/to-image/main.js create mode 100644 vue-options-api-demos/gauges/export-options/to-image/main.vue create mode 100644 vue-options-api-demos/gauges/export-options/to-pdf/main.js create mode 100644 vue-options-api-demos/gauges/export-options/to-pdf/main.vue create mode 100644 vue-options-api-demos/gauges/export-options/to-svg/main.js create mode 100644 vue-options-api-demos/gauges/export-options/to-svg/main.vue create mode 100644 vue-options-api-demos/gauges/globalization/main.js create mode 100644 vue-options-api-demos/gauges/globalization/main.vue create mode 100644 vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.js create mode 100644 vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.vue create mode 100644 vue-options-api-demos/gauges/linear-gauge/orientation/main.js create mode 100644 vue-options-api-demos/gauges/linear-gauge/orientation/main.vue create mode 100644 vue-options-api-demos/gauges/linear-gauge/overview/main.js create mode 100644 vue-options-api-demos/gauges/linear-gauge/overview/main.vue create mode 100644 vue-options-api-demos/gauges/linear-gauge/scale-options/main.js create mode 100644 vue-options-api-demos/gauges/linear-gauge/scale-options/main.vue create mode 100644 vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.js create mode 100644 vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.vue create mode 100644 vue-options-api-demos/gauges/overview/main.js create mode 100644 vue-options-api-demos/gauges/overview/main.vue create mode 100644 vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.js create mode 100644 vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.vue create mode 100644 vue-options-api-demos/gauges/radial-gauge/overview/main.js create mode 100644 vue-options-api-demos/gauges/radial-gauge/overview/main.vue create mode 100644 vue-options-api-demos/gauges/radial-gauge/scale-options/main.js create mode 100644 vue-options-api-demos/gauges/radial-gauge/scale-options/main.vue create mode 100644 vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.js create mode 100644 vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.vue create mode 100644 vue-options-api-demos/gauges/rtl/main.js create mode 100644 vue-options-api-demos/gauges/rtl/main.vue create mode 100644 vue-options-api-demos/grid/basic/BudgetComponent.vue create mode 100644 vue-options-api-demos/grid/basic/ContactNameComponent.vue create mode 100644 vue-options-api-demos/grid/basic/EngagementComponent.vue create mode 100644 vue-options-api-demos/grid/basic/FlagComponent.vue create mode 100644 vue-options-api-demos/grid/basic/Grid.vue create mode 100644 vue-options-api-demos/grid/basic/IsOnlineComponent.vue create mode 100644 vue-options-api-demos/grid/basic/employees.json create mode 100644 vue-options-api-demos/grid/basic/en-US.js create mode 100644 vue-options-api-demos/grid/basic/es.js create mode 100644 vue-options-api-demos/grid/basic/fr.js create mode 100644 vue-options-api-demos/grid/basic/images.js create mode 100644 vue-options-api-demos/grid/basic/main.js create mode 100644 vue-options-api-demos/grid/basic/main.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/basic/main.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/basic/main.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/basic/products.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/checkboxFilter/ColumnMenu.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/checkboxFilter/products.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom-style/main.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom-style/main.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom-style/products.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom-style/styles.css create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom/ColumnMenu.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom/main.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom/main.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/custom/products.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/ColumnMenu.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.js create mode 100644 vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.vue create mode 100644 vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/products.js create mode 100644 vue-options-api-demos/grid/columns/column-virtualization/main.js create mode 100644 vue-options-api-demos/grid/columns/column-virtualization/main.vue create mode 100644 vue-options-api-demos/grid/columns/dynamic-column-generation/main.js create mode 100644 vue-options-api-demos/grid/columns/dynamic-column-generation/main.vue create mode 100644 vue-options-api-demos/grid/columns/headers/main.js create mode 100644 vue-options-api-demos/grid/columns/headers/main.vue create mode 100644 vue-options-api-demos/grid/columns/hidden/Header.vue create mode 100644 vue-options-api-demos/grid/columns/hidden/main.js create mode 100644 vue-options-api-demos/grid/columns/hidden/main.vue create mode 100644 vue-options-api-demos/grid/columns/locked/main.js create mode 100644 vue-options-api-demos/grid/columns/locked/main.vue create mode 100644 vue-options-api-demos/grid/columns/locked/products.js create mode 100644 vue-options-api-demos/grid/columns/reordering/main.js create mode 100644 vue-options-api-demos/grid/columns/reordering/main.vue create mode 100644 vue-options-api-demos/grid/columns/resizing/main.js create mode 100644 vue-options-api-demos/grid/columns/resizing/main.vue create mode 100644 vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.js create mode 100644 vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.vue create mode 100644 vue-options-api-demos/grid/columns/widths/fit-smaller-screens/products.json create mode 100644 vue-options-api-demos/grid/columns/widths/minimum-width/main.js create mode 100644 vue-options-api-demos/grid/columns/widths/minimum-width/main.vue create mode 100644 vue-options-api-demos/grid/columns/widths/minimum-width/products.json create mode 100644 vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.js create mode 100644 vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.vue create mode 100644 vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/products.json create mode 100644 vue-options-api-demos/grid/columns/widths/percentage-width/main.js create mode 100644 vue-options-api-demos/grid/columns/widths/percentage-width/main.vue create mode 100644 vue-options-api-demos/grid/columns/widths/percentage-width/products.json create mode 100644 vue-options-api-demos/grid/common/es.json create mode 100644 vue-options-api-demos/grid/common/northwind/categories.json create mode 100644 vue-options-api-demos/grid/common/northwind/customers.json create mode 100644 vue-options-api-demos/grid/common/northwind/employees.json create mode 100644 vue-options-api-demos/grid/common/northwind/orders.json create mode 100644 vue-options-api-demos/grid/common/northwind/products.json create mode 100644 vue-options-api-demos/grid/common/northwind/regions.json create mode 100644 vue-options-api-demos/grid/common/northwind/shippers.json create mode 100644 vue-options-api-demos/grid/common/northwind/suppliers.json create mode 100644 vue-options-api-demos/grid/compact-grid/ChangeComponent.vue create mode 100644 vue-options-api-demos/grid/compact-grid/ChangePercentageComponent.vue create mode 100644 vue-options-api-demos/grid/compact-grid/GridComponent.vue create mode 100644 vue-options-api-demos/grid/compact-grid/companyData.json create mode 100644 vue-options-api-demos/grid/compact-grid/main.js create mode 100644 vue-options-api-demos/grid/compact-grid/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/cells/component/ComponentInstance.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/cells/component/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/cells/component/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/cells/function/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/cells/function/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/cells/slot/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/cells/slot/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/detail/DetailComponent.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/detail/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/detail/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/detail/products.js create mode 100644 vue-options-api-demos/grid/custom-rendering/footer/component/ComponentInstance.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/footer/component/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/footer/component/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/footer/function/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/footer/function/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/footer/slot/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/footer/slot/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/group-header/CustomCell.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/group-header/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/group-header/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/grouping/CustomCell.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/grouping/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/grouping/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/headers/component/ComponentInstance.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/headers/component/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/headers/component/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/headers/function/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/headers/function/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/headers/slot/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/headers/slot/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/hierarchy/DetailComponent.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/hierarchy/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/hierarchy/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/hierarchy/products.js create mode 100644 vue-options-api-demos/grid/custom-rendering/loader-template/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/loader-template/main.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/row-reorder/CustomCell.vue create mode 100644 vue-options-api-demos/grid/custom-rendering/row-reorder/main.js create mode 100644 vue-options-api-demos/grid/custom-rendering/row-reorder/main.vue create mode 100644 vue-options-api-demos/grid/data-binding/local-data-operations/main.js create mode 100644 vue-options-api-demos/grid/data-binding/local-data-operations/main.vue create mode 100644 vue-options-api-demos/grid/data-binding/odata4-crud/CommandCell.vue create mode 100644 vue-options-api-demos/grid/data-binding/odata4-crud/main.js create mode 100644 vue-options-api-demos/grid/data-binding/odata4-crud/main.vue create mode 100644 vue-options-api-demos/grid/editing/basic/main.js create mode 100644 vue-options-api-demos/grid/editing/basic/main.vue create mode 100644 vue-options-api-demos/grid/editing/custom/CommandCell.vue create mode 100644 vue-options-api-demos/grid/editing/custom/DropDownCell.vue create mode 100644 vue-options-api-demos/grid/editing/custom/main.js create mode 100644 vue-options-api-demos/grid/editing/custom/main.vue create mode 100644 vue-options-api-demos/grid/editing/external/CommandCell.vue create mode 100644 vue-options-api-demos/grid/editing/external/DialogContainer.vue create mode 100644 vue-options-api-demos/grid/editing/external/data.js create mode 100644 vue-options-api-demos/grid/editing/external/main.js create mode 100644 vue-options-api-demos/grid/editing/external/main.vue create mode 100644 vue-options-api-demos/grid/editing/incell/main.js create mode 100644 vue-options-api-demos/grid/editing/incell/main.vue create mode 100644 vue-options-api-demos/grid/editing/inline-form/CommandCell.vue create mode 100644 vue-options-api-demos/grid/editing/inline-form/FormContent.vue create mode 100644 vue-options-api-demos/grid/editing/inline-form/FormInput.vue create mode 100644 vue-options-api-demos/grid/editing/inline-form/NameCell.vue create mode 100644 vue-options-api-demos/grid/editing/inline-form/main.js create mode 100644 vue-options-api-demos/grid/editing/inline-form/main.vue create mode 100644 vue-options-api-demos/grid/editing/inline-form/verificationFunctions.js create mode 100644 vue-options-api-demos/grid/editing/inline/CommandCell.vue create mode 100644 vue-options-api-demos/grid/editing/inline/main.js create mode 100644 vue-options-api-demos/grid/editing/inline/main.vue create mode 100644 vue-options-api-demos/grid/editing/validation/CommandCell.vue create mode 100644 vue-options-api-demos/grid/editing/validation/DatePickerCell.vue create mode 100644 vue-options-api-demos/grid/editing/validation/InputCell.vue create mode 100644 vue-options-api-demos/grid/editing/validation/NumericCell.vue create mode 100644 vue-options-api-demos/grid/editing/validation/main.js create mode 100644 vue-options-api-demos/grid/editing/validation/main.vue create mode 100644 vue-options-api-demos/grid/editing/validation/products.js create mode 100644 vue-options-api-demos/grid/editing/validation/verificationFunctions.js create mode 100644 vue-options-api-demos/grid/excel/main.js create mode 100644 vue-options-api-demos/grid/excel/main.vue create mode 100644 vue-options-api-demos/grid/filtering/basic/boolean/main.js create mode 100644 vue-options-api-demos/grid/filtering/basic/boolean/main.vue create mode 100644 vue-options-api-demos/grid/filtering/basic/boolean/products.js create mode 100644 vue-options-api-demos/grid/filtering/basic/date/main.js create mode 100644 vue-options-api-demos/grid/filtering/basic/date/main.vue create mode 100644 vue-options-api-demos/grid/filtering/basic/date/products.js create mode 100644 vue-options-api-demos/grid/filtering/basic/main.js create mode 100644 vue-options-api-demos/grid/filtering/basic/main.vue create mode 100644 vue-options-api-demos/grid/filtering/basic/number/main.js create mode 100644 vue-options-api-demos/grid/filtering/basic/number/main.vue create mode 100644 vue-options-api-demos/grid/filtering/basic/number/products.js create mode 100644 vue-options-api-demos/grid/filtering/basic/products.js create mode 100644 vue-options-api-demos/grid/filtering/basic/string/main.js create mode 100644 vue-options-api-demos/grid/filtering/basic/string/main.vue create mode 100644 vue-options-api-demos/grid/filtering/basic/string/products.js create mode 100644 vue-options-api-demos/grid/filtering/custom/main.js create mode 100644 vue-options-api-demos/grid/filtering/custom/main.vue create mode 100644 vue-options-api-demos/grid/filtering/custom/products.js create mode 100644 vue-options-api-demos/grid/filtering/external/main.js create mode 100644 vue-options-api-demos/grid/filtering/external/main.vue create mode 100644 vue-options-api-demos/grid/filtering/external/products.js create mode 100644 vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.js create mode 100644 vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.vue create mode 100644 vue-options-api-demos/grid/filtering/row/custom-daterangepicker/products.js create mode 100644 vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.js create mode 100644 vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.vue create mode 100644 vue-options-api-demos/grid/filtering/row/custom-dropdownlist/products.js create mode 100644 vue-options-api-demos/grid/filtering/row/custom-switch/main.js create mode 100644 vue-options-api-demos/grid/filtering/row/custom-switch/main.vue create mode 100644 vue-options-api-demos/grid/filtering/row/custom-switch/products.js create mode 100644 vue-options-api-demos/grid/filtering/select-filter-type/main.js create mode 100644 vue-options-api-demos/grid/filtering/select-filter-type/main.vue create mode 100644 vue-options-api-demos/grid/filtering/select-filter-type/products.js create mode 100644 vue-options-api-demos/grid/globalization/main.js create mode 100644 vue-options-api-demos/grid/globalization/main.vue create mode 100644 vue-options-api-demos/grid/grouping/aggregates/CellComponent.vue create mode 100644 vue-options-api-demos/grid/grouping/aggregates/main.js create mode 100644 vue-options-api-demos/grid/grouping/aggregates/main.vue create mode 100644 vue-options-api-demos/grid/grouping/basic/main.js create mode 100644 vue-options-api-demos/grid/grouping/basic/main.vue create mode 100644 vue-options-api-demos/grid/grouping/virtual/main.js create mode 100644 vue-options-api-demos/grid/grouping/virtual/main.vue create mode 100644 vue-options-api-demos/grid/grouping/virtual/products.js create mode 100644 vue-options-api-demos/grid/keyboard-inline/CommandCell.vue create mode 100644 vue-options-api-demos/grid/keyboard-inline/main.js create mode 100644 vue-options-api-demos/grid/keyboard-inline/main.vue create mode 100644 vue-options-api-demos/grid/keyboard-navigation/DetailComponent.vue create mode 100644 vue-options-api-demos/grid/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/grid/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/grid/keyboard-navigation/products.js create mode 100644 vue-options-api-demos/grid/live-data/ChangePriceComponent.vue create mode 100644 vue-options-api-demos/grid/live-data/Grid.vue create mode 100644 vue-options-api-demos/grid/live-data/PriceComponent.vue create mode 100644 vue-options-api-demos/grid/live-data/RatingComponent.vue create mode 100644 vue-options-api-demos/grid/live-data/TickerComponent.vue create mode 100644 vue-options-api-demos/grid/live-data/VolumeComponent.vue create mode 100644 vue-options-api-demos/grid/live-data/financial-data.js create mode 100644 vue-options-api-demos/grid/live-data/main.js create mode 100644 vue-options-api-demos/grid/live-data/main.vue create mode 100644 vue-options-api-demos/grid/live-data/services.js create mode 100644 vue-options-api-demos/grid/live-data/trends.js create mode 100644 vue-options-api-demos/grid/live-data/utils.js create mode 100644 vue-options-api-demos/grid/paging/basic/main.js create mode 100644 vue-options-api-demos/grid/paging/basic/main.vue create mode 100644 vue-options-api-demos/grid/paging/types/main.js create mode 100644 vue-options-api-demos/grid/paging/types/main.vue create mode 100644 vue-options-api-demos/grid/pdf/all-pages/main.js create mode 100644 vue-options-api-demos/grid/pdf/all-pages/main.vue create mode 100644 vue-options-api-demos/grid/pdf/basic/main.js create mode 100644 vue-options-api-demos/grid/pdf/basic/main.vue create mode 100644 vue-options-api-demos/grid/pdf/custom-columns/main.js create mode 100644 vue-options-api-demos/grid/pdf/custom-columns/main.vue create mode 100644 vue-options-api-demos/grid/pdf/custom-fonts/main.js create mode 100644 vue-options-api-demos/grid/pdf/custom-fonts/main.vue create mode 100644 vue-options-api-demos/grid/pdf/custom-fonts/styles.css create mode 100644 vue-options-api-demos/grid/pdf/fit-content/main.js create mode 100644 vue-options-api-demos/grid/pdf/fit-content/main.vue create mode 100644 vue-options-api-demos/grid/pdf/page-template/main.js create mode 100644 vue-options-api-demos/grid/pdf/page-template/main.vue create mode 100644 vue-options-api-demos/grid/performance/main.js create mode 100644 vue-options-api-demos/grid/performance/main.vue create mode 100644 vue-options-api-demos/grid/persist-state/ColumnMenu.vue create mode 100644 vue-options-api-demos/grid/persist-state/DetailComponent.vue create mode 100644 vue-options-api-demos/grid/persist-state/es.json create mode 100644 vue-options-api-demos/grid/persist-state/main.js create mode 100644 vue-options-api-demos/grid/persist-state/main.vue create mode 100644 vue-options-api-demos/grid/persist-state/orders.json create mode 100644 vue-options-api-demos/grid/print/control-column-widths/main.js create mode 100644 vue-options-api-demos/grid/print/control-column-widths/main.vue create mode 100644 vue-options-api-demos/grid/print/control-column-widths/products.json create mode 100644 vue-options-api-demos/grid/print/pageable/main.js create mode 100644 vue-options-api-demos/grid/print/pageable/main.vue create mode 100644 vue-options-api-demos/grid/print/scrollable-controlled/main.js create mode 100644 vue-options-api-demos/grid/print/scrollable-controlled/main.vue create mode 100644 vue-options-api-demos/grid/print/scrollable-controlled/products.json create mode 100644 vue-options-api-demos/grid/print/scrollable/main.js create mode 100644 vue-options-api-demos/grid/print/scrollable/main.vue create mode 100644 vue-options-api-demos/grid/responsive-columns/basic/main.js create mode 100644 vue-options-api-demos/grid/responsive-columns/basic/main.vue create mode 100644 vue-options-api-demos/grid/responsive-columns/basic/products.json create mode 100644 vue-options-api-demos/grid/responsive-columns/column-virtualization/main.js create mode 100644 vue-options-api-demos/grid/responsive-columns/column-virtualization/main.vue create mode 100644 vue-options-api-demos/grid/responsive-columns/height/main.js create mode 100644 vue-options-api-demos/grid/responsive-columns/height/main.vue create mode 100644 vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.js create mode 100644 vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.vue create mode 100644 vue-options-api-demos/grid/rowreorder/component/CustomCell.vue create mode 100644 vue-options-api-demos/grid/rowreorder/component/DragClue.vue create mode 100644 vue-options-api-demos/grid/rowreorder/component/DragPointer.vue create mode 100644 vue-options-api-demos/grid/rowreorder/component/common.js create mode 100644 vue-options-api-demos/grid/rowreorder/component/main.js create mode 100644 vue-options-api-demos/grid/rowreorder/component/main.vue create mode 100644 vue-options-api-demos/grid/rowreorder/css/CustomCell.vue create mode 100644 vue-options-api-demos/grid/rowreorder/css/DragClue.vue create mode 100644 vue-options-api-demos/grid/rowreorder/css/common.js create mode 100644 vue-options-api-demos/grid/rowreorder/css/main.js create mode 100644 vue-options-api-demos/grid/rowreorder/css/main.vue create mode 100644 vue-options-api-demos/grid/rows/sticky/main.js create mode 100644 vue-options-api-demos/grid/rows/sticky/main.vue create mode 100644 vue-options-api-demos/grid/rows/sticky/products.json create mode 100644 vue-options-api-demos/grid/scroll-modes/basic/main.js create mode 100644 vue-options-api-demos/grid/scroll-modes/basic/main.vue create mode 100644 vue-options-api-demos/grid/scroll-modes/custom/main.js create mode 100644 vue-options-api-demos/grid/scroll-modes/custom/main.vue create mode 100644 vue-options-api-demos/grid/scroll-modes/infinite/main.js create mode 100644 vue-options-api-demos/grid/scroll-modes/infinite/main.vue create mode 100644 vue-options-api-demos/grid/scroll-modes/infinite/products.json create mode 100644 vue-options-api-demos/grid/selection/basic/main.js create mode 100644 vue-options-api-demos/grid/selection/basic/main.vue create mode 100644 vue-options-api-demos/grid/selection/custom/main.js create mode 100644 vue-options-api-demos/grid/selection/custom/main.vue create mode 100644 vue-options-api-demos/grid/selection/custom/products.js create mode 100644 vue-options-api-demos/grid/shared/categories.json create mode 100644 vue-options-api-demos/grid/shared/customers.json create mode 100644 vue-options-api-demos/grid/shared/employees.json create mode 100644 vue-options-api-demos/grid/shared/es.json create mode 100644 vue-options-api-demos/grid/shared/keys.js create mode 100644 vue-options-api-demos/grid/shared/orders.json create mode 100644 vue-options-api-demos/grid/shared/products.json create mode 100644 vue-options-api-demos/grid/shared/regions.json create mode 100644 vue-options-api-demos/grid/shared/sample-products.js create mode 100644 vue-options-api-demos/grid/shared/shippers.json create mode 100644 vue-options-api-demos/grid/shared/suppliers.json create mode 100644 vue-options-api-demos/grid/sorting/basic/main.js create mode 100644 vue-options-api-demos/grid/sorting/basic/main.vue create mode 100644 vue-options-api-demos/grid/sorting/custom/main.js create mode 100644 vue-options-api-demos/grid/sorting/custom/main.vue create mode 100644 vue-options-api-demos/grid/styling/styling-cell/main.js create mode 100644 vue-options-api-demos/grid/styling/styling-cell/main.vue create mode 100644 vue-options-api-demos/grid/styling/styling-cell/products.json create mode 100644 vue-options-api-demos/grid/styling/styling-class-name/main.js create mode 100644 vue-options-api-demos/grid/styling/styling-class-name/main.vue create mode 100644 vue-options-api-demos/grid/styling/styling-class-name/products.json create mode 100644 vue-options-api-demos/grid/styling/styling-dynamic/main.js create mode 100644 vue-options-api-demos/grid/styling/styling-dynamic/main.vue create mode 100644 vue-options-api-demos/grid/styling/styling-header-cell/main.js create mode 100644 vue-options-api-demos/grid/styling/styling-header-cell/main.vue create mode 100644 vue-options-api-demos/grid/styling/styling-header-cell/products.json create mode 100644 vue-options-api-demos/grid/styling/styling-row/main.js create mode 100644 vue-options-api-demos/grid/styling/styling-row/main.vue create mode 100644 vue-options-api-demos/grid/styling/styling-row/products.json create mode 100644 vue-options-api-demos/indicators/badge/alignment/main.js create mode 100644 vue-options-api-demos/indicators/badge/alignment/main.vue create mode 100644 vue-options-api-demos/indicators/badge/container/main.js create mode 100644 vue-options-api-demos/indicators/badge/container/main.vue create mode 100644 vue-options-api-demos/indicators/badge/cutout-border/main.js create mode 100644 vue-options-api-demos/indicators/badge/cutout-border/main.vue create mode 100644 vue-options-api-demos/indicators/badge/fill/main.js create mode 100644 vue-options-api-demos/indicators/badge/fill/main.vue create mode 100644 vue-options-api-demos/indicators/badge/overview/Contacts.vue create mode 100644 vue-options-api-demos/indicators/badge/overview/SocialApps.vue create mode 100644 vue-options-api-demos/indicators/badge/overview/Status.vue create mode 100644 vue-options-api-demos/indicators/badge/overview/main.js create mode 100644 vue-options-api-demos/indicators/badge/overview/main.vue create mode 100644 vue-options-api-demos/indicators/badge/position/main.js create mode 100644 vue-options-api-demos/indicators/badge/position/main.vue create mode 100644 vue-options-api-demos/indicators/badge/positioning/main.js create mode 100644 vue-options-api-demos/indicators/badge/positioning/main.vue create mode 100644 vue-options-api-demos/indicators/badge/rounded/main.js create mode 100644 vue-options-api-demos/indicators/badge/rounded/main.vue create mode 100644 vue-options-api-demos/indicators/badge/size/main.js create mode 100644 vue-options-api-demos/indicators/badge/size/main.vue create mode 100644 vue-options-api-demos/indicators/badge/theme-color/main.js create mode 100644 vue-options-api-demos/indicators/badge/theme-color/main.vue create mode 100644 vue-options-api-demos/indicators/get-started/main.js create mode 100644 vue-options-api-demos/indicators/get-started/main.vue create mode 100644 vue-options-api-demos/indicators/globalization/main.js create mode 100644 vue-options-api-demos/indicators/globalization/main.vue create mode 100644 vue-options-api-demos/indicators/loader/overview/main.js create mode 100644 vue-options-api-demos/indicators/loader/overview/main.vue create mode 100644 vue-options-api-demos/indicators/loader/size/main.js create mode 100644 vue-options-api-demos/indicators/loader/size/main.vue create mode 100644 vue-options-api-demos/indicators/loader/theme-color/main.js create mode 100644 vue-options-api-demos/indicators/loader/theme-color/main.vue create mode 100644 vue-options-api-demos/indicators/loader/type/main.js create mode 100644 vue-options-api-demos/indicators/loader/type/main.vue create mode 100644 vue-options-api-demos/indicators/overview/main.js create mode 100644 vue-options-api-demos/indicators/overview/main.vue create mode 100644 vue-options-api-demos/indicators/skeleton/animation/main.js create mode 100644 vue-options-api-demos/indicators/skeleton/animation/main.vue create mode 100644 vue-options-api-demos/indicators/skeleton/dynamic/main.js create mode 100644 vue-options-api-demos/indicators/skeleton/dynamic/main.vue create mode 100644 vue-options-api-demos/indicators/skeleton/overview/main.js create mode 100644 vue-options-api-demos/indicators/skeleton/overview/main.vue create mode 100644 vue-options-api-demos/indicators/skeleton/shape/main.js create mode 100644 vue-options-api-demos/indicators/skeleton/shape/main.vue create mode 100644 vue-options-api-demos/inputs/basic/main.js create mode 100644 vue-options-api-demos/inputs/basic/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/appearance/configurator/CheckboxStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/checkbox/appearance/configurator/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/appearance/rounded/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/controlled/checked/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/controlled/checked/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/controlled/value/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/controlled/value/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/default/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/default/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/disabled/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/basic/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/form/basic/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/custom-message/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/form/custom-message/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/disable-styles/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/form/disable-styles/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormCheckbox.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormContent.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormInput.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/form/override/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/form/override/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/labels/custom/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/labels/custom/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/labels/setup/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/labels/setup/main.vue create mode 100644 vue-options-api-demos/inputs/checkbox/main/main.js create mode 100644 vue-options-api-demos/inputs/checkbox/main/main.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/colorcontrast/main.js create mode 100644 vue-options-api-demos/inputs/colorgradient/colorcontrast/main.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/controlled/main.js create mode 100644 vue-options-api-demos/inputs/colorgradient/controlled/main.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/disabled/main.js create mode 100644 vue-options-api-demos/inputs/colorgradient/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/events/Logger.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/events/main.js create mode 100644 vue-options-api-demos/inputs/colorgradient/events/main.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/colorgradient/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/opacity/main.js create mode 100644 vue-options-api-demos/inputs/colorgradient/opacity/main.vue create mode 100644 vue-options-api-demos/inputs/colorgradient/overview/main.js create mode 100644 vue-options-api-demos/inputs/colorgradient/overview/main.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/controlled/main.js create mode 100644 vue-options-api-demos/inputs/colorpalette/controlled/main.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/custom/main.js create mode 100644 vue-options-api-demos/inputs/colorpalette/custom/main.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/disabled/main.js create mode 100644 vue-options-api-demos/inputs/colorpalette/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/colorpalette/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/overview/basic/main.js create mode 100644 vue-options-api-demos/inputs/colorpalette/overview/basic/main.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/overview/basic/styles.css create mode 100644 vue-options-api-demos/inputs/colorpalette/overview/events/Logger.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/overview/events/main.js create mode 100644 vue-options-api-demos/inputs/colorpalette/overview/events/main.vue create mode 100644 vue-options-api-demos/inputs/colorpalette/presets/main.js create mode 100644 vue-options-api-demos/inputs/colorpalette/presets/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/appearance/ColorPickerConfigurator.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/appearance/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/appearance/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/colorcontrast/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/colorcontrast/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/controlled/popup/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/controlled/popup/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/controlled/value/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/controlled/value/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/gradient/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/gradient/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/palette/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/custom/palette/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/default/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/default/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/disabled/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/events/Logger.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/events/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/events/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/overview/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/overview/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/view/combined/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/view/combined/main.vue create mode 100644 vue-options-api-demos/inputs/colorpicker/view/popup/main.js create mode 100644 vue-options-api-demos/inputs/colorpicker/view/popup/main.vue create mode 100644 vue-options-api-demos/inputs/common/es.json create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/basic/main.js create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/basic/main.vue create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.js create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.vue create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.js create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.vue create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/disabled/main.js create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/events/Logger.vue create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/events/main.js create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/events/main.vue create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/floating-labels/main.js create mode 100644 vue-options-api-demos/inputs/floating-labels/main.vue create mode 100644 vue-options-api-demos/inputs/get-started/main.js create mode 100644 vue-options-api-demos/inputs/get-started/main.vue create mode 100644 vue-options-api-demos/inputs/globalization/es.json create mode 100644 vue-options-api-demos/inputs/globalization/main.js create mode 100644 vue-options-api-demos/inputs/globalization/main.vue create mode 100644 vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator copy.vue create mode 100644 vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/input/appearance/configurator/main.js create mode 100644 vue-options-api-demos/inputs/input/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/inputs/input/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/inputs/input/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/inputs/input/appearance/rounded/main.js create mode 100644 vue-options-api-demos/inputs/input/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/inputs/input/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/input/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/input/basic/main.js create mode 100644 vue-options-api-demos/inputs/input/basic/main.vue create mode 100644 vue-options-api-demos/inputs/input/forms/basic/main.js create mode 100644 vue-options-api-demos/inputs/input/forms/basic/main.vue create mode 100644 vue-options-api-demos/inputs/input/forms/custom-message/main.js create mode 100644 vue-options-api-demos/inputs/input/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/inputs/input/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/inputs/input/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/inputs/input/forms/override/main.js create mode 100644 vue-options-api-demos/inputs/input/forms/override/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/InputIcons.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/InputIcons.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/MaskedTextBoxStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/basic/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/basic/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/disabled/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/input-mode/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/input-mode/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/readonly/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/readonly/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/valid-state/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/valid-state/main.vue create mode 100644 vue-options-api-demos/inputs/maskedtextbox/value/main.js create mode 100644 vue-options-api-demos/inputs/maskedtextbox/value/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/disabled/InputIcons.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/prefix/InputIcons.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/configurator/NumericTextBoxStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/basic/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/basic/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/formats/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/formats/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/basic/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/basic/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/override/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/forms/override/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/input-mode/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/input-mode/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/predefined-step/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/predefined-step/main.vue create mode 100644 vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.js create mode 100644 vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.vue create mode 100644 vue-options-api-demos/inputs/radiobutton/appearance/main.js create mode 100644 vue-options-api-demos/inputs/radiobutton/appearance/main.vue create mode 100644 vue-options-api-demos/inputs/radiobutton/disabled/main.js create mode 100644 vue-options-api-demos/inputs/radiobutton/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.js create mode 100644 vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.vue create mode 100644 vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.js create mode 100644 vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.vue create mode 100644 vue-options-api-demos/inputs/radiobutton/overview/main.js create mode 100644 vue-options-api-demos/inputs/radiobutton/overview/main.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/controlled/main.js create mode 100644 vue-options-api-demos/inputs/radiogroup/controlled/main.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/default-state/main.js create mode 100644 vue-options-api-demos/inputs/radiogroup/default-state/main.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/forms/FormContent.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/forms/FormInput.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/forms/FormRadioGroup.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/forms/main.js create mode 100644 vue-options-api-demos/inputs/radiogroup/forms/main.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/radiogroup/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/layout/main.js create mode 100644 vue-options-api-demos/inputs/radiogroup/layout/main.vue create mode 100644 vue-options-api-demos/inputs/radiogroup/overview/main.js create mode 100644 vue-options-api-demos/inputs/radiogroup/overview/main.vue create mode 100644 vue-options-api-demos/inputs/rangeslider/controlled/main.js create mode 100644 vue-options-api-demos/inputs/rangeslider/controlled/main.vue create mode 100644 vue-options-api-demos/inputs/rangeslider/disabled/main.js create mode 100644 vue-options-api-demos/inputs/rangeslider/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/rangeslider/events/Logger.vue create mode 100644 vue-options-api-demos/inputs/rangeslider/events/main.js create mode 100644 vue-options-api-demos/inputs/rangeslider/events/main.vue create mode 100644 vue-options-api-demos/inputs/rangeslider/labels/main.js create mode 100644 vue-options-api-demos/inputs/rangeslider/labels/main.vue create mode 100644 vue-options-api-demos/inputs/rangeslider/orientation/main.js create mode 100644 vue-options-api-demos/inputs/rangeslider/orientation/main.vue create mode 100644 vue-options-api-demos/inputs/rangeslider/overview/main.js create mode 100644 vue-options-api-demos/inputs/rangeslider/overview/main.vue create mode 100644 vue-options-api-demos/inputs/rating/basic/main.js create mode 100644 vue-options-api-demos/inputs/rating/basic/main.vue create mode 100644 vue-options-api-demos/inputs/rating/controlled/main.js create mode 100644 vue-options-api-demos/inputs/rating/controlled/main.vue create mode 100644 vue-options-api-demos/inputs/rating/disabled/main.js create mode 100644 vue-options-api-demos/inputs/rating/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/rating/form-support/FormContent.vue create mode 100644 vue-options-api-demos/inputs/rating/form-support/FormInput.vue create mode 100644 vue-options-api-demos/inputs/rating/form-support/FormRating.vue create mode 100644 vue-options-api-demos/inputs/rating/form-support/main.js create mode 100644 vue-options-api-demos/inputs/rating/form-support/main.vue create mode 100644 vue-options-api-demos/inputs/rating/icon/main.js create mode 100644 vue-options-api-demos/inputs/rating/icon/main.vue create mode 100644 vue-options-api-demos/inputs/rating/item-customization/customItem.vue create mode 100644 vue-options-api-demos/inputs/rating/item-customization/main.js create mode 100644 vue-options-api-demos/inputs/rating/item-customization/main.vue create mode 100644 vue-options-api-demos/inputs/rating/items/main.js create mode 100644 vue-options-api-demos/inputs/rating/items/main.vue create mode 100644 vue-options-api-demos/inputs/rating/label/main.js create mode 100644 vue-options-api-demos/inputs/rating/label/main.vue create mode 100644 vue-options-api-demos/inputs/rating/navigation/main.js create mode 100644 vue-options-api-demos/inputs/rating/navigation/main.vue create mode 100644 vue-options-api-demos/inputs/rating/precision/first-full/main.js create mode 100644 vue-options-api-demos/inputs/rating/precision/first-full/main.vue create mode 100644 vue-options-api-demos/inputs/rating/precision/first-half/main.js create mode 100644 vue-options-api-demos/inputs/rating/precision/first-half/main.vue create mode 100644 vue-options-api-demos/inputs/rating/precision/main.js create mode 100644 vue-options-api-demos/inputs/rating/precision/main.vue create mode 100644 vue-options-api-demos/inputs/rating/readonly/main.js create mode 100644 vue-options-api-demos/inputs/rating/readonly/main.vue create mode 100644 vue-options-api-demos/inputs/rating/selection/main.js create mode 100644 vue-options-api-demos/inputs/rating/selection/main.vue create mode 100644 vue-options-api-demos/inputs/rtl/main.js create mode 100644 vue-options-api-demos/inputs/rtl/main.vue create mode 100644 vue-options-api-demos/inputs/shared/CheckboxStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/FormCheckbox.vue create mode 100644 vue-options-api-demos/inputs/shared/FormInput.vue create mode 100644 vue-options-api-demos/inputs/shared/FormSwitch.vue create mode 100644 vue-options-api-demos/inputs/shared/InputStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/MaskedTextBoxStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/NumericTextBoxStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/RadioButtonStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/SignatureStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/SwitchStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/TextAreaStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/shared/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/all-options/SignatureStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/signature/appearance/all-options/main.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/all-options/main.vue create mode 100644 vue-options-api-demos/inputs/signature/appearance/all-options/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/color/main.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/color/main.vue create mode 100644 vue-options-api-demos/inputs/signature/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/inputs/signature/appearance/roundness/main.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/roundness/main.vue create mode 100644 vue-options-api-demos/inputs/signature/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/signature/appearance/stroke-width/main.js create mode 100644 vue-options-api-demos/inputs/signature/appearance/stroke-width/main.vue create mode 100644 vue-options-api-demos/inputs/signature/controlled/export-scale/main.js create mode 100644 vue-options-api-demos/inputs/signature/controlled/export-scale/main.vue create mode 100644 vue-options-api-demos/inputs/signature/controlled/export-scale/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/controlled/popup/main.js create mode 100644 vue-options-api-demos/inputs/signature/controlled/popup/main.vue create mode 100644 vue-options-api-demos/inputs/signature/controlled/value/main.js create mode 100644 vue-options-api-demos/inputs/signature/controlled/value/main.vue create mode 100644 vue-options-api-demos/inputs/signature/controlled/value/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/disabled/main.js create mode 100644 vue-options-api-demos/inputs/signature/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/signature/disabled/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/events/main.js create mode 100644 vue-options-api-demos/inputs/signature/events/main.vue create mode 100644 vue-options-api-demos/inputs/signature/forms/kendo/FormContent.vue create mode 100644 vue-options-api-demos/inputs/signature/forms/kendo/FormInput.vue create mode 100644 vue-options-api-demos/inputs/signature/forms/kendo/FormSignature.vue create mode 100644 vue-options-api-demos/inputs/signature/forms/kendo/main.js create mode 100644 vue-options-api-demos/inputs/signature/forms/kendo/main.vue create mode 100644 vue-options-api-demos/inputs/signature/overview/main.js create mode 100644 vue-options-api-demos/inputs/signature/overview/main.vue create mode 100644 vue-options-api-demos/inputs/signature/overview/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/overview/styles.css create mode 100644 vue-options-api-demos/inputs/signature/popup/disabled/main.js create mode 100644 vue-options-api-demos/inputs/signature/popup/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/signature/popup/disabled/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/popup/scale/main.js create mode 100644 vue-options-api-demos/inputs/signature/popup/scale/main.vue create mode 100644 vue-options-api-demos/inputs/signature/popup/scale/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/readonly/main.js create mode 100644 vue-options-api-demos/inputs/signature/readonly/main.vue create mode 100644 vue-options-api-demos/inputs/signature/readonly/sample-signature.js create mode 100644 vue-options-api-demos/inputs/signature/smooth/main.js create mode 100644 vue-options-api-demos/inputs/signature/smooth/main.vue create mode 100644 vue-options-api-demos/inputs/slider/buttons/main.js create mode 100644 vue-options-api-demos/inputs/slider/buttons/main.vue create mode 100644 vue-options-api-demos/inputs/slider/controlled/main.js create mode 100644 vue-options-api-demos/inputs/slider/controlled/main.vue create mode 100644 vue-options-api-demos/inputs/slider/labels/main.js create mode 100644 vue-options-api-demos/inputs/slider/labels/main.vue create mode 100644 vue-options-api-demos/inputs/slider/orientation/main.js create mode 100644 vue-options-api-demos/inputs/slider/orientation/main.vue create mode 100644 vue-options-api-demos/inputs/slider/overview/main.js create mode 100644 vue-options-api-demos/inputs/slider/overview/main.vue create mode 100644 vue-options-api-demos/inputs/switch/appearance/configurator/SwitchStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/switch/appearance/configurator/main.js create mode 100644 vue-options-api-demos/inputs/switch/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/inputs/switch/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/switch/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.js create mode 100644 vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.vue create mode 100644 vue-options-api-demos/inputs/switch/appearance/track-rounded/main.js create mode 100644 vue-options-api-demos/inputs/switch/appearance/track-rounded/main.vue create mode 100644 vue-options-api-demos/inputs/switch/controlled/manual/main.js create mode 100644 vue-options-api-demos/inputs/switch/controlled/manual/main.vue create mode 100644 vue-options-api-demos/inputs/switch/controlled/overview/main.js create mode 100644 vue-options-api-demos/inputs/switch/controlled/overview/main.vue create mode 100644 vue-options-api-demos/inputs/switch/controlled/readonly/main.js create mode 100644 vue-options-api-demos/inputs/switch/controlled/readonly/main.vue create mode 100644 vue-options-api-demos/inputs/switch/default/main.js create mode 100644 vue-options-api-demos/inputs/switch/default/main.vue create mode 100644 vue-options-api-demos/inputs/switch/disabled/main.js create mode 100644 vue-options-api-demos/inputs/switch/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/switch/events/Logger.vue create mode 100644 vue-options-api-demos/inputs/switch/events/main.js create mode 100644 vue-options-api-demos/inputs/switch/events/main.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/custom-message/FormContent.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/custom-message/FormInput.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/custom-message/FormSwitch.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/custom-message/main.js create mode 100644 vue-options-api-demos/inputs/switch/forms-support/custom-message/main.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/form-required/FormContent.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/form-required/FormInput.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/form-required/FormSwitch.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/form-required/main.js create mode 100644 vue-options-api-demos/inputs/switch/forms-support/form-required/main.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/overview/FormContent.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/overview/FormInput.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/overview/FormSwitch.vue create mode 100644 vue-options-api-demos/inputs/switch/forms-support/overview/main.js create mode 100644 vue-options-api-demos/inputs/switch/forms-support/overview/main.vue create mode 100644 vue-options-api-demos/inputs/switch/keyboard/main.js create mode 100644 vue-options-api-demos/inputs/switch/keyboard/main.vue create mode 100644 vue-options-api-demos/inputs/switch/labels/main.js create mode 100644 vue-options-api-demos/inputs/switch/labels/main.vue create mode 100644 vue-options-api-demos/inputs/switch/overview/main.js create mode 100644 vue-options-api-demos/inputs/switch/overview/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/clear-button/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/clear-button/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/disabled/InputIcons.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/disabled/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/icon-name/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/icon-name/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/prefix/InputIcons.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/prefix/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/prefix/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/separator/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/separator/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/suffix/InputIcons.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/suffix/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/suffix/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.js create mode 100644 vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/appearance/configurator/TextAreaStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/textarea/appearance/configurator/main.js create mode 100644 vue-options-api-demos/inputs/textarea/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/appearance/rounded/main.js create mode 100644 vue-options-api-demos/inputs/textarea/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/textarea/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/controlled/main.js create mode 100644 vue-options-api-demos/inputs/textarea/controlled/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/counter/main.js create mode 100644 vue-options-api-demos/inputs/textarea/counter/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/default/main.js create mode 100644 vue-options-api-demos/inputs/textarea/default/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/disabled/main.js create mode 100644 vue-options-api-demos/inputs/textarea/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/events/Logger.vue create mode 100644 vue-options-api-demos/inputs/textarea/events/main.js create mode 100644 vue-options-api-demos/inputs/textarea/events/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/forms/FormContent.vue create mode 100644 vue-options-api-demos/inputs/textarea/forms/FormInput.vue create mode 100644 vue-options-api-demos/inputs/textarea/forms/FormTextArea.vue create mode 100644 vue-options-api-demos/inputs/textarea/forms/main.js create mode 100644 vue-options-api-demos/inputs/textarea/forms/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/input-mode/main.js create mode 100644 vue-options-api-demos/inputs/textarea/input-mode/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/overview/FormContent.vue create mode 100644 vue-options-api-demos/inputs/textarea/overview/FormTextArea.vue create mode 100644 vue-options-api-demos/inputs/textarea/overview/main.js create mode 100644 vue-options-api-demos/inputs/textarea/overview/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.js create mode 100644 vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.vue create mode 100644 vue-options-api-demos/inputs/textarea/sizing/initial/main.js create mode 100644 vue-options-api-demos/inputs/textarea/sizing/initial/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/adornments/main.js create mode 100644 vue-options-api-demos/inputs/textbox/adornments/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/appearance/configurator/InputStyleConfigurator.vue create mode 100644 vue-options-api-demos/inputs/textbox/appearance/configurator/main.js create mode 100644 vue-options-api-demos/inputs/textbox/appearance/configurator/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/appearance/rounded/main.js create mode 100644 vue-options-api-demos/inputs/textbox/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/appearance/size/main.js create mode 100644 vue-options-api-demos/inputs/textbox/appearance/size/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/character-count/main.js create mode 100644 vue-options-api-demos/inputs/textbox/character-count/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/clear-button/main.js create mode 100644 vue-options-api-demos/inputs/textbox/clear-button/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/clear-value/main.js create mode 100644 vue-options-api-demos/inputs/textbox/clear-value/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/disabled-adornments/TextBoxIcons.vue create mode 100644 vue-options-api-demos/inputs/textbox/disabled-adornments/main.js create mode 100644 vue-options-api-demos/inputs/textbox/disabled-adornments/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/disabled/main.js create mode 100644 vue-options-api-demos/inputs/textbox/disabled/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/forms-support/FormContent.vue create mode 100644 vue-options-api-demos/inputs/textbox/forms-support/FormTextBox.vue create mode 100644 vue-options-api-demos/inputs/textbox/forms-support/main.js create mode 100644 vue-options-api-demos/inputs/textbox/forms-support/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/forms-support/validators.js create mode 100644 vue-options-api-demos/inputs/textbox/icon-name/main.js create mode 100644 vue-options-api-demos/inputs/textbox/icon-name/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/input-mode/main.js create mode 100644 vue-options-api-demos/inputs/textbox/input-mode/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/loading-icon/main.js create mode 100644 vue-options-api-demos/inputs/textbox/loading-icon/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/overview/main.js create mode 100644 vue-options-api-demos/inputs/textbox/overview/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/overview/overview-styles.css create mode 100644 vue-options-api-demos/inputs/textbox/readonly/main.js create mode 100644 vue-options-api-demos/inputs/textbox/readonly/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/separator/main.js create mode 100644 vue-options-api-demos/inputs/textbox/separator/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.js create mode 100644 vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.vue create mode 100644 vue-options-api-demos/inputs/textbox/validation-icon/main.js create mode 100644 vue-options-api-demos/inputs/textbox/validation-icon/main.vue create mode 100644 vue-options-api-demos/intl/custom-service/CustomFormatIntlProvider.js create mode 100644 vue-options-api-demos/intl/custom-service/CustomFormatIntlService.js create mode 100644 vue-options-api-demos/intl/custom-service/DateFormatter.vue create mode 100644 vue-options-api-demos/intl/custom-service/main.js create mode 100644 vue-options-api-demos/intl/custom-service/main.vue create mode 100644 vue-options-api-demos/intl/date-formatting/main.js create mode 100644 vue-options-api-demos/intl/date-formatting/main.vue create mode 100644 vue-options-api-demos/intl/date-parsing/main.js create mode 100644 vue-options-api-demos/intl/date-parsing/main.vue create mode 100644 vue-options-api-demos/intl/general-formatting/FormattedDate.vue create mode 100644 vue-options-api-demos/intl/general-formatting/FormattedNumber.vue create mode 100644 vue-options-api-demos/intl/general-formatting/FormattedText.vue create mode 100644 vue-options-api-demos/intl/general-formatting/main.js create mode 100644 vue-options-api-demos/intl/general-formatting/main.vue create mode 100644 vue-options-api-demos/intl/internationalization/getting-started/main.js create mode 100644 vue-options-api-demos/intl/internationalization/getting-started/main.vue create mode 100644 vue-options-api-demos/intl/internationalization/overview/Chooser.vue create mode 100644 vue-options-api-demos/intl/internationalization/overview/CurrencyFormatter.vue create mode 100644 vue-options-api-demos/intl/internationalization/overview/DateFormatter.vue create mode 100644 vue-options-api-demos/intl/internationalization/overview/main.js create mode 100644 vue-options-api-demos/intl/internationalization/overview/main.vue create mode 100644 vue-options-api-demos/intl/load-prebuild-data/DateFormatter.vue create mode 100644 vue-options-api-demos/intl/load-prebuild-data/main.js create mode 100644 vue-options-api-demos/intl/load-prebuild-data/main.vue create mode 100644 vue-options-api-demos/intl/localization-overview/main.js create mode 100644 vue-options-api-demos/intl/localization-overview/main.vue create mode 100644 vue-options-api-demos/intl/localization-overview/messages-es.json create mode 100644 vue-options-api-demos/intl/localization-overview/messages-he.json create mode 100644 vue-options-api-demos/intl/localization/Chooser.vue create mode 100644 vue-options-api-demos/intl/localization/MessageComponent.vue create mode 100644 vue-options-api-demos/intl/localization/main.js create mode 100644 vue-options-api-demos/intl/localization/main.vue create mode 100644 vue-options-api-demos/intl/localization/messages.js create mode 100644 vue-options-api-demos/intl/number-formatting/FormattedNumber.vue create mode 100644 vue-options-api-demos/intl/number-formatting/main.js create mode 100644 vue-options-api-demos/intl/number-formatting/main.vue create mode 100644 vue-options-api-demos/intl/number-parsing/main.js create mode 100644 vue-options-api-demos/intl/number-parsing/main.vue create mode 100644 vue-options-api-demos/intl/reacting/Chooser.vue create mode 100644 vue-options-api-demos/intl/reacting/CurrencyFormatter.vue create mode 100644 vue-options-api-demos/intl/reacting/DateFormatter.vue create mode 100644 vue-options-api-demos/intl/reacting/main.js create mode 100644 vue-options-api-demos/intl/reacting/main.vue create mode 100644 vue-options-api-demos/intl/rtl-support/main.js create mode 100644 vue-options-api-demos/intl/rtl-support/main.vue create mode 100644 vue-options-api-demos/intl/shared/Chooser.vue create mode 100644 vue-options-api-demos/intl/use-in-component/DateFormatter.vue create mode 100644 vue-options-api-demos/intl/use-in-component/main.js create mode 100644 vue-options-api-demos/intl/use-in-component/main.vue create mode 100644 vue-options-api-demos/labels/error/basic/main.js create mode 100644 vue-options-api-demos/labels/error/basic/main.vue create mode 100644 vue-options-api-demos/labels/error/direction/main.js create mode 100644 vue-options-api-demos/labels/error/direction/main.vue create mode 100644 vue-options-api-demos/labels/floatinglabel/basic/main.js create mode 100644 vue-options-api-demos/labels/floatinglabel/basic/main.vue create mode 100644 vue-options-api-demos/labels/floatinglabel/custom/main.js create mode 100644 vue-options-api-demos/labels/floatinglabel/custom/main.vue create mode 100644 vue-options-api-demos/labels/floatinglabel/optional/main.js create mode 100644 vue-options-api-demos/labels/floatinglabel/optional/main.vue create mode 100644 vue-options-api-demos/labels/floatinglabel/placeholder/main.js create mode 100644 vue-options-api-demos/labels/floatinglabel/placeholder/main.vue create mode 100644 vue-options-api-demos/labels/floatinglabel/validation/main.js create mode 100644 vue-options-api-demos/labels/floatinglabel/validation/main.vue create mode 100644 vue-options-api-demos/labels/hint/basic/main.js create mode 100644 vue-options-api-demos/labels/hint/basic/main.vue create mode 100644 vue-options-api-demos/labels/hint/direction/main.js create mode 100644 vue-options-api-demos/labels/hint/direction/main.vue create mode 100644 vue-options-api-demos/labels/label/basic/main.js create mode 100644 vue-options-api-demos/labels/label/basic/main.vue create mode 100644 vue-options-api-demos/labels/label/custom/main.js create mode 100644 vue-options-api-demos/labels/label/custom/main.vue create mode 100644 vue-options-api-demos/labels/label/optional/main.js create mode 100644 vue-options-api-demos/labels/label/optional/main.vue create mode 100644 vue-options-api-demos/labels/label/validation/main.js create mode 100644 vue-options-api-demos/labels/label/validation/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/accessibility/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/accessibility/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/animation/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/animation/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/events/Logger.vue create mode 100644 vue-options-api-demos/layout/actionsheet/events/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/events/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/items/disabling/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/items/disabling/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/items/groups/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/items/groups/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/items/icons/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/items/icons/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/items/overview/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/items/overview/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/items/styling/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/items/styling/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/items/title/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/items/title/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/layout/actionsheet/overview/main.js create mode 100644 vue-options-api-demos/layout/actionsheet/overview/main.vue create mode 100644 vue-options-api-demos/layout/appbar/overview/main.js create mode 100644 vue-options-api-demos/layout/appbar/overview/main.vue create mode 100644 vue-options-api-demos/layout/appbar/position-mode/main.js create mode 100644 vue-options-api-demos/layout/appbar/position-mode/main.vue create mode 100644 vue-options-api-demos/layout/appbar/position/main.js create mode 100644 vue-options-api-demos/layout/appbar/position/main.vue create mode 100644 vue-options-api-demos/layout/appbar/responsive-design/main.js create mode 100644 vue-options-api-demos/layout/appbar/responsive-design/main.vue create mode 100644 vue-options-api-demos/layout/appbar/sections/main.js create mode 100644 vue-options-api-demos/layout/appbar/sections/main.vue create mode 100644 vue-options-api-demos/layout/appbar/separators/main.js create mode 100644 vue-options-api-demos/layout/appbar/separators/main.vue create mode 100644 vue-options-api-demos/layout/appbar/spacings/main.js create mode 100644 vue-options-api-demos/layout/appbar/spacings/main.vue create mode 100644 vue-options-api-demos/layout/appbar/theme-color/main.js create mode 100644 vue-options-api-demos/layout/appbar/theme-color/main.vue create mode 100644 vue-options-api-demos/layout/avatar/appearance/border/main.js create mode 100644 vue-options-api-demos/layout/avatar/appearance/border/main.vue create mode 100644 vue-options-api-demos/layout/avatar/appearance/fill-mode/main.js create mode 100644 vue-options-api-demos/layout/avatar/appearance/fill-mode/main.vue create mode 100644 vue-options-api-demos/layout/avatar/appearance/rounded/main.js create mode 100644 vue-options-api-demos/layout/avatar/appearance/rounded/main.vue create mode 100644 vue-options-api-demos/layout/avatar/appearance/shapes/main.js create mode 100644 vue-options-api-demos/layout/avatar/appearance/shapes/main.vue create mode 100644 vue-options-api-demos/layout/avatar/appearance/size/main.js create mode 100644 vue-options-api-demos/layout/avatar/appearance/size/main.vue create mode 100644 vue-options-api-demos/layout/avatar/appearance/theme-color/main.js create mode 100644 vue-options-api-demos/layout/avatar/appearance/theme-color/main.vue create mode 100644 vue-options-api-demos/layout/avatar/overview/main.js create mode 100644 vue-options-api-demos/layout/avatar/overview/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/appearance/BottomNavigationStyleConfigurator.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/appearance/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/appearance/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/basic-usage/Calendar.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/basic-usage/Inbox.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/basic-usage/Profile.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/basic-usage/index.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/basic-usage/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/basic-usage/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/fill/BottomNavigationStyleConfigurator.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/fill/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/fill/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/item-content/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/item-content/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/item-flow/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/item-flow/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/item-render/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/item-render/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/position-mode/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/position-mode/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/Bills.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/Home.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/More.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/Payments.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/Services.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/index.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/routing/main.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/theme-color/BottomNavigationStyleConfigurator.vue create mode 100644 vue-options-api-demos/layout/bottomnavigation/theme-color/main.js create mode 100644 vue-options-api-demos/layout/bottomnavigation/theme-color/main.vue create mode 100644 vue-options-api-demos/layout/card/actions/main.js create mode 100644 vue-options-api-demos/layout/card/actions/main.vue create mode 100644 vue-options-api-demos/layout/card/layouts/main.js create mode 100644 vue-options-api-demos/layout/card/layouts/main.vue create mode 100644 vue-options-api-demos/layout/card/orientation/main.js create mode 100644 vue-options-api-demos/layout/card/orientation/main.vue create mode 100644 vue-options-api-demos/layout/card/overview/main.js create mode 100644 vue-options-api-demos/layout/card/overview/main.vue create mode 100644 vue-options-api-demos/layout/card/types/main.js create mode 100644 vue-options-api-demos/layout/card/types/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/data-binding/local/main.js create mode 100644 vue-options-api-demos/layout/context-menu/data-binding/local/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/data-binding/remote/main.js create mode 100644 vue-options-api-demos/layout/context-menu/data-binding/remote/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/events/Logger.vue create mode 100644 vue-options-api-demos/layout/context-menu/events/main.js create mode 100644 vue-options-api-demos/layout/context-menu/events/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/disabled/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/disabled/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/icon/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/icon/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/styles/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/styles/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/text/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/text/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/url/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/properties/url/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.js create mode 100644 vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/open-close/main.js create mode 100644 vue-options-api-demos/layout/context-menu/open-close/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/overview/main.js create mode 100644 vue-options-api-demos/layout/context-menu/overview/main.vue create mode 100644 vue-options-api-demos/layout/context-menu/vertical/main.js create mode 100644 vue-options-api-demos/layout/context-menu/vertical/main.vue create mode 100644 vue-options-api-demos/layout/drawer/custom-render/Berlin.vue create mode 100644 vue-options-api-demos/layout/drawer/custom-render/Madrid.vue create mode 100644 vue-options-api-demos/layout/drawer/custom-render/Paris.vue create mode 100644 vue-options-api-demos/layout/drawer/custom-render/Rome.vue create mode 100644 vue-options-api-demos/layout/drawer/custom-render/index.js create mode 100644 vue-options-api-demos/layout/drawer/custom-render/main.js create mode 100644 vue-options-api-demos/layout/drawer/custom-render/main.vue create mode 100644 vue-options-api-demos/layout/drawer/custom-render/styles.css create mode 100644 vue-options-api-demos/layout/drawer/display-modes/main.js create mode 100644 vue-options-api-demos/layout/drawer/display-modes/main.vue create mode 100644 vue-options-api-demos/layout/drawer/events/Logger.vue create mode 100644 vue-options-api-demos/layout/drawer/events/main.js create mode 100644 vue-options-api-demos/layout/drawer/events/main.vue create mode 100644 vue-options-api-demos/layout/drawer/events/styles.css create mode 100644 vue-options-api-demos/layout/drawer/expanded/main.js create mode 100644 vue-options-api-demos/layout/drawer/expanded/main.vue create mode 100644 vue-options-api-demos/layout/drawer/expanded/styles.css create mode 100644 vue-options-api-demos/layout/drawer/getting-started/Attachments.vue create mode 100644 vue-options-api-demos/layout/drawer/getting-started/Calendar.vue create mode 100644 vue-options-api-demos/layout/drawer/getting-started/Favourites.vue create mode 100644 vue-options-api-demos/layout/drawer/getting-started/Inbox.vue create mode 100644 vue-options-api-demos/layout/drawer/getting-started/Notifications.vue create mode 100644 vue-options-api-demos/layout/drawer/getting-started/index.js create mode 100644 vue-options-api-demos/layout/drawer/getting-started/main.js create mode 100644 vue-options-api-demos/layout/drawer/getting-started/main.vue create mode 100644 vue-options-api-demos/layout/drawer/getting-started/styles.css create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/Education.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/Europe.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/Food.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/ItalianFood.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/JapaneseFood.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/NorthAmerica.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/Travel.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/index.js create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/main.js create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/main.vue create mode 100644 vue-options-api-demos/layout/drawer/hierarchical/styles.css create mode 100644 vue-options-api-demos/layout/drawer/mini-mode/main.js create mode 100644 vue-options-api-demos/layout/drawer/mini-mode/main.vue create mode 100644 vue-options-api-demos/layout/drawer/positioning/main.js create mode 100644 vue-options-api-demos/layout/drawer/positioning/main.vue create mode 100644 vue-options-api-demos/layout/drawer/routing/About.vue create mode 100644 vue-options-api-demos/layout/drawer/routing/Home.vue create mode 100644 vue-options-api-demos/layout/drawer/routing/Products.vue create mode 100644 vue-options-api-demos/layout/drawer/routing/index.js create mode 100644 vue-options-api-demos/layout/drawer/routing/main.js create mode 100644 vue-options-api-demos/layout/drawer/routing/main.vue create mode 100644 vue-options-api-demos/layout/drawer/routing/styles.css create mode 100644 vue-options-api-demos/layout/drawer/templates/content/index.js create mode 100644 vue-options-api-demos/layout/drawer/templates/content/main.js create mode 100644 vue-options-api-demos/layout/drawer/templates/content/main.vue create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/Attachments.vue create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/Calendar.vue create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/Favourites.vue create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/Inbox.vue create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/Notifications.vue create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/index.js create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/main.js create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/main.vue create mode 100644 vue-options-api-demos/layout/drawer/templates/header-footer/styles.css create mode 100644 vue-options-api-demos/layout/expansionpanel/animations/data.js create mode 100644 vue-options-api-demos/layout/expansionpanel/animations/main.js create mode 100644 vue-options-api-demos/layout/expansionpanel/animations/main.vue create mode 100644 vue-options-api-demos/layout/expansionpanel/animations/styles.css create mode 100644 vue-options-api-demos/layout/expansionpanel/disabled/main.js create mode 100644 vue-options-api-demos/layout/expansionpanel/disabled/main.vue create mode 100644 vue-options-api-demos/layout/expansionpanel/events/Logger.vue create mode 100644 vue-options-api-demos/layout/expansionpanel/events/data.js create mode 100644 vue-options-api-demos/layout/expansionpanel/events/main.js create mode 100644 vue-options-api-demos/layout/expansionpanel/events/main.vue create mode 100644 vue-options-api-demos/layout/expansionpanel/events/styles.css create mode 100644 vue-options-api-demos/layout/expansionpanel/icons/main.js create mode 100644 vue-options-api-demos/layout/expansionpanel/icons/main.vue create mode 100644 vue-options-api-demos/layout/expansionpanel/overview/data.js create mode 100644 vue-options-api-demos/layout/expansionpanel/overview/main.js create mode 100644 vue-options-api-demos/layout/expansionpanel/overview/main.vue create mode 100644 vue-options-api-demos/layout/expansionpanel/overview/styles.css create mode 100644 vue-options-api-demos/layout/get-started/main.js create mode 100644 vue-options-api-demos/layout/get-started/main.vue create mode 100644 vue-options-api-demos/layout/globalization/AccountDetails.vue create mode 100644 vue-options-api-demos/layout/globalization/AvatarComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/CardComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/FormInput.vue create mode 100644 vue-options-api-demos/layout/globalization/MenuComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/PanelBarComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/PersonalDetails.vue create mode 100644 vue-options-api-demos/layout/globalization/RegisterComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/SplitterComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/StepperComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/TabStripComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/TileLayoutComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/WizardComponent.vue create mode 100644 vue-options-api-demos/layout/globalization/content-overview.js create mode 100644 vue-options-api-demos/layout/globalization/index.js create mode 100644 vue-options-api-demos/layout/globalization/main.js create mode 100644 vue-options-api-demos/layout/globalization/main.vue create mode 100644 vue-options-api-demos/layout/globalization/panelbar-styles.css create mode 100644 vue-options-api-demos/layout/globalization/splitter-styles.css create mode 100644 vue-options-api-demos/layout/globalization/styles.css create mode 100644 vue-options-api-demos/layout/globalization/validators.js create mode 100644 vue-options-api-demos/layout/gridlayout/items/main.js create mode 100644 vue-options-api-demos/layout/gridlayout/items/main.vue create mode 100644 vue-options-api-demos/layout/gridlayout/items/styles.css create mode 100644 vue-options-api-demos/layout/gridlayout/layout/gaps/main.js create mode 100644 vue-options-api-demos/layout/gridlayout/layout/gaps/main.vue create mode 100644 vue-options-api-demos/layout/gridlayout/layout/gaps/styles.css create mode 100644 vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.js create mode 100644 vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.vue create mode 100644 vue-options-api-demos/layout/gridlayout/layout/horizontalalign/styles.css create mode 100644 vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.js create mode 100644 vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.vue create mode 100644 vue-options-api-demos/layout/gridlayout/layout/rows-cols/styles.css create mode 100644 vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.js create mode 100644 vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.vue create mode 100644 vue-options-api-demos/layout/gridlayout/layout/verticalalign/styles.css create mode 100644 vue-options-api-demos/layout/gridlayout/overview/RecommendedArticle.vue create mode 100644 vue-options-api-demos/layout/gridlayout/overview/TrendingArticle.vue create mode 100644 vue-options-api-demos/layout/gridlayout/overview/articles-info.js create mode 100644 vue-options-api-demos/layout/gridlayout/overview/main.js create mode 100644 vue-options-api-demos/layout/gridlayout/overview/main.vue create mode 100644 vue-options-api-demos/layout/gridlayout/overview/styles.css create mode 100644 vue-options-api-demos/layout/menu/data-binding/local/main.js create mode 100644 vue-options-api-demos/layout/menu/data-binding/local/main.vue create mode 100644 vue-options-api-demos/layout/menu/data-binding/remote/main.js create mode 100644 vue-options-api-demos/layout/menu/data-binding/remote/main.vue create mode 100644 vue-options-api-demos/layout/menu/events/Logger.vue create mode 100644 vue-options-api-demos/layout/menu/events/main.js create mode 100644 vue-options-api-demos/layout/menu/events/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/properties/disabled/main.js create mode 100644 vue-options-api-demos/layout/menu/items/properties/disabled/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/properties/icon/main.js create mode 100644 vue-options-api-demos/layout/menu/items/properties/icon/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/properties/separator/main.js create mode 100644 vue-options-api-demos/layout/menu/items/properties/separator/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/properties/styles/main.js create mode 100644 vue-options-api-demos/layout/menu/items/properties/styles/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/properties/styles/styles.css create mode 100644 vue-options-api-demos/layout/menu/items/properties/text/main.js create mode 100644 vue-options-api-demos/layout/menu/items/properties/text/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/properties/url/main.js create mode 100644 vue-options-api-demos/layout/menu/items/properties/url/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/items.json create mode 100644 vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.js create mode 100644 vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/rendering/content-render/main.js create mode 100644 vue-options-api-demos/layout/menu/items/rendering/content-render/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/rendering/item-render/main.js create mode 100644 vue-options-api-demos/layout/menu/items/rendering/item-render/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/rendering/link-render/main.js create mode 100644 vue-options-api-demos/layout/menu/items/rendering/link-render/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.js create mode 100644 vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.vue create mode 100644 vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.js create mode 100644 vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.vue create mode 100644 vue-options-api-demos/layout/menu/localization/Menu.vue create mode 100644 vue-options-api-demos/layout/menu/localization/en-US.js create mode 100644 vue-options-api-demos/layout/menu/localization/es.js create mode 100644 vue-options-api-demos/layout/menu/localization/fr.js create mode 100644 vue-options-api-demos/layout/menu/localization/main.js create mode 100644 vue-options-api-demos/layout/menu/localization/main.vue create mode 100644 vue-options-api-demos/layout/menu/open-close/click/main.js create mode 100644 vue-options-api-demos/layout/menu/open-close/click/main.vue create mode 100644 vue-options-api-demos/layout/menu/open-close/hover/main.js create mode 100644 vue-options-api-demos/layout/menu/open-close/hover/main.vue create mode 100644 vue-options-api-demos/layout/menu/overview/main.js create mode 100644 vue-options-api-demos/layout/menu/overview/main.vue create mode 100644 vue-options-api-demos/layout/menu/routing/About.vue create mode 100644 vue-options-api-demos/layout/menu/routing/Home.vue create mode 100644 vue-options-api-demos/layout/menu/routing/Products.vue create mode 100644 vue-options-api-demos/layout/menu/routing/Team.vue create mode 100644 vue-options-api-demos/layout/menu/routing/index.js create mode 100644 vue-options-api-demos/layout/menu/routing/main.js create mode 100644 vue-options-api-demos/layout/menu/routing/main.vue create mode 100644 vue-options-api-demos/layout/menu/vertical/main.js create mode 100644 vue-options-api-demos/layout/menu/vertical/main.vue create mode 100644 vue-options-api-demos/layout/overview/AccountDetails.vue create mode 100644 vue-options-api-demos/layout/overview/Avatar.vue create mode 100644 vue-options-api-demos/layout/overview/BottomNavigation.vue create mode 100644 vue-options-api-demos/layout/overview/Card.vue create mode 100644 vue-options-api-demos/layout/overview/ContextMenu.vue create mode 100644 vue-options-api-demos/layout/overview/ExpansionPanel.vue create mode 100644 vue-options-api-demos/layout/overview/FormInput.vue create mode 100644 vue-options-api-demos/layout/overview/GridLayout.vue create mode 100644 vue-options-api-demos/layout/overview/Menu.vue create mode 100644 vue-options-api-demos/layout/overview/PanelBar.vue create mode 100644 vue-options-api-demos/layout/overview/PersonalDetails.vue create mode 100644 vue-options-api-demos/layout/overview/Register.vue create mode 100644 vue-options-api-demos/layout/overview/Splitter.vue create mode 100644 vue-options-api-demos/layout/overview/StackLayout.vue create mode 100644 vue-options-api-demos/layout/overview/Stepper.vue create mode 100644 vue-options-api-demos/layout/overview/TabStrip.vue create mode 100644 vue-options-api-demos/layout/overview/TileLayout.vue create mode 100644 vue-options-api-demos/layout/overview/Wizard.vue create mode 100644 vue-options-api-demos/layout/overview/gridlayout-styles.css create mode 100644 vue-options-api-demos/layout/overview/index.js create mode 100644 vue-options-api-demos/layout/overview/main.js create mode 100644 vue-options-api-demos/layout/overview/main.vue create mode 100644 vue-options-api-demos/layout/overview/panelbar-styles.css create mode 100644 vue-options-api-demos/layout/overview/splitter-styles.css create mode 100644 vue-options-api-demos/layout/overview/stacklayout-styles.css create mode 100644 vue-options-api-demos/layout/overview/styles.css create mode 100644 vue-options-api-demos/layout/overview/validators.js create mode 100644 vue-options-api-demos/layout/panelbar/animation/main.js create mode 100644 vue-options-api-demos/layout/panelbar/animation/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/animation/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/binding/local/main.js create mode 100644 vue-options-api-demos/layout/panelbar/binding/local/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/binding/local/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/binding/remote/main.js create mode 100644 vue-options-api-demos/layout/panelbar/binding/remote/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/binding/remote/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/controlled-state/all/main.js create mode 100644 vue-options-api-demos/layout/panelbar/controlled-state/all/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/controlled-state/basic/main.js create mode 100644 vue-options-api-demos/layout/panelbar/controlled-state/basic/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/controlled-state/basic/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/controlled/basic/main.js create mode 100644 vue-options-api-demos/layout/panelbar/controlled/basic/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/controlled/basic/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/controlled/custom/main.js create mode 100644 vue-options-api-demos/layout/panelbar/controlled/custom/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/controlled/custom/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/custom/collections/main.js create mode 100644 vue-options-api-demos/layout/panelbar/custom/collections/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/custom/collections/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/custom/custom/main.js create mode 100644 vue-options-api-demos/layout/panelbar/custom/custom/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/custom/custom/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/expand/main.js create mode 100644 vue-options-api-demos/layout/panelbar/expand/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/expand/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/items/custom/main.js create mode 100644 vue-options-api-demos/layout/panelbar/items/custom/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/items/custom/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/items/state/disabled/main.js create mode 100644 vue-options-api-demos/layout/panelbar/items/state/disabled/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/items/state/disabled/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/items/state/expanded/main.js create mode 100644 vue-options-api-demos/layout/panelbar/items/state/expanded/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/items/state/expanded/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/items/state/selected/main.js create mode 100644 vue-options-api-demos/layout/panelbar/items/state/selected/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/items/state/selected/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.js create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/getting-started/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/icons/main.js create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/icons/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/icons/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/images/main.js create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/images/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/items/titles/images/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/keyboard/main.js create mode 100644 vue-options-api-demos/layout/panelbar/keyboard/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/keyboard/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/mounted/main.js create mode 100644 vue-options-api-demos/layout/panelbar/mounted/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/overview/basic/main.js create mode 100644 vue-options-api-demos/layout/panelbar/overview/basic/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/overview/basic/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/overview/events/Logger.vue create mode 100644 vue-options-api-demos/layout/panelbar/overview/events/main.js create mode 100644 vue-options-api-demos/layout/panelbar/overview/events/main.vue create mode 100644 vue-options-api-demos/layout/panelbar/overview/events/styles.css create mode 100644 vue-options-api-demos/layout/panelbar/routing/About.vue create mode 100644 vue-options-api-demos/layout/panelbar/routing/Home.vue create mode 100644 vue-options-api-demos/layout/panelbar/routing/Products.vue create mode 100644 vue-options-api-demos/layout/panelbar/routing/Team.vue create mode 100644 vue-options-api-demos/layout/panelbar/routing/index.js create mode 100644 vue-options-api-demos/layout/panelbar/routing/main.js create mode 100644 vue-options-api-demos/layout/panelbar/routing/main.vue create mode 100644 vue-options-api-demos/layout/splitter/events/Logger.vue create mode 100644 vue-options-api-demos/layout/splitter/events/main.js create mode 100644 vue-options-api-demos/layout/splitter/events/main.vue create mode 100644 vue-options-api-demos/layout/splitter/events/styles.css create mode 100644 vue-options-api-demos/layout/splitter/keyboard/main.js create mode 100644 vue-options-api-demos/layout/splitter/keyboard/main.vue create mode 100644 vue-options-api-demos/layout/splitter/keyboard/styles.css create mode 100644 vue-options-api-demos/layout/splitter/orientation/main.js create mode 100644 vue-options-api-demos/layout/splitter/orientation/main.vue create mode 100644 vue-options-api-demos/layout/splitter/orientation/styles.css create mode 100644 vue-options-api-demos/layout/splitter/overview/basic/main.js create mode 100644 vue-options-api-demos/layout/splitter/overview/basic/main.vue create mode 100644 vue-options-api-demos/layout/splitter/overview/basic/styles.css create mode 100644 vue-options-api-demos/layout/splitter/panes/collapsing/main.js create mode 100644 vue-options-api-demos/layout/splitter/panes/collapsing/main.vue create mode 100644 vue-options-api-demos/layout/splitter/panes/collapsing/styles.css create mode 100644 vue-options-api-demos/layout/splitter/panes/dimensions/main.js create mode 100644 vue-options-api-demos/layout/splitter/panes/dimensions/main.vue create mode 100644 vue-options-api-demos/layout/splitter/panes/dimensions/styles.css create mode 100644 vue-options-api-demos/layout/splitter/panes/resizing/main.js create mode 100644 vue-options-api-demos/layout/splitter/panes/resizing/main.vue create mode 100644 vue-options-api-demos/layout/splitter/panes/resizing/styles.css create mode 100644 vue-options-api-demos/layout/splitter/panes/scrolling/main.js create mode 100644 vue-options-api-demos/layout/splitter/panes/scrolling/main.vue create mode 100644 vue-options-api-demos/layout/splitter/panes/scrolling/styles.css create mode 100644 vue-options-api-demos/layout/stacklayout/gaps/main.js create mode 100644 vue-options-api-demos/layout/stacklayout/gaps/main.vue create mode 100644 vue-options-api-demos/layout/stacklayout/gaps/styles.css create mode 100644 vue-options-api-demos/layout/stacklayout/horizontalalign/main.js create mode 100644 vue-options-api-demos/layout/stacklayout/horizontalalign/main.vue create mode 100644 vue-options-api-demos/layout/stacklayout/horizontalalign/styles.css create mode 100644 vue-options-api-demos/layout/stacklayout/nestedlayouts/main.js create mode 100644 vue-options-api-demos/layout/stacklayout/nestedlayouts/main.vue create mode 100644 vue-options-api-demos/layout/stacklayout/nestedlayouts/styles.css create mode 100644 vue-options-api-demos/layout/stacklayout/orientation/main.js create mode 100644 vue-options-api-demos/layout/stacklayout/orientation/main.vue create mode 100644 vue-options-api-demos/layout/stacklayout/orientation/styles.css create mode 100644 vue-options-api-demos/layout/stacklayout/overview/main.js create mode 100644 vue-options-api-demos/layout/stacklayout/overview/main.vue create mode 100644 vue-options-api-demos/layout/stacklayout/overview/styles.css create mode 100644 vue-options-api-demos/layout/stacklayout/verticalalign/main.js create mode 100644 vue-options-api-demos/layout/stacklayout/verticalalign/main.vue create mode 100644 vue-options-api-demos/layout/stacklayout/verticalalign/styles.css create mode 100644 vue-options-api-demos/layout/stepper/custom-rendering/main.js create mode 100644 vue-options-api-demos/layout/stepper/custom-rendering/main.vue create mode 100644 vue-options-api-demos/layout/stepper/display-modes/main.js create mode 100644 vue-options-api-demos/layout/stepper/display-modes/main.vue create mode 100644 vue-options-api-demos/layout/stepper/events/Logger.vue create mode 100644 vue-options-api-demos/layout/stepper/events/main.js create mode 100644 vue-options-api-demos/layout/stepper/events/main.vue create mode 100644 vue-options-api-demos/layout/stepper/getting-started/main.js create mode 100644 vue-options-api-demos/layout/stepper/getting-started/main.vue create mode 100644 vue-options-api-demos/layout/stepper/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/layout/stepper/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/layout/stepper/linear/main.js create mode 100644 vue-options-api-demos/layout/stepper/linear/main.vue create mode 100644 vue-options-api-demos/layout/stepper/orientation/main.js create mode 100644 vue-options-api-demos/layout/stepper/orientation/main.vue create mode 100644 vue-options-api-demos/layout/stepper/types/main.js create mode 100644 vue-options-api-demos/layout/stepper/types/main.vue create mode 100644 vue-options-api-demos/layout/stepper/validation/basic/main.js create mode 100644 vue-options-api-demos/layout/stepper/validation/basic/main.vue create mode 100644 vue-options-api-demos/layout/stepper/validation/icons/main.js create mode 100644 vue-options-api-demos/layout/stepper/validation/icons/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/configuration/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/configuration/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/events/Logger.vue create mode 100644 vue-options-api-demos/layout/tabstrip/events/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/events/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/keyboard/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/keyboard/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/overview/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/overview/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/size/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/size/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/alignment/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/alignment/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/Title.vue create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/disabled/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/disabled/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/initial/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/initial/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/position/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/position/main.vue create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/titles/main.js create mode 100644 vue-options-api-demos/layout/tabstrip/tabs/titles/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/add-remove/PageViews.vue create mode 100644 vue-options-api-demos/layout/tilelayout/add-remove/PopularPagesChart.vue create mode 100644 vue-options-api-demos/layout/tilelayout/add-remove/VisitorsDonut.vue create mode 100644 vue-options-api-demos/layout/tilelayout/add-remove/WindowContent.vue create mode 100644 vue-options-api-demos/layout/tilelayout/add-remove/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/add-remove/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/add-remove/tilelayout-data.js create mode 100644 vue-options-api-demos/layout/tilelayout/auto-flow/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/auto-flow/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/configuration-unique/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/configuration-unique/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/configuration/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/configuration/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/events/Logger.vue create mode 100644 vue-options-api-demos/layout/tilelayout/events/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/events/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/ConversionRate.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/ConversionsChart.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/PageViews.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/PopularPagesChart.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/UsersGrid.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/VisitorsDonut.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/overview/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/overview/tilelayout-data.js create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/positions/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/positions/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/reordering/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/reordering/main.vue create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/resizing/main.js create mode 100644 vue-options-api-demos/layout/tilelayout/tiles/resizing/main.vue create mode 100644 vue-options-api-demos/layout/wizard/basic/AccountDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/basic/FormInput.vue create mode 100644 vue-options-api-demos/layout/wizard/basic/PersonalDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/basic/Register.vue create mode 100644 vue-options-api-demos/layout/wizard/basic/main.js create mode 100644 vue-options-api-demos/layout/wizard/basic/main.vue create mode 100644 vue-options-api-demos/layout/wizard/basic/validators.js create mode 100644 vue-options-api-demos/layout/wizard/positioning/AccountDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/positioning/FormInput.vue create mode 100644 vue-options-api-demos/layout/wizard/positioning/PersonalDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/positioning/Register.vue create mode 100644 vue-options-api-demos/layout/wizard/positioning/main.js create mode 100644 vue-options-api-demos/layout/wizard/positioning/main.vue create mode 100644 vue-options-api-demos/layout/wizard/positioning/validators.js create mode 100644 vue-options-api-demos/layout/wizard/router/FormContent.vue create mode 100644 vue-options-api-demos/layout/wizard/router/FormInput.vue create mode 100644 vue-options-api-demos/layout/wizard/router/Overview.vue create mode 100644 vue-options-api-demos/layout/wizard/router/Register.vue create mode 100644 vue-options-api-demos/layout/wizard/router/UserDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/router/index.js create mode 100644 vue-options-api-demos/layout/wizard/router/main.js create mode 100644 vue-options-api-demos/layout/wizard/router/main.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/AccountDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/CardSelector.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/ErrorSummary.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormAutoComplete.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormCheckbox.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormDateInput.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormDatePicker.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormInput.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormNumericTextBox.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormRadioGroup.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormTextArea.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/FormUpload.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/PaymentDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/PersonalDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/main.js create mode 100644 vue-options-api-demos/layout/wizard/validation/step/main.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/step/validators.js create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/AccountDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/CardSelector.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/ErrorSummary.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormAutoComplete.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormCheckbox.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormDateInput.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormDatePicker.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormInput.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormMaskedTextBox.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormNumericTextBox.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormRadioGroup.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormTextArea.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/FormUpload.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/PaymentDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/PersonalDetails.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/main.js create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/main.vue create mode 100644 vue-options-api-demos/layout/wizard/validation/submit/validators.js create mode 100644 vue-options-api-demos/listbox/customization/main.js create mode 100644 vue-options-api-demos/listbox/customization/main.vue create mode 100644 vue-options-api-demos/listbox/customization/products.json create mode 100644 vue-options-api-demos/listbox/drag-and-drop/main.js create mode 100644 vue-options-api-demos/listbox/drag-and-drop/main.vue create mode 100644 vue-options-api-demos/listbox/drag-and-drop/products.json create mode 100644 vue-options-api-demos/listbox/get-started/data.js create mode 100644 vue-options-api-demos/listbox/get-started/main.js create mode 100644 vue-options-api-demos/listbox/get-started/main.vue create mode 100644 vue-options-api-demos/listbox/messages/data.js create mode 100644 vue-options-api-demos/listbox/messages/es.json create mode 100644 vue-options-api-demos/listbox/messages/main.js create mode 100644 vue-options-api-demos/listbox/messages/main.vue create mode 100644 vue-options-api-demos/listbox/multiple-lists/main.js create mode 100644 vue-options-api-demos/listbox/multiple-lists/main.vue create mode 100644 vue-options-api-demos/listbox/overview/data.js create mode 100644 vue-options-api-demos/listbox/overview/main.js create mode 100644 vue-options-api-demos/listbox/overview/main.vue create mode 100644 vue-options-api-demos/listbox/rtl/data.js create mode 100644 vue-options-api-demos/listbox/rtl/main.js create mode 100644 vue-options-api-demos/listbox/rtl/main.vue create mode 100644 vue-options-api-demos/listbox/selection/data.js create mode 100644 vue-options-api-demos/listbox/selection/main.js create mode 100644 vue-options-api-demos/listbox/selection/main.vue create mode 100644 vue-options-api-demos/listbox/shared/data.js create mode 100644 vue-options-api-demos/listbox/shared/es.json create mode 100644 vue-options-api-demos/listbox/shared/products.json create mode 100644 vue-options-api-demos/listview/default-scrolling/employees.js create mode 100644 vue-options-api-demos/listview/default-scrolling/images.js create mode 100644 vue-options-api-demos/listview/default-scrolling/main.js create mode 100644 vue-options-api-demos/listview/default-scrolling/main.vue create mode 100644 vue-options-api-demos/listview/editing/ItemRender.vue create mode 100644 vue-options-api-demos/listview/editing/main.js create mode 100644 vue-options-api-demos/listview/editing/main.vue create mode 100644 vue-options-api-demos/listview/editing/products.json create mode 100644 vue-options-api-demos/listview/endless-scrolling/destinations.json create mode 100644 vue-options-api-demos/listview/endless-scrolling/main.js create mode 100644 vue-options-api-demos/listview/endless-scrolling/main.vue create mode 100644 vue-options-api-demos/listview/events/Logger.vue create mode 100644 vue-options-api-demos/listview/events/main.js create mode 100644 vue-options-api-demos/listview/events/main.vue create mode 100644 vue-options-api-demos/listview/events/products.json create mode 100644 vue-options-api-demos/listview/filtering/main.js create mode 100644 vue-options-api-demos/listview/filtering/main.vue create mode 100644 vue-options-api-demos/listview/filtering/products.json create mode 100644 vue-options-api-demos/listview/footer-template/main.js create mode 100644 vue-options-api-demos/listview/footer-template/main.vue create mode 100644 vue-options-api-demos/listview/footer-template/products.json create mode 100644 vue-options-api-demos/listview/get-started/main.js create mode 100644 vue-options-api-demos/listview/get-started/main.vue create mode 100644 vue-options-api-demos/listview/get-started/products.json create mode 100644 vue-options-api-demos/listview/header-template/main.js create mode 100644 vue-options-api-demos/listview/header-template/main.vue create mode 100644 vue-options-api-demos/listview/header-template/products.json create mode 100644 vue-options-api-demos/listview/item-template/main.js create mode 100644 vue-options-api-demos/listview/item-template/main.vue create mode 100644 vue-options-api-demos/listview/item-template/products.json create mode 100644 vue-options-api-demos/listview/overview/contacts.json create mode 100644 vue-options-api-demos/listview/overview/main.js create mode 100644 vue-options-api-demos/listview/overview/main.vue create mode 100644 vue-options-api-demos/listview/paging/articles.json create mode 100644 vue-options-api-demos/listview/paging/main.js create mode 100644 vue-options-api-demos/listview/paging/main.vue create mode 100644 vue-options-api-demos/listview/shared/articles.json create mode 100644 vue-options-api-demos/listview/shared/contacts.json create mode 100644 vue-options-api-demos/listview/shared/destinations.json create mode 100644 vue-options-api-demos/listview/shared/products.json create mode 100644 vue-options-api-demos/notification/animation/main.js create mode 100644 vue-options-api-demos/notification/animation/main.vue create mode 100644 vue-options-api-demos/notification/animation/styles.css create mode 100644 vue-options-api-demos/notification/events/Logger.vue create mode 100644 vue-options-api-demos/notification/events/main.js create mode 100644 vue-options-api-demos/notification/events/main.vue create mode 100644 vue-options-api-demos/notification/get-started/main.js create mode 100644 vue-options-api-demos/notification/get-started/main.vue create mode 100644 vue-options-api-demos/notification/get-started/styles.css create mode 100644 vue-options-api-demos/notification/overview/main.js create mode 100644 vue-options-api-demos/notification/overview/main.vue create mode 100644 vue-options-api-demos/notification/overview/styles.css create mode 100644 vue-options-api-demos/notification/positions/Notifications.vue create mode 100644 vue-options-api-demos/notification/positions/main.js create mode 100644 vue-options-api-demos/notification/positions/main.vue create mode 100644 vue-options-api-demos/notification/types/main.js create mode 100644 vue-options-api-demos/notification/types/main.vue create mode 100644 vue-options-api-demos/pdf/base64/main.js create mode 100644 vue-options-api-demos/pdf/base64/main.vue create mode 100644 vue-options-api-demos/pdf/content-scaling/main.js create mode 100644 vue-options-api-demos/pdf/content-scaling/main.vue create mode 100644 vue-options-api-demos/pdf/content-styling/class/main.js create mode 100644 vue-options-api-demos/pdf/content-styling/class/main.vue create mode 100644 vue-options-api-demos/pdf/content-styling/class/styles.css create mode 100644 vue-options-api-demos/pdf/content-styling/element/main.js create mode 100644 vue-options-api-demos/pdf/content-styling/element/main.vue create mode 100644 vue-options-api-demos/pdf/content-styling/element/styles.css create mode 100644 vue-options-api-demos/pdf/embedded-image/main.js create mode 100644 vue-options-api-demos/pdf/embedded-image/main.vue create mode 100644 vue-options-api-demos/pdf/get-started/main.js create mode 100644 vue-options-api-demos/pdf/get-started/main.vue create mode 100644 vue-options-api-demos/pdf/get-started/products.json create mode 100644 vue-options-api-demos/pdf/hidden-content/main.js create mode 100644 vue-options-api-demos/pdf/hidden-content/main.vue create mode 100644 vue-options-api-demos/pdf/hyperlinks/main.js create mode 100644 vue-options-api-demos/pdf/hyperlinks/main.vue create mode 100644 vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.js create mode 100644 vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.vue create mode 100644 vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.js create mode 100644 vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.vue create mode 100644 vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/Content.vue create mode 100644 vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.js create mode 100644 vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.vue create mode 100644 vue-options-api-demos/pdf/multipage-content/page-templates/Content.vue create mode 100644 vue-options-api-demos/pdf/multipage-content/page-templates/main.js create mode 100644 vue-options-api-demos/pdf/multipage-content/page-templates/main.vue create mode 100644 vue-options-api-demos/pdf/overview/main.js create mode 100644 vue-options-api-demos/pdf/overview/main.vue create mode 100644 vue-options-api-demos/pdf/table-headers/main.js create mode 100644 vue-options-api-demos/pdf/table-headers/main.vue create mode 100644 vue-options-api-demos/pdf/table-headers/products.json create mode 100644 vue-options-api-demos/popup/align/absolute/main.js create mode 100644 vue-options-api-demos/popup/align/absolute/main.vue create mode 100644 vue-options-api-demos/popup/align/absolute/styles.css create mode 100644 vue-options-api-demos/popup/align/basic/main.js create mode 100644 vue-options-api-demos/popup/align/basic/main.vue create mode 100644 vue-options-api-demos/popup/align/basic/styles.css create mode 100644 vue-options-api-demos/popup/align/positioning/main.js create mode 100644 vue-options-api-demos/popup/align/positioning/main.vue create mode 100644 vue-options-api-demos/popup/align/positioning/styles.css create mode 100644 vue-options-api-demos/popup/animations/main.js create mode 100644 vue-options-api-demos/popup/animations/main.vue create mode 100644 vue-options-api-demos/popup/animations/styles.css create mode 100644 vue-options-api-demos/popup/basic/main.js create mode 100644 vue-options-api-demos/popup/basic/main.vue create mode 100644 vue-options-api-demos/popup/basic/styles.css create mode 100644 vue-options-api-demos/popup/hidden/main.js create mode 100644 vue-options-api-demos/popup/hidden/main.vue create mode 100644 vue-options-api-demos/popup/hidden/styles.css create mode 100644 vue-options-api-demos/popup/styling/main.js create mode 100644 vue-options-api-demos/popup/styling/main.vue create mode 100644 vue-options-api-demos/popup/styling/styles.css create mode 100644 vue-options-api-demos/popup/viewport/main.js create mode 100644 vue-options-api-demos/popup/viewport/main.vue create mode 100644 vue-options-api-demos/popup/viewport/styles.css create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormContent.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormDropDownList.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormInput.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.js create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.js create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/direction/main.js create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/direction/main.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.js create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.js create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/overview/main.js create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/overview/main.vue create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.js create mode 100644 vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.vue create mode 100644 vue-options-api-demos/progressbars/get-started/main.js create mode 100644 vue-options-api-demos/progressbars/get-started/main.vue create mode 100644 vue-options-api-demos/progressbars/globalization/main.js create mode 100644 vue-options-api-demos/progressbars/globalization/main.vue create mode 100644 vue-options-api-demos/progressbars/overview/main.js create mode 100644 vue-options-api-demos/progressbars/overview/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/animation-2/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/animation-2/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/animation/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/animation/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/appearance/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/appearance/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/dimensions/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/dimensions/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/direction/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/direction/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/disabled/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/disabled/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/label/custom/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/label/custom/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/label/getting-started/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/label/getting-started/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/orientation/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/orientation/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/overview/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/overview/main.vue create mode 100644 vue-options-api-demos/progressbars/progressbar/value_ranges/main.js create mode 100644 vue-options-api-demos/progressbars/progressbar/value_ranges/main.vue create mode 100644 vue-options-api-demos/scheduler/accessibility/summary/main.js create mode 100644 vue-options-api-demos/scheduler/accessibility/summary/main.vue create mode 100644 vue-options-api-demos/scheduler/adaptive-slot-height/disabled/events-utc.js create mode 100644 vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.js create mode 100644 vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.vue create mode 100644 vue-options-api-demos/scheduler/adaptive-slot-height/overview/events-utc.js create mode 100644 vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.js create mode 100644 vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.vue create mode 100644 vue-options-api-demos/scheduler/auto-item-height/constant/events-utc.js create mode 100644 vue-options-api-demos/scheduler/auto-item-height/constant/main.js create mode 100644 vue-options-api-demos/scheduler/auto-item-height/constant/main.vue create mode 100644 vue-options-api-demos/scheduler/auto-item-height/overview/events-utc.js create mode 100644 vue-options-api-demos/scheduler/auto-item-height/overview/main.js create mode 100644 vue-options-api-demos/scheduler/auto-item-height/overview/main.vue create mode 100644 vue-options-api-demos/scheduler/context/main.js create mode 100644 vue-options-api-demos/scheduler/context/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/agenda/task/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/agenda/task/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/agenda/task/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/color/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/color/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/color/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/image/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/image/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/image/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/resources/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/resources/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/events/resources/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/header-footer/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/header-footer/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/header-footer/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/color/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/color/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/color/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/month/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/month/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/month/main.vue create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/time/events-utc.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/time/main.js create mode 100644 vue-options-api-demos/scheduler/custom-templates/slots/time/main.vue create mode 100644 vue-options-api-demos/scheduler/customization/.DS_Store create mode 100644 vue-options-api-demos/scheduler/customization/editor/custom-editor/main.js create mode 100644 vue-options-api-demos/scheduler/customization/editor/custom-editor/main.vue create mode 100644 vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.js create mode 100644 vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.vue create mode 100644 vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.js create mode 100644 vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.vue create mode 100644 vue-options-api-demos/scheduler/customization/form/custom-components/main.js create mode 100644 vue-options-api-demos/scheduler/customization/form/custom-components/main.vue create mode 100644 vue-options-api-demos/scheduler/customization/form/default-rendering/main.js create mode 100644 vue-options-api-demos/scheduler/customization/form/default-rendering/main.vue create mode 100644 vue-options-api-demos/scheduler/data-binding/data-change/main.js create mode 100644 vue-options-api-demos/scheduler/data-binding/data-change/main.vue create mode 100644 vue-options-api-demos/scheduler/data-binding/data/main.js create mode 100644 vue-options-api-demos/scheduler/data-binding/data/main.vue create mode 100644 vue-options-api-demos/scheduler/data-binding/model-fields/main.js create mode 100644 vue-options-api-demos/scheduler/data-binding/model-fields/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/basic/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/basic/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/basic/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/CustomEditForm.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormDateTimePicker.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormInput.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormSwitch.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormTextArea.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/customize-default/CustomEditForm.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormInput.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormSwitch.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/customize-default/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/default-values/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/default-values/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/default-values/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/CustomEditForm.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormDateTimePicker.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormInput.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormSwitch.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormTextArea.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/grouping/configuration/data.js create mode 100644 vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/grouping/multiple/data.js create mode 100644 vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/resources/multiple/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/resources/multiple/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/resources/multiple/main.vue create mode 100644 vue-options-api-demos/scheduler/data-operations/resources/visual/events-utc.js create mode 100644 vue-options-api-demos/scheduler/data-operations/resources/visual/main.js create mode 100644 vue-options-api-demos/scheduler/data-operations/resources/visual/main.vue create mode 100644 vue-options-api-demos/scheduler/date-selection/controlled/main.js create mode 100644 vue-options-api-demos/scheduler/date-selection/controlled/main.vue create mode 100644 vue-options-api-demos/scheduler/date-selection/uncontrolled/main.js create mode 100644 vue-options-api-demos/scheduler/date-selection/uncontrolled/main.vue create mode 100644 vue-options-api-demos/scheduler/globalization/overview/es.json create mode 100644 vue-options-api-demos/scheduler/globalization/overview/events-utc.js create mode 100644 vue-options-api-demos/scheduler/globalization/overview/main.js create mode 100644 vue-options-api-demos/scheduler/globalization/overview/main.vue create mode 100644 vue-options-api-demos/scheduler/globalization/rtl/events-utc.js create mode 100644 vue-options-api-demos/scheduler/globalization/rtl/main.js create mode 100644 vue-options-api-demos/scheduler/globalization/rtl/main.vue create mode 100644 vue-options-api-demos/scheduler/header-footer/customization/main.js create mode 100644 vue-options-api-demos/scheduler/header-footer/customization/main.vue create mode 100644 vue-options-api-demos/scheduler/items/context/action-binding/main.js create mode 100644 vue-options-api-demos/scheduler/items/context/action-binding/main.vue create mode 100644 vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.js create mode 100644 vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.vue create mode 100644 vue-options-api-demos/scheduler/items/edit-item/extending/main.js create mode 100644 vue-options-api-demos/scheduler/items/edit-item/extending/main.vue create mode 100644 vue-options-api-demos/scheduler/items/item/callbacks/main.js create mode 100644 vue-options-api-demos/scheduler/items/item/callbacks/main.vue create mode 100644 vue-options-api-demos/scheduler/items/item/children/main.js create mode 100644 vue-options-api-demos/scheduler/items/item/children/main.vue create mode 100644 vue-options-api-demos/scheduler/items/item/style/main.js create mode 100644 vue-options-api-demos/scheduler/items/item/style/main.vue create mode 100644 vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.js create mode 100644 vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.vue create mode 100644 vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.js create mode 100644 vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.vue create mode 100644 vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.js create mode 100644 vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.vue create mode 100644 vue-options-api-demos/scheduler/items/overview/events-utc.js create mode 100644 vue-options-api-demos/scheduler/items/overview/main.js create mode 100644 vue-options-api-demos/scheduler/items/overview/main.vue create mode 100644 vue-options-api-demos/scheduler/items/view-item/extending/main.js create mode 100644 vue-options-api-demos/scheduler/items/view-item/extending/main.vue create mode 100644 vue-options-api-demos/scheduler/keyboard-navigation/basic/events-utc.js create mode 100644 vue-options-api-demos/scheduler/keyboard-navigation/basic/main.js create mode 100644 vue-options-api-demos/scheduler/keyboard-navigation/basic/main.vue create mode 100644 vue-options-api-demos/scheduler/overview/basic/events-utc.js create mode 100644 vue-options-api-demos/scheduler/overview/basic/main.js create mode 100644 vue-options-api-demos/scheduler/overview/basic/main.vue create mode 100644 vue-options-api-demos/scheduler/overview/demo/es.json create mode 100644 vue-options-api-demos/scheduler/overview/demo/events-utc.js create mode 100644 vue-options-api-demos/scheduler/overview/demo/main.js create mode 100644 vue-options-api-demos/scheduler/overview/demo/main.vue create mode 100644 vue-options-api-demos/scheduler/recurring/overview/id/main.js create mode 100644 vue-options-api-demos/scheduler/recurring/overview/id/main.vue create mode 100644 vue-options-api-demos/scheduler/recurring/overview/id/server-data.js create mode 100644 vue-options-api-demos/scheduler/recurring/overview/overview/data.js create mode 100644 vue-options-api-demos/scheduler/recurring/overview/overview/main.js create mode 100644 vue-options-api-demos/scheduler/recurring/overview/overview/main.vue create mode 100644 vue-options-api-demos/scheduler/shared/events-utc.js create mode 100644 vue-options-api-demos/scheduler/slots/context/action-binding/main.js create mode 100644 vue-options-api-demos/scheduler/slots/context/action-binding/main.vue create mode 100644 vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.js create mode 100644 vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.vue create mode 100644 vue-options-api-demos/scheduler/slots/overview/main.js create mode 100644 vue-options-api-demos/scheduler/slots/overview/main.vue create mode 100644 vue-options-api-demos/scheduler/slots/slot/style/main.js create mode 100644 vue-options-api-demos/scheduler/slots/slot/style/main.vue create mode 100644 vue-options-api-demos/scheduler/slots/view-slot/extending/main.js create mode 100644 vue-options-api-demos/scheduler/slots/view-slot/extending/main.vue create mode 100644 vue-options-api-demos/scheduler/tasks/overview/main.js create mode 100644 vue-options-api-demos/scheduler/tasks/overview/main.vue create mode 100644 vue-options-api-demos/scheduler/timezones/default/main.js create mode 100644 vue-options-api-demos/scheduler/timezones/default/main.vue create mode 100644 vue-options-api-demos/scheduler/timezones/fixed/main.js create mode 100644 vue-options-api-demos/scheduler/timezones/fixed/main.vue create mode 100644 vue-options-api-demos/scheduler/views/agenda/configuration/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/agenda/configuration/main.js create mode 100644 vue-options-api-demos/scheduler/views/agenda/configuration/main.vue create mode 100644 vue-options-api-demos/scheduler/views/agenda/grouping/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/agenda/grouping/main.js create mode 100644 vue-options-api-demos/scheduler/views/agenda/grouping/main.vue create mode 100644 vue-options-api-demos/scheduler/views/controlled-state/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/controlled-state/main.js create mode 100644 vue-options-api-demos/scheduler/views/controlled-state/main.vue create mode 100644 vue-options-api-demos/scheduler/views/day/configuration/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/day/configuration/main.js create mode 100644 vue-options-api-demos/scheduler/views/day/configuration/main.vue create mode 100644 vue-options-api-demos/scheduler/views/day/current-time/main.js create mode 100644 vue-options-api-demos/scheduler/views/day/current-time/main.vue create mode 100644 vue-options-api-demos/scheduler/views/day/grouping-vertical/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/day/grouping-vertical/main.js create mode 100644 vue-options-api-demos/scheduler/views/day/grouping-vertical/main.vue create mode 100644 vue-options-api-demos/scheduler/views/day/grouping/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/day/grouping/main.js create mode 100644 vue-options-api-demos/scheduler/views/day/grouping/main.vue create mode 100644 vue-options-api-demos/scheduler/views/default-view/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/default-view/main.js create mode 100644 vue-options-api-demos/scheduler/views/default-view/main.vue create mode 100644 vue-options-api-demos/scheduler/views/getting-started/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/getting-started/main.js create mode 100644 vue-options-api-demos/scheduler/views/getting-started/main.vue create mode 100644 vue-options-api-demos/scheduler/views/month/configuration/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/month/configuration/main.js create mode 100644 vue-options-api-demos/scheduler/views/month/configuration/main.vue create mode 100644 vue-options-api-demos/scheduler/views/month/grouping-vertical/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/month/grouping-vertical/main.js create mode 100644 vue-options-api-demos/scheduler/views/month/grouping-vertical/main.vue create mode 100644 vue-options-api-demos/scheduler/views/month/grouping/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/month/grouping/main.js create mode 100644 vue-options-api-demos/scheduler/views/month/grouping/main.vue create mode 100644 vue-options-api-demos/scheduler/views/timeline/configuration/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/timeline/configuration/main.js create mode 100644 vue-options-api-demos/scheduler/views/timeline/configuration/main.vue create mode 100644 vue-options-api-demos/scheduler/views/timeline/current-time/main.js create mode 100644 vue-options-api-demos/scheduler/views/timeline/current-time/main.vue create mode 100644 vue-options-api-demos/scheduler/views/timeline/grouping-vertical/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.js create mode 100644 vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.vue create mode 100644 vue-options-api-demos/scheduler/views/timeline/grouping/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/timeline/grouping/main.js create mode 100644 vue-options-api-demos/scheduler/views/timeline/grouping/main.vue create mode 100644 vue-options-api-demos/scheduler/views/week/configuration/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/week/configuration/main.js create mode 100644 vue-options-api-demos/scheduler/views/week/configuration/main.vue create mode 100644 vue-options-api-demos/scheduler/views/week/grouping-vertical/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/week/grouping-vertical/main.js create mode 100644 vue-options-api-demos/scheduler/views/week/grouping-vertical/main.vue create mode 100644 vue-options-api-demos/scheduler/views/week/grouping/events-utc.js create mode 100644 vue-options-api-demos/scheduler/views/week/grouping/main.js create mode 100644 vue-options-api-demos/scheduler/views/week/grouping/main.vue create mode 100644 vue-options-api-demos/scrollview/active-view/main.js create mode 100644 vue-options-api-demos/scrollview/active-view/main.vue create mode 100644 vue-options-api-demos/scrollview/active-view/styles.css create mode 100644 vue-options-api-demos/scrollview/arrows/main.js create mode 100644 vue-options-api-demos/scrollview/arrows/main.vue create mode 100644 vue-options-api-demos/scrollview/arrows/styles.css create mode 100644 vue-options-api-demos/scrollview/automatic-interval/main.js create mode 100644 vue-options-api-demos/scrollview/automatic-interval/main.vue create mode 100644 vue-options-api-demos/scrollview/automatic-interval/styles.css create mode 100644 vue-options-api-demos/scrollview/automatic-scrolling/main.js create mode 100644 vue-options-api-demos/scrollview/automatic-scrolling/main.vue create mode 100644 vue-options-api-demos/scrollview/automatic-scrolling/styles.css create mode 100644 vue-options-api-demos/scrollview/endless/main.js create mode 100644 vue-options-api-demos/scrollview/endless/main.vue create mode 100644 vue-options-api-demos/scrollview/endless/styles.css create mode 100644 vue-options-api-demos/scrollview/get-started/main.js create mode 100644 vue-options-api-demos/scrollview/get-started/main.vue create mode 100644 vue-options-api-demos/scrollview/get-started/styles.css create mode 100644 vue-options-api-demos/scrollview/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/scrollview/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/scrollview/keyboard-navigation/styles.css create mode 100644 vue-options-api-demos/scrollview/overview/main.js create mode 100644 vue-options-api-demos/scrollview/overview/main.vue create mode 100644 vue-options-api-demos/scrollview/overview/styles.css create mode 100644 vue-options-api-demos/scrollview/pager-overlay/main.js create mode 100644 vue-options-api-demos/scrollview/pager-overlay/main.vue create mode 100644 vue-options-api-demos/scrollview/pager-overlay/styles.css create mode 100644 vue-options-api-demos/scrollview/paging/main.js create mode 100644 vue-options-api-demos/scrollview/paging/main.vue create mode 100644 vue-options-api-demos/scrollview/paging/styles.css create mode 100644 vue-options-api-demos/scrollview/rtl/main.js create mode 100644 vue-options-api-demos/scrollview/rtl/main.vue create mode 100644 vue-options-api-demos/scrollview/rtl/styles.css create mode 100644 vue-options-api-demos/tooltip/controlled-mode/main.js create mode 100644 vue-options-api-demos/tooltip/controlled-mode/main.vue create mode 100644 vue-options-api-demos/tooltip/customization/main.js create mode 100644 vue-options-api-demos/tooltip/customization/main.vue create mode 100644 vue-options-api-demos/tooltip/events/Logger.vue create mode 100644 vue-options-api-demos/tooltip/events/main.js create mode 100644 vue-options-api-demos/tooltip/events/main.vue create mode 100644 vue-options-api-demos/tooltip/events/styles.css create mode 100644 vue-options-api-demos/tooltip/filters/main.js create mode 100644 vue-options-api-demos/tooltip/filters/main.vue create mode 100644 vue-options-api-demos/tooltip/grid-integration/main.js create mode 100644 vue-options-api-demos/tooltip/grid-integration/main.vue create mode 100644 vue-options-api-demos/tooltip/multiple/main.js create mode 100644 vue-options-api-demos/tooltip/multiple/main.vue create mode 100644 vue-options-api-demos/tooltip/overview/main.js create mode 100644 vue-options-api-demos/tooltip/overview/main.vue create mode 100644 vue-options-api-demos/tooltip/overview/styles.css create mode 100644 vue-options-api-demos/tooltip/positioning/main.js create mode 100644 vue-options-api-demos/tooltip/positioning/main.vue create mode 100644 vue-options-api-demos/tooltip/shared/products.json create mode 100644 vue-options-api-demos/tooltip/svg/main.js create mode 100644 vue-options-api-demos/tooltip/svg/main.vue create mode 100644 vue-options-api-demos/tooltip/templates/main.js create mode 100644 vue-options-api-demos/tooltip/templates/main.vue create mode 100644 vue-options-api-demos/treelist/aggregates/data.js create mode 100644 vue-options-api-demos/treelist/aggregates/main.js create mode 100644 vue-options-api-demos/treelist/aggregates/main.vue create mode 100644 vue-options-api-demos/treelist/cells-custom/data.js create mode 100644 vue-options-api-demos/treelist/cells-custom/main.js create mode 100644 vue-options-api-demos/treelist/cells-custom/main.vue create mode 100644 vue-options-api-demos/treelist/column-menu/data.js create mode 100644 vue-options-api-demos/treelist/column-menu/main.js create mode 100644 vue-options-api-demos/treelist/column-menu/main.vue create mode 100644 vue-options-api-demos/treelist/column-virtualization/main.js create mode 100644 vue-options-api-demos/treelist/column-virtualization/main.vue create mode 100644 vue-options-api-demos/treelist/column-virtualization/treelist-data.js create mode 100644 vue-options-api-demos/treelist/column-width-fixed/data.js create mode 100644 vue-options-api-demos/treelist/column-width-fixed/main.js create mode 100644 vue-options-api-demos/treelist/column-width-fixed/main.vue create mode 100644 vue-options-api-demos/treelist/column-width-percentage/data.js create mode 100644 vue-options-api-demos/treelist/column-width-percentage/main.js create mode 100644 vue-options-api-demos/treelist/column-width-percentage/main.vue create mode 100644 vue-options-api-demos/treelist/dragdrop/data.js create mode 100644 vue-options-api-demos/treelist/dragdrop/main.js create mode 100644 vue-options-api-demos/treelist/dragdrop/main.vue create mode 100644 vue-options-api-demos/treelist/editing-external-form/CommandCell.vue create mode 100644 vue-options-api-demos/treelist/editing-external-form/DialogContainer.vue create mode 100644 vue-options-api-demos/treelist/editing-external-form/data.js create mode 100644 vue-options-api-demos/treelist/editing-external-form/main.js create mode 100644 vue-options-api-demos/treelist/editing-external-form/main.vue create mode 100644 vue-options-api-demos/treelist/editing-in-cell/data.js create mode 100644 vue-options-api-demos/treelist/editing-in-cell/main.js create mode 100644 vue-options-api-demos/treelist/editing-in-cell/main.vue create mode 100644 vue-options-api-demos/treelist/editing-inline/CommandCell.vue create mode 100644 vue-options-api-demos/treelist/editing-inline/data.js create mode 100644 vue-options-api-demos/treelist/editing-inline/main.js create mode 100644 vue-options-api-demos/treelist/editing-inline/main.vue create mode 100644 vue-options-api-demos/treelist/editing-row-click/data.js create mode 100644 vue-options-api-demos/treelist/editing-row-click/main.js create mode 100644 vue-options-api-demos/treelist/editing-row-click/main.vue create mode 100644 vue-options-api-demos/treelist/excel/basic/data.js create mode 100644 vue-options-api-demos/treelist/excel/basic/main.js create mode 100644 vue-options-api-demos/treelist/excel/basic/main.vue create mode 100644 vue-options-api-demos/treelist/excel/customization/data.js create mode 100644 vue-options-api-demos/treelist/excel/customization/main.js create mode 100644 vue-options-api-demos/treelist/excel/customization/main.vue create mode 100644 vue-options-api-demos/treelist/excel/single-page/data.js create mode 100644 vue-options-api-demos/treelist/excel/single-page/main.js create mode 100644 vue-options-api-demos/treelist/excel/single-page/main.vue create mode 100644 vue-options-api-demos/treelist/filtering-basic/data.js create mode 100644 vue-options-api-demos/treelist/filtering-basic/main.js create mode 100644 vue-options-api-demos/treelist/filtering-basic/main.vue create mode 100644 vue-options-api-demos/treelist/filtering-custom/DropDownListFilter.vue create mode 100644 vue-options-api-demos/treelist/filtering-custom/data.js create mode 100644 vue-options-api-demos/treelist/filtering-custom/main.js create mode 100644 vue-options-api-demos/treelist/filtering-custom/main.vue create mode 100644 vue-options-api-demos/treelist/flat-data/flat-data.js create mode 100644 vue-options-api-demos/treelist/flat-data/main.js create mode 100644 vue-options-api-demos/treelist/flat-data/main.vue create mode 100644 vue-options-api-demos/treelist/get-started/main.js create mode 100644 vue-options-api-demos/treelist/get-started/main.vue create mode 100644 vue-options-api-demos/treelist/get-started/simple-data.js create mode 100644 vue-options-api-demos/treelist/globalization/data.js create mode 100644 vue-options-api-demos/treelist/globalization/es.json create mode 100644 vue-options-api-demos/treelist/globalization/main.js create mode 100644 vue-options-api-demos/treelist/globalization/main.vue create mode 100644 vue-options-api-demos/treelist/keyboard-navigation/data.js create mode 100644 vue-options-api-demos/treelist/keyboard-navigation/main.js create mode 100644 vue-options-api-demos/treelist/keyboard-navigation/main.vue create mode 100644 vue-options-api-demos/treelist/locked/data.js create mode 100644 vue-options-api-demos/treelist/locked/main.js create mode 100644 vue-options-api-demos/treelist/locked/main.vue create mode 100644 vue-options-api-demos/treelist/multi-column-headers/data.js create mode 100644 vue-options-api-demos/treelist/multi-column-headers/main.js create mode 100644 vue-options-api-demos/treelist/multi-column-headers/main.vue create mode 100644 vue-options-api-demos/treelist/overview/data.js create mode 100644 vue-options-api-demos/treelist/overview/main.js create mode 100644 vue-options-api-demos/treelist/overview/main.vue create mode 100644 vue-options-api-demos/treelist/paging/main.js create mode 100644 vue-options-api-demos/treelist/paging/main.vue create mode 100644 vue-options-api-demos/treelist/paging/treelist-data.js create mode 100644 vue-options-api-demos/treelist/pdf/all-data-expanded/data.js create mode 100644 vue-options-api-demos/treelist/pdf/all-data-expanded/main.js create mode 100644 vue-options-api-demos/treelist/pdf/all-data-expanded/main.vue create mode 100644 vue-options-api-demos/treelist/pdf/basic/data.js create mode 100644 vue-options-api-demos/treelist/pdf/basic/main.js create mode 100644 vue-options-api-demos/treelist/pdf/basic/main.vue create mode 100644 vue-options-api-demos/treelist/pdf/columns-modification/data.js create mode 100644 vue-options-api-demos/treelist/pdf/columns-modification/main.js create mode 100644 vue-options-api-demos/treelist/pdf/columns-modification/main.vue create mode 100644 vue-options-api-demos/treelist/reordering/data.js create mode 100644 vue-options-api-demos/treelist/reordering/main.js create mode 100644 vue-options-api-demos/treelist/reordering/main.vue create mode 100644 vue-options-api-demos/treelist/resizing/data.js create mode 100644 vue-options-api-demos/treelist/resizing/main.js create mode 100644 vue-options-api-demos/treelist/resizing/main.vue create mode 100644 vue-options-api-demos/treelist/selection-basic/data.js create mode 100644 vue-options-api-demos/treelist/selection-basic/main.js create mode 100644 vue-options-api-demos/treelist/selection-basic/main.vue create mode 100644 vue-options-api-demos/treelist/shared/data.js create mode 100644 vue-options-api-demos/treelist/shared/flat-data.js create mode 100644 vue-options-api-demos/treelist/shared/pager.tsx create mode 100644 vue-options-api-demos/treelist/shared/simple-data.js create mode 100644 vue-options-api-demos/treelist/shared/treelist-data.js create mode 100644 vue-options-api-demos/treelist/sorting-basic/data.js create mode 100644 vue-options-api-demos/treelist/sorting-basic/main.js create mode 100644 vue-options-api-demos/treelist/sorting-basic/main.vue create mode 100644 vue-options-api-demos/treelist/sorting-customization/data.js create mode 100644 vue-options-api-demos/treelist/sorting-customization/main.js create mode 100644 vue-options-api-demos/treelist/sorting-customization/main.vue create mode 100644 vue-options-api-demos/treelist/toolbar/data.js create mode 100644 vue-options-api-demos/treelist/toolbar/main.js create mode 100644 vue-options-api-demos/treelist/toolbar/main.vue create mode 100644 vue-options-api-demos/treelist/virtual-scroll/main.js create mode 100644 vue-options-api-demos/treelist/virtual-scroll/main.vue create mode 100644 vue-options-api-demos/treelist/virtual-scroll/treelist-data.js create mode 100644 vue-options-api-demos/treeview/appearance/StyleConfigurator.vue create mode 100644 vue-options-api-demos/treeview/appearance/main.js create mode 100644 vue-options-api-demos/treeview/appearance/main.vue create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.js create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.vue create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-all/main.js create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-all/main.vue create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.js create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.vue create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.js create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.vue create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-helper/main.js create mode 100644 vue-options-api-demos/treeview/checkbox/checkbox-helper/main.vue create mode 100644 vue-options-api-demos/treeview/custom/main.js create mode 100644 vue-options-api-demos/treeview/custom/main.vue create mode 100644 vue-options-api-demos/treeview/data-binding/basic/main.js create mode 100644 vue-options-api-demos/treeview/data-binding/basic/main.vue create mode 100644 vue-options-api-demos/treeview/data-binding/item-fields/main.js create mode 100644 vue-options-api-demos/treeview/data-binding/item-fields/main.vue create mode 100644 vue-options-api-demos/treeview/data-binding/remote-data/main.js create mode 100644 vue-options-api-demos/treeview/data-binding/remote-data/main.vue create mode 100644 vue-options-api-demos/treeview/data-reload/main.js create mode 100644 vue-options-api-demos/treeview/data-reload/main.vue create mode 100644 vue-options-api-demos/treeview/drag/multiple/main.js create mode 100644 vue-options-api-demos/treeview/drag/multiple/main.vue create mode 100644 vue-options-api-demos/treeview/drag/single/main.js create mode 100644 vue-options-api-demos/treeview/drag/single/main.vue create mode 100644 vue-options-api-demos/treeview/events/drag/Logger.vue create mode 100644 vue-options-api-demos/treeview/events/drag/main.js create mode 100644 vue-options-api-demos/treeview/events/drag/main.vue create mode 100644 vue-options-api-demos/treeview/events/select-check/Logger.vue create mode 100644 vue-options-api-demos/treeview/events/select-check/main.js create mode 100644 vue-options-api-demos/treeview/events/select-check/main.vue create mode 100644 vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.js create mode 100644 vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.vue create mode 100644 vue-options-api-demos/treeview/expand/items-expanded-all/main.js create mode 100644 vue-options-api-demos/treeview/expand/items-expanded-all/main.vue create mode 100644 vue-options-api-demos/treeview/expand/items-expanded-directly/main.js create mode 100644 vue-options-api-demos/treeview/expand/items-expanded-directly/main.vue create mode 100644 vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.js create mode 100644 vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.vue create mode 100644 vue-options-api-demos/treeview/get-started/main.js create mode 100644 vue-options-api-demos/treeview/get-started/main.vue create mode 100644 vue-options-api-demos/treeview/keyboard/main.js create mode 100644 vue-options-api-demos/treeview/keyboard/main.vue create mode 100644 vue-options-api-demos/treeview/overview/basic/main.js create mode 100644 vue-options-api-demos/treeview/overview/basic/main.vue create mode 100644 vue-options-api-demos/treeview/select/selection-all/main.js create mode 100644 vue-options-api-demos/treeview/select/selection-all/main.vue create mode 100644 vue-options-api-demos/treeview/select/selection-update-helper-function/main.js create mode 100644 vue-options-api-demos/treeview/select/selection-update-helper-function/main.vue create mode 100644 vue-options-api-demos/treeview/select/selection-update/main.js create mode 100644 vue-options-api-demos/treeview/select/selection-update/main.vue create mode 100644 vue-options-api-demos/upload/action-buttons/main.js create mode 100644 vue-options-api-demos/upload/action-buttons/main.vue create mode 100644 vue-options-api-demos/upload/additional-data/main.js create mode 100644 vue-options-api-demos/upload/additional-data/main.vue create mode 100644 vue-options-api-demos/upload/credentials/main.js create mode 100644 vue-options-api-demos/upload/credentials/main.vue create mode 100644 vue-options-api-demos/upload/custom-complex/CustomList.vue create mode 100644 vue-options-api-demos/upload/custom-complex/main.js create mode 100644 vue-options-api-demos/upload/custom-complex/main.vue create mode 100644 vue-options-api-demos/upload/custom-external-drop-zone/CustomHint.vue create mode 100644 vue-options-api-demos/upload/custom-external-drop-zone/CustomNote.vue create mode 100644 vue-options-api-demos/upload/custom-external-drop-zone/main.js create mode 100644 vue-options-api-demos/upload/custom-external-drop-zone/main.vue create mode 100644 vue-options-api-demos/upload/custom/CustomList.vue create mode 100644 vue-options-api-demos/upload/custom/main.js create mode 100644 vue-options-api-demos/upload/custom/main.vue create mode 100644 vue-options-api-demos/upload/disabled/main.js create mode 100644 vue-options-api-demos/upload/disabled/main.vue create mode 100644 vue-options-api-demos/upload/drag-drop/main.js create mode 100644 vue-options-api-demos/upload/drag-drop/main.vue create mode 100644 vue-options-api-demos/upload/events/main.js create mode 100644 vue-options-api-demos/upload/events/main.vue create mode 100644 vue-options-api-demos/upload/external-drop-zone/main.js create mode 100644 vue-options-api-demos/upload/external-drop-zone/main.vue create mode 100644 vue-options-api-demos/upload/file-processing/automatic/main.js create mode 100644 vue-options-api-demos/upload/file-processing/automatic/main.vue create mode 100644 vue-options-api-demos/upload/file-processing/batch/main.js create mode 100644 vue-options-api-demos/upload/file-processing/batch/main.vue create mode 100644 vue-options-api-demos/upload/file-processing/single/main.js create mode 100644 vue-options-api-demos/upload/file-processing/single/main.vue create mode 100644 vue-options-api-demos/upload/getting-started/main.js create mode 100644 vue-options-api-demos/upload/getting-started/main.vue create mode 100644 vue-options-api-demos/upload/globalization/main.js create mode 100644 vue-options-api-demos/upload/globalization/main.vue create mode 100644 vue-options-api-demos/upload/keyboard/main.js create mode 100644 vue-options-api-demos/upload/keyboard/main.vue create mode 100644 vue-options-api-demos/upload/modes/controlled/main.js create mode 100644 vue-options-api-demos/upload/modes/controlled/main.vue create mode 100644 vue-options-api-demos/upload/modes/uncontrolled/main.js create mode 100644 vue-options-api-demos/upload/modes/uncontrolled/main.vue create mode 100644 vue-options-api-demos/upload/restrictions/custom/main.js create mode 100644 vue-options-api-demos/upload/restrictions/custom/main.vue create mode 100644 vue-options-api-demos/upload/restrictions/extension/main.js create mode 100644 vue-options-api-demos/upload/restrictions/extension/main.vue create mode 100644 vue-options-api-demos/upload/restrictions/max-file-size/main.js create mode 100644 vue-options-api-demos/upload/restrictions/max-file-size/main.vue create mode 100644 vue-options-api-demos/upload/restrictions/min-file-size/main.js create mode 100644 vue-options-api-demos/upload/restrictions/min-file-size/main.vue create mode 100644 vue-options-api-demos/upload/rtl/main.js create mode 100644 vue-options-api-demos/upload/rtl/main.vue diff --git a/vue-options-api-demos/README.md b/vue-options-api-demos/README.md new file mode 100644 index 00000000..d6d34ca9 --- /dev/null +++ b/vue-options-api-demos/README.md @@ -0,0 +1,37 @@ +# Kendo UI for Vue Options API Demos Index + +This folder contains examples for the Options API demos of the Kendo UI for Vue suite. The examples demonstrate how the different Kendo UI for Vue components are used in various scenarios. Below is a list of subfolders, each containing examples for a specific feature: + +- [Animation](./animation/examples) +- [Buttons](./buttons/examples) +- [Charts](./charts/examples) +- [Common](./common/examples) +- [Conversational UI](./conversational-ui/examples) +- [Data Tools](./datatools/examples) +- [Date Inputs](./dateinputs/examples) +- [Dialogs](./dialogs/examples) +- [Dropdowns](./dropdowns/examples) +- [Editor](./editor/examples) +- [Excel](./excel/examples) +- [Form](./form/examples) +- [Gauges](./gauges/examples) +- [Grid](./grid/examples) +- [Indicators](./indicators/examples) +- [Inputs](./inputs/examples) +- [Internationalization (Intl)](./intl/examples) +- [Labels](./labels/examples) +- [Layout](./layout/examples) +- [ListBox](./listbox/examples) +- [ListView](./listview/examples) +- [Notification](./notification/examples) +- [PDF](./pdf/examples) +- [Popup](./popup/examples) +- [Progress Bars](./progressbars/examples) +- [Scheduler](./scheduler/examples) +- [ScrollView](./scrollview/examples) +- [Tooltip](./tooltip/examples) +- [TreeList](./treelist/examples) +- [TreeView](./treeview/examples) +- [Upload](./upload/examples) + +Each subfolder contains example implementations and usage scenarios for the respective feature, demonstrating the usage of the Kendo UI for Vue suite in the context of Options API. diff --git a/vue-options-api-demos/animation/animations/entering/main.js b/vue-options-api-demos/animation/animations/entering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/animations/entering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/animations/entering/main.vue b/vue-options-api-demos/animation/animations/entering/main.vue new file mode 100644 index 00000000..82b64216 --- /dev/null +++ b/vue-options-api-demos/animation/animations/entering/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/animation/animations/entering/styles.css b/vue-options-api-demos/animation/animations/entering/styles.css new file mode 100644 index 00000000..98e1d3c2 --- /dev/null +++ b/vue-options-api-demos/animation/animations/entering/styles.css @@ -0,0 +1,18 @@ +.custom-animation-enter { + opacity: 0; +} +.custom-animation-enter-active { + transition: opacity .5s; +} + +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/animations/exiting/main.js b/vue-options-api-demos/animation/animations/exiting/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/animations/exiting/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/animations/exiting/main.vue b/vue-options-api-demos/animation/animations/exiting/main.vue new file mode 100644 index 00000000..5ff85f08 --- /dev/null +++ b/vue-options-api-demos/animation/animations/exiting/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/animation/animations/exiting/styles.css b/vue-options-api-demos/animation/animations/exiting/styles.css new file mode 100644 index 00000000..9c310fed --- /dev/null +++ b/vue-options-api-demos/animation/animations/exiting/styles.css @@ -0,0 +1,22 @@ +.custom-animation-exit { + opacity: 0; +} +.custom-animation-exit-active { + transition: opacity .5s; +} + +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} + +.child{ + opacity: 100; +} diff --git a/vue-options-api-demos/animation/api/expand-props/main.js b/vue-options-api-demos/animation/api/expand-props/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/api/expand-props/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/api/expand-props/main.vue b/vue-options-api-demos/animation/api/expand-props/main.vue new file mode 100644 index 00000000..3de72056 --- /dev/null +++ b/vue-options-api-demos/animation/api/expand-props/main.vue @@ -0,0 +1,77 @@ + + diff --git a/vue-options-api-demos/animation/api/expand-props/styles.css b/vue-options-api-demos/animation/api/expand-props/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/api/expand-props/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/api/fade-props/main.js b/vue-options-api-demos/animation/api/fade-props/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/api/fade-props/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/api/fade-props/main.vue b/vue-options-api-demos/animation/api/fade-props/main.vue new file mode 100644 index 00000000..599cb40b --- /dev/null +++ b/vue-options-api-demos/animation/api/fade-props/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/animation/api/fade-props/styles.css b/vue-options-api-demos/animation/api/fade-props/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/api/fade-props/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/api/push-props/main.js b/vue-options-api-demos/animation/api/push-props/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/api/push-props/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/api/push-props/main.vue b/vue-options-api-demos/animation/api/push-props/main.vue new file mode 100644 index 00000000..70dba014 --- /dev/null +++ b/vue-options-api-demos/animation/api/push-props/main.vue @@ -0,0 +1,77 @@ + + diff --git a/vue-options-api-demos/animation/api/push-props/styles.css b/vue-options-api-demos/animation/api/push-props/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/api/push-props/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/api/reveal-props/main.js b/vue-options-api-demos/animation/api/reveal-props/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/api/reveal-props/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/api/reveal-props/main.vue b/vue-options-api-demos/animation/api/reveal-props/main.vue new file mode 100644 index 00000000..d2e33cad --- /dev/null +++ b/vue-options-api-demos/animation/api/reveal-props/main.vue @@ -0,0 +1,77 @@ + + diff --git a/vue-options-api-demos/animation/api/reveal-props/styles.css b/vue-options-api-demos/animation/api/reveal-props/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/api/reveal-props/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/api/slide-props/main.js b/vue-options-api-demos/animation/api/slide-props/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/api/slide-props/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/api/slide-props/main.vue b/vue-options-api-demos/animation/api/slide-props/main.vue new file mode 100644 index 00000000..9cd2cf16 --- /dev/null +++ b/vue-options-api-demos/animation/api/slide-props/main.vue @@ -0,0 +1,79 @@ + + diff --git a/vue-options-api-demos/animation/api/slide-props/styles.css b/vue-options-api-demos/animation/api/slide-props/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/api/slide-props/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/api/zoom-props/main.js b/vue-options-api-demos/animation/api/zoom-props/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/api/zoom-props/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/api/zoom-props/main.vue b/vue-options-api-demos/animation/api/zoom-props/main.vue new file mode 100644 index 00000000..6e26f686 --- /dev/null +++ b/vue-options-api-demos/animation/api/zoom-props/main.vue @@ -0,0 +1,65 @@ + + diff --git a/vue-options-api-demos/animation/api/zoom-props/styles.css b/vue-options-api-demos/animation/api/zoom-props/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/api/zoom-props/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/appearance/child/main.js b/vue-options-api-demos/animation/appearance/child/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/appearance/child/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/appearance/child/main.vue b/vue-options-api-demos/animation/appearance/child/main.vue new file mode 100644 index 00000000..5045f95e --- /dev/null +++ b/vue-options-api-demos/animation/appearance/child/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/animation/appearance/child/styles.css b/vue-options-api-demos/animation/appearance/child/styles.css new file mode 100644 index 00000000..34b7de96 --- /dev/null +++ b/vue-options-api-demos/animation/appearance/child/styles.css @@ -0,0 +1,18 @@ +.child { + border-width: 1px; + border-style: solid; + border-radius: 5px +} + +.content { +width: 100px; +padding: 10px; +font-size: 13px; +font-family: Helvetica, Arial, sans-serif; +letter-spacing: 1px; +text-align: center; +border: 1px solid rgba(0,0,0,.05); +} +.example { +display: flex; +} diff --git a/vue-options-api-demos/animation/appearance/default/main.js b/vue-options-api-demos/animation/appearance/default/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/appearance/default/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/appearance/default/main.vue b/vue-options-api-demos/animation/appearance/default/main.vue new file mode 100644 index 00000000..4270003f --- /dev/null +++ b/vue-options-api-demos/animation/appearance/default/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/animation/appearance/default/styles.css b/vue-options-api-demos/animation/appearance/default/styles.css new file mode 100644 index 00000000..507f7c84 --- /dev/null +++ b/vue-options-api-demos/animation/appearance/default/styles.css @@ -0,0 +1,19 @@ +.k-animation-container { + background-color: lightgray; +} +.k-animation-container > .k-child-animation-container { + color: lightgray; + background-color: #ff6757; +} + +.content { + width: 100px; + padding: 10px; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; +} +.example { + display: flex; +} diff --git a/vue-options-api-demos/animation/appearance/parent/main.js b/vue-options-api-demos/animation/appearance/parent/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/appearance/parent/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/appearance/parent/main.vue b/vue-options-api-demos/animation/appearance/parent/main.vue new file mode 100644 index 00000000..440a0fe3 --- /dev/null +++ b/vue-options-api-demos/animation/appearance/parent/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/animation/appearance/parent/styles.css b/vue-options-api-demos/animation/appearance/parent/styles.css new file mode 100644 index 00000000..59da9d49 --- /dev/null +++ b/vue-options-api-demos/animation/appearance/parent/styles.css @@ -0,0 +1,19 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} +.example { + display: flex; +} + +.wrapper { + border-color: transparent; + transition: border-color 1s ease-in-out; +} diff --git a/vue-options-api-demos/animation/configuration/main.js b/vue-options-api-demos/animation/configuration/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/configuration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/configuration/main.vue b/vue-options-api-demos/animation/configuration/main.vue new file mode 100644 index 00000000..adee4e72 --- /dev/null +++ b/vue-options-api-demos/animation/configuration/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/animation/configuration/styles.css b/vue-options-api-demos/animation/configuration/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/configuration/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/direction/expand/main.js b/vue-options-api-demos/animation/direction/expand/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/direction/expand/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/direction/expand/main.vue b/vue-options-api-demos/animation/direction/expand/main.vue new file mode 100644 index 00000000..3de72056 --- /dev/null +++ b/vue-options-api-demos/animation/direction/expand/main.vue @@ -0,0 +1,77 @@ + + diff --git a/vue-options-api-demos/animation/direction/expand/styles.css b/vue-options-api-demos/animation/direction/expand/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/direction/expand/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/direction/fade/main.js b/vue-options-api-demos/animation/direction/fade/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/direction/fade/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/direction/fade/main.vue b/vue-options-api-demos/animation/direction/fade/main.vue new file mode 100644 index 00000000..6e042016 --- /dev/null +++ b/vue-options-api-demos/animation/direction/fade/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/animation/direction/fade/styles.css b/vue-options-api-demos/animation/direction/fade/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/direction/fade/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/direction/push/main.js b/vue-options-api-demos/animation/direction/push/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/direction/push/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/direction/push/main.vue b/vue-options-api-demos/animation/direction/push/main.vue new file mode 100644 index 00000000..70dba014 --- /dev/null +++ b/vue-options-api-demos/animation/direction/push/main.vue @@ -0,0 +1,77 @@ + + diff --git a/vue-options-api-demos/animation/direction/push/styles.css b/vue-options-api-demos/animation/direction/push/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/direction/push/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/direction/reveal/main.js b/vue-options-api-demos/animation/direction/reveal/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/direction/reveal/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/direction/reveal/main.vue b/vue-options-api-demos/animation/direction/reveal/main.vue new file mode 100644 index 00000000..cd993d0e --- /dev/null +++ b/vue-options-api-demos/animation/direction/reveal/main.vue @@ -0,0 +1,77 @@ + + diff --git a/vue-options-api-demos/animation/direction/reveal/styles.css b/vue-options-api-demos/animation/direction/reveal/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/direction/reveal/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/direction/slide/main.js b/vue-options-api-demos/animation/direction/slide/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/direction/slide/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/direction/slide/main.vue b/vue-options-api-demos/animation/direction/slide/main.vue new file mode 100644 index 00000000..9cd2cf16 --- /dev/null +++ b/vue-options-api-demos/animation/direction/slide/main.vue @@ -0,0 +1,79 @@ + + diff --git a/vue-options-api-demos/animation/direction/slide/styles.css b/vue-options-api-demos/animation/direction/slide/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/direction/slide/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/direction/zoom/main.js b/vue-options-api-demos/animation/direction/zoom/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/direction/zoom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/direction/zoom/main.vue b/vue-options-api-demos/animation/direction/zoom/main.vue new file mode 100644 index 00000000..6e26f686 --- /dev/null +++ b/vue-options-api-demos/animation/direction/zoom/main.vue @@ -0,0 +1,65 @@ + + diff --git a/vue-options-api-demos/animation/direction/zoom/styles.css b/vue-options-api-demos/animation/direction/zoom/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/direction/zoom/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/disabled/main.js b/vue-options-api-demos/animation/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/disabled/main.vue b/vue-options-api-demos/animation/disabled/main.vue new file mode 100644 index 00000000..1962ee12 --- /dev/null +++ b/vue-options-api-demos/animation/disabled/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/animation/disabled/styles.css b/vue-options-api-demos/animation/disabled/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/disabled/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/duration/main.js b/vue-options-api-demos/animation/duration/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/duration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/duration/main.vue b/vue-options-api-demos/animation/duration/main.vue new file mode 100644 index 00000000..516f7e2d --- /dev/null +++ b/vue-options-api-demos/animation/duration/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/animation/duration/styles.css b/vue-options-api-demos/animation/duration/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/duration/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/overview/main.js b/vue-options-api-demos/animation/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/overview/main.vue b/vue-options-api-demos/animation/overview/main.vue new file mode 100644 index 00000000..6f12d83b --- /dev/null +++ b/vue-options-api-demos/animation/overview/main.vue @@ -0,0 +1,103 @@ + + diff --git a/vue-options-api-demos/animation/overview/styles.css b/vue-options-api-demos/animation/overview/styles.css new file mode 100644 index 00000000..d1458056 --- /dev/null +++ b/vue-options-api-demos/animation/overview/styles.css @@ -0,0 +1,15 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} +.k-radio-label { + line-height: 1.2; + margin-bottom: .5rem; +} diff --git a/vue-options-api-demos/animation/types/expand/main.js b/vue-options-api-demos/animation/types/expand/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/types/expand/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/types/expand/main.vue b/vue-options-api-demos/animation/types/expand/main.vue new file mode 100644 index 00000000..95ed4173 --- /dev/null +++ b/vue-options-api-demos/animation/types/expand/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/animation/types/expand/styles.css b/vue-options-api-demos/animation/types/expand/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/types/expand/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/types/fade/main.js b/vue-options-api-demos/animation/types/fade/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/types/fade/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/types/fade/main.vue b/vue-options-api-demos/animation/types/fade/main.vue new file mode 100644 index 00000000..b4f0e782 --- /dev/null +++ b/vue-options-api-demos/animation/types/fade/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/animation/types/fade/styles.css b/vue-options-api-demos/animation/types/fade/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/types/fade/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/types/push/main.js b/vue-options-api-demos/animation/types/push/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/types/push/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/types/push/main.vue b/vue-options-api-demos/animation/types/push/main.vue new file mode 100644 index 00000000..97237540 --- /dev/null +++ b/vue-options-api-demos/animation/types/push/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/animation/types/push/styles.css b/vue-options-api-demos/animation/types/push/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/types/push/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/animation/types/reveal/main.js b/vue-options-api-demos/animation/types/reveal/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/types/reveal/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/types/reveal/main.vue b/vue-options-api-demos/animation/types/reveal/main.vue new file mode 100644 index 00000000..e820a502 --- /dev/null +++ b/vue-options-api-demos/animation/types/reveal/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/animation/types/reveal/styles.css b/vue-options-api-demos/animation/types/reveal/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/types/reveal/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/types/slide/main.js b/vue-options-api-demos/animation/types/slide/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/types/slide/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/types/slide/main.vue b/vue-options-api-demos/animation/types/slide/main.vue new file mode 100644 index 00000000..50d222bd --- /dev/null +++ b/vue-options-api-demos/animation/types/slide/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/animation/types/slide/styles.css b/vue-options-api-demos/animation/types/slide/styles.css new file mode 100644 index 00000000..2374dfbb --- /dev/null +++ b/vue-options-api-demos/animation/types/slide/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/animation/types/zoom/main.js b/vue-options-api-demos/animation/types/zoom/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/animation/types/zoom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/animation/types/zoom/main.vue b/vue-options-api-demos/animation/types/zoom/main.vue new file mode 100644 index 00000000..4b03477e --- /dev/null +++ b/vue-options-api-demos/animation/types/zoom/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/animation/types/zoom/styles.css b/vue-options-api-demos/animation/types/zoom/styles.css new file mode 100644 index 00000000..4816d5dd --- /dev/null +++ b/vue-options-api-demos/animation/types/zoom/styles.css @@ -0,0 +1,11 @@ +.content { + width: 100px; + padding: 10px; + color: #787878; + background-color: #fcf7f8; + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + letter-spacing: 1px; + text-align: center; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/buttons/button/appearance/configurator/ButtonStyleConfigurator.vue b/vue-options-api-demos/buttons/button/appearance/configurator/ButtonStyleConfigurator.vue new file mode 100644 index 00000000..c16a6018 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/configurator/ButtonStyleConfigurator.vue @@ -0,0 +1,189 @@ + + + diff --git a/vue-options-api-demos/buttons/button/appearance/configurator/main.js b/vue-options-api-demos/buttons/button/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/appearance/configurator/main.vue b/vue-options-api-demos/buttons/button/appearance/configurator/main.vue new file mode 100644 index 00000000..d23d9c6c --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/configurator/main.vue @@ -0,0 +1,63 @@ + + + diff --git a/vue-options-api-demos/buttons/button/appearance/fill-mode/main.js b/vue-options-api-demos/buttons/button/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/appearance/fill-mode/main.vue b/vue-options-api-demos/buttons/button/appearance/fill-mode/main.vue new file mode 100644 index 00000000..2613a481 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/fill-mode/main.vue @@ -0,0 +1,34 @@ + + + + diff --git a/vue-options-api-demos/buttons/button/appearance/rounded/main.js b/vue-options-api-demos/buttons/button/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/appearance/rounded/main.vue b/vue-options-api-demos/buttons/button/appearance/rounded/main.vue new file mode 100644 index 00000000..af8173de --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/rounded/main.vue @@ -0,0 +1,44 @@ + + + + diff --git a/vue-options-api-demos/buttons/button/appearance/shape/main.js b/vue-options-api-demos/buttons/button/appearance/shape/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/shape/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/appearance/shape/main.vue b/vue-options-api-demos/buttons/button/appearance/shape/main.vue new file mode 100644 index 00000000..9629f9f2 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/shape/main.vue @@ -0,0 +1,25 @@ + + + + diff --git a/vue-options-api-demos/buttons/button/appearance/size/main.js b/vue-options-api-demos/buttons/button/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/appearance/size/main.vue b/vue-options-api-demos/buttons/button/appearance/size/main.vue new file mode 100644 index 00000000..8283ceba --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/size/main.vue @@ -0,0 +1,34 @@ + + + + diff --git a/vue-options-api-demos/buttons/button/appearance/theme-colors/main.js b/vue-options-api-demos/buttons/button/appearance/theme-colors/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/theme-colors/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/appearance/theme-colors/main.vue b/vue-options-api-demos/buttons/button/appearance/theme-colors/main.vue new file mode 100644 index 00000000..1c0a4400 --- /dev/null +++ b/vue-options-api-demos/buttons/button/appearance/theme-colors/main.vue @@ -0,0 +1,64 @@ + + + + diff --git a/vue-options-api-demos/buttons/button/basic/main.js b/vue-options-api-demos/buttons/button/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/basic/main.vue b/vue-options-api-demos/buttons/button/basic/main.vue new file mode 100644 index 00000000..19f143b9 --- /dev/null +++ b/vue-options-api-demos/buttons/button/basic/main.vue @@ -0,0 +1,195 @@ + + + diff --git a/vue-options-api-demos/buttons/button/disabled/main.js b/vue-options-api-demos/buttons/button/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/disabled/main.vue b/vue-options-api-demos/buttons/button/disabled/main.vue new file mode 100644 index 00000000..34bebc3a --- /dev/null +++ b/vue-options-api-demos/buttons/button/disabled/main.vue @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/button/events/main.js b/vue-options-api-demos/buttons/button/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/events/main.vue b/vue-options-api-demos/buttons/button/events/main.vue new file mode 100644 index 00000000..32d89fe1 --- /dev/null +++ b/vue-options-api-demos/buttons/button/events/main.vue @@ -0,0 +1,38 @@ + + + diff --git a/vue-options-api-demos/buttons/button/icon/main.js b/vue-options-api-demos/buttons/button/icon/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/icon/main.vue b/vue-options-api-demos/buttons/button/icon/main.vue new file mode 100644 index 00000000..83fd5cc7 --- /dev/null +++ b/vue-options-api-demos/buttons/button/icon/main.vue @@ -0,0 +1,30 @@ + + + diff --git a/vue-options-api-demos/buttons/button/primary/main.js b/vue-options-api-demos/buttons/button/primary/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/primary/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/primary/main.vue b/vue-options-api-demos/buttons/button/primary/main.vue new file mode 100644 index 00000000..304639c7 --- /dev/null +++ b/vue-options-api-demos/buttons/button/primary/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/buttons/button/toggleable/main.js b/vue-options-api-demos/buttons/button/toggleable/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/button/toggleable/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/button/toggleable/main.vue b/vue-options-api-demos/buttons/button/toggleable/main.vue new file mode 100644 index 00000000..04a4c970 --- /dev/null +++ b/vue-options-api-demos/buttons/button/toggleable/main.vue @@ -0,0 +1,18 @@ + + diff --git a/vue-options-api-demos/buttons/buttongroup/basic/main.js b/vue-options-api-demos/buttons/buttongroup/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/buttongroup/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/buttongroup/basic/main.vue b/vue-options-api-demos/buttons/buttongroup/basic/main.vue new file mode 100644 index 00000000..06b2e7a5 --- /dev/null +++ b/vue-options-api-demos/buttons/buttongroup/basic/main.vue @@ -0,0 +1,58 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/buttongroup/disabled/main.js b/vue-options-api-demos/buttons/buttongroup/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/buttongroup/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/buttongroup/disabled/main.vue b/vue-options-api-demos/buttons/buttongroup/disabled/main.vue new file mode 100644 index 00000000..69e6c48c --- /dev/null +++ b/vue-options-api-demos/buttons/buttongroup/disabled/main.vue @@ -0,0 +1,31 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/chip/appearance/configurator/ChipStyleConfigurator.vue b/vue-options-api-demos/buttons/chip/appearance/configurator/ChipStyleConfigurator.vue new file mode 100644 index 00000000..0494ee76 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/configurator/ChipStyleConfigurator.vue @@ -0,0 +1,159 @@ + + + diff --git a/vue-options-api-demos/buttons/chip/appearance/configurator/main.js b/vue-options-api-demos/buttons/chip/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/appearance/configurator/main.vue b/vue-options-api-demos/buttons/chip/appearance/configurator/main.vue new file mode 100644 index 00000000..8add2daf --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/configurator/main.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/vue-options-api-demos/buttons/chip/appearance/fill-mode/main.js b/vue-options-api-demos/buttons/chip/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/appearance/fill-mode/main.vue b/vue-options-api-demos/buttons/chip/appearance/fill-mode/main.vue new file mode 100644 index 00000000..92137d9d --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/fill-mode/main.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/vue-options-api-demos/buttons/chip/appearance/rounded/main.js b/vue-options-api-demos/buttons/chip/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/appearance/rounded/main.vue b/vue-options-api-demos/buttons/chip/appearance/rounded/main.vue new file mode 100644 index 00000000..bbd84235 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/rounded/main.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/vue-options-api-demos/buttons/chip/appearance/size/main.js b/vue-options-api-demos/buttons/chip/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/appearance/size/main.vue b/vue-options-api-demos/buttons/chip/appearance/size/main.vue new file mode 100644 index 00000000..68e11f88 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/size/main.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/vue-options-api-demos/buttons/chip/appearance/theme-colors/main.js b/vue-options-api-demos/buttons/chip/appearance/theme-colors/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/theme-colors/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/appearance/theme-colors/main.vue b/vue-options-api-demos/buttons/chip/appearance/theme-colors/main.vue new file mode 100644 index 00000000..8d3e19c0 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/appearance/theme-colors/main.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/vue-options-api-demos/buttons/chip/avatar/CustomChip.vue b/vue-options-api-demos/buttons/chip/avatar/CustomChip.vue new file mode 100644 index 00000000..b83524cb --- /dev/null +++ b/vue-options-api-demos/buttons/chip/avatar/CustomChip.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/chip/avatar/main.js b/vue-options-api-demos/buttons/chip/avatar/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/avatar/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/avatar/main.vue b/vue-options-api-demos/buttons/chip/avatar/main.vue new file mode 100644 index 00000000..e9abf072 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/avatar/main.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/buttons/chip/customization/CustomChip.vue b/vue-options-api-demos/buttons/chip/customization/CustomChip.vue new file mode 100644 index 00000000..11c90b2f --- /dev/null +++ b/vue-options-api-demos/buttons/chip/customization/CustomChip.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/chip/customization/main.js b/vue-options-api-demos/buttons/chip/customization/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/customization/main.vue b/vue-options-api-demos/buttons/chip/customization/main.vue new file mode 100644 index 00000000..21d2f236 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/customization/main.vue @@ -0,0 +1,74 @@ + + diff --git a/vue-options-api-demos/buttons/chip/disabled/CustomChip.vue b/vue-options-api-demos/buttons/chip/disabled/CustomChip.vue new file mode 100644 index 00000000..36a97677 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/disabled/CustomChip.vue @@ -0,0 +1,24 @@ + + diff --git a/vue-options-api-demos/buttons/chip/disabled/main.js b/vue-options-api-demos/buttons/chip/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/disabled/main.vue b/vue-options-api-demos/buttons/chip/disabled/main.vue new file mode 100644 index 00000000..e2cb3c18 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/disabled/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/buttons/chip/getting-started/main.js b/vue-options-api-demos/buttons/chip/getting-started/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/getting-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/getting-started/main.vue b/vue-options-api-demos/buttons/chip/getting-started/main.vue new file mode 100644 index 00000000..9c5cfaae --- /dev/null +++ b/vue-options-api-demos/buttons/chip/getting-started/main.vue @@ -0,0 +1,376 @@ + + + diff --git a/vue-options-api-demos/buttons/chip/remove-icon/CustomChip.vue b/vue-options-api-demos/buttons/chip/remove-icon/CustomChip.vue new file mode 100644 index 00000000..4ced326a --- /dev/null +++ b/vue-options-api-demos/buttons/chip/remove-icon/CustomChip.vue @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/chip/remove-icon/main.js b/vue-options-api-demos/buttons/chip/remove-icon/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/remove-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/remove-icon/main.vue b/vue-options-api-demos/buttons/chip/remove-icon/main.vue new file mode 100644 index 00000000..7ae21e5a --- /dev/null +++ b/vue-options-api-demos/buttons/chip/remove-icon/main.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/buttons/chip/remove/CustomChip.vue b/vue-options-api-demos/buttons/chip/remove/CustomChip.vue new file mode 100644 index 00000000..1fb8ac88 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/remove/CustomChip.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/buttons/chip/remove/main.js b/vue-options-api-demos/buttons/chip/remove/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/remove/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/remove/main.vue b/vue-options-api-demos/buttons/chip/remove/main.vue new file mode 100644 index 00000000..39a276d1 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/remove/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/buttons/chip/select-icon/CustomChip.vue b/vue-options-api-demos/buttons/chip/select-icon/CustomChip.vue new file mode 100644 index 00000000..ce0f6e97 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/select-icon/CustomChip.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/chip/select-icon/main.js b/vue-options-api-demos/buttons/chip/select-icon/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/select-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/select-icon/main.vue b/vue-options-api-demos/buttons/chip/select-icon/main.vue new file mode 100644 index 00000000..a20254f5 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/select-icon/main.vue @@ -0,0 +1,68 @@ + + diff --git a/vue-options-api-demos/buttons/chip/types/CustomChip.vue b/vue-options-api-demos/buttons/chip/types/CustomChip.vue new file mode 100644 index 00000000..32ee3689 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/types/CustomChip.vue @@ -0,0 +1,32 @@ + + + diff --git a/vue-options-api-demos/buttons/chip/types/main.js b/vue-options-api-demos/buttons/chip/types/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chip/types/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chip/types/main.vue b/vue-options-api-demos/buttons/chip/types/main.vue new file mode 100644 index 00000000..37b0feef --- /dev/null +++ b/vue-options-api-demos/buttons/chip/types/main.vue @@ -0,0 +1,67 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/chiplist/appearance/main.js b/vue-options-api-demos/buttons/chiplist/appearance/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/appearance/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/appearance/main.vue b/vue-options-api-demos/buttons/chiplist/appearance/main.vue new file mode 100644 index 00000000..e9c0eefa --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/appearance/main.vue @@ -0,0 +1,54 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/controlled/CustomChip.vue b/vue-options-api-demos/buttons/chiplist/controlled/CustomChip.vue new file mode 100644 index 00000000..2afeceb1 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/controlled/CustomChip.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/controlled/main.js b/vue-options-api-demos/buttons/chiplist/controlled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/controlled/main.vue b/vue-options-api-demos/buttons/chiplist/controlled/main.vue new file mode 100644 index 00000000..796fbc8d --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/controlled/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/customization/CustomChip.vue b/vue-options-api-demos/buttons/chiplist/customization/CustomChip.vue new file mode 100644 index 00000000..c01160eb --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/customization/CustomChip.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/customization/main.js b/vue-options-api-demos/buttons/chiplist/customization/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/customization/main.vue b/vue-options-api-demos/buttons/chiplist/customization/main.vue new file mode 100644 index 00000000..657a2a85 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/customization/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/data-binding/main.js b/vue-options-api-demos/buttons/chiplist/data-binding/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/data-binding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/data-binding/main.vue b/vue-options-api-demos/buttons/chiplist/data-binding/main.vue new file mode 100644 index 00000000..cd8016f9 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/data-binding/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/disabled/CustomChip.vue b/vue-options-api-demos/buttons/chiplist/disabled/CustomChip.vue new file mode 100644 index 00000000..f700955a --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/disabled/CustomChip.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/disabled/main.js b/vue-options-api-demos/buttons/chiplist/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/disabled/main.vue b/vue-options-api-demos/buttons/chiplist/disabled/main.vue new file mode 100644 index 00000000..06f5b538 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/disabled/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/getting-started/main.js b/vue-options-api-demos/buttons/chiplist/getting-started/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/getting-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/getting-started/main.vue b/vue-options-api-demos/buttons/chiplist/getting-started/main.vue new file mode 100644 index 00000000..4bfcb961 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/getting-started/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/keyboard/CustomChip.vue b/vue-options-api-demos/buttons/chiplist/keyboard/CustomChip.vue new file mode 100644 index 00000000..c9e8239c --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/keyboard/CustomChip.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/keyboard/main.js b/vue-options-api-demos/buttons/chiplist/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/keyboard/main.vue b/vue-options-api-demos/buttons/chiplist/keyboard/main.vue new file mode 100644 index 00000000..e566ba61 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/keyboard/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/selection/multiple/main.js b/vue-options-api-demos/buttons/chiplist/selection/multiple/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/selection/multiple/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/selection/multiple/main.vue b/vue-options-api-demos/buttons/chiplist/selection/multiple/main.vue new file mode 100644 index 00000000..8b384e49 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/selection/multiple/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/selection/none/main.js b/vue-options-api-demos/buttons/chiplist/selection/none/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/selection/none/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/selection/none/main.vue b/vue-options-api-demos/buttons/chiplist/selection/none/main.vue new file mode 100644 index 00000000..416d1398 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/selection/none/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/buttons/chiplist/selection/single/main.js b/vue-options-api-demos/buttons/chiplist/selection/single/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/selection/single/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/chiplist/selection/single/main.vue b/vue-options-api-demos/buttons/chiplist/selection/single/main.vue new file mode 100644 index 00000000..eace1f85 --- /dev/null +++ b/vue-options-api-demos/buttons/chiplist/selection/single/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/ButtonsStyleConfigurator.vue b/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/ButtonsStyleConfigurator.vue new file mode 100644 index 00000000..17dd70df --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/ButtonsStyleConfigurator.vue @@ -0,0 +1,189 @@ + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.js b/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.vue b/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.vue new file mode 100644 index 00000000..3a56d99a --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/configurator/main.vue @@ -0,0 +1,98 @@ + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.js b/vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.vue b/vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.vue new file mode 100644 index 00000000..e435f41f --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/fill-mode/main.vue @@ -0,0 +1,77 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.js b/vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.vue b/vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.vue new file mode 100644 index 00000000..cf73a4b1 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/rounded/main.vue @@ -0,0 +1,99 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.js b/vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.vue b/vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.vue new file mode 100644 index 00000000..3b10f8f2 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/shape/main.vue @@ -0,0 +1,63 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.js b/vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.vue b/vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.vue new file mode 100644 index 00000000..6d941b03 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/size/main.vue @@ -0,0 +1,74 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.js b/vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.vue b/vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.vue new file mode 100644 index 00000000..af68a223 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/appearance/theme-colors/main.vue @@ -0,0 +1,127 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/customization/items/main.js b/vue-options-api-demos/buttons/dropdownbutton/customization/items/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/customization/items/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/customization/items/main.vue b/vue-options-api-demos/buttons/dropdownbutton/customization/items/main.vue new file mode 100644 index 00000000..2a6dd363 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/customization/items/main.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.js b/vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.vue b/vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.vue new file mode 100644 index 00000000..248ab9b7 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/customization/popup/main.vue @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.js b/vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.vue b/vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.vue new file mode 100644 index 00000000..50e2bfd7 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/data-binding/objects/main.vue @@ -0,0 +1,50 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.js b/vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.vue b/vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.vue new file mode 100644 index 00000000..b5e6b650 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/data-binding/strings/main.vue @@ -0,0 +1,49 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/disabled/main.js b/vue-options-api-demos/buttons/dropdownbutton/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/disabled/main.vue b/vue-options-api-demos/buttons/dropdownbutton/disabled/main.vue new file mode 100644 index 00000000..e1b50920 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/disabled/main.vue @@ -0,0 +1,22 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/events/Logger.vue b/vue-options-api-demos/buttons/dropdownbutton/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/dropdownbutton/events/main.js b/vue-options-api-demos/buttons/dropdownbutton/events/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/buttons/dropdownbutton/events/main.vue b/vue-options-api-demos/buttons/dropdownbutton/events/main.vue new file mode 100644 index 00000000..bba3f0ab --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/events/main.vue @@ -0,0 +1,87 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/icons/main.js b/vue-options-api-demos/buttons/dropdownbutton/icons/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/icons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/icons/main.vue b/vue-options-api-demos/buttons/dropdownbutton/icons/main.vue new file mode 100644 index 00000000..59a2fb9c --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/icons/main.vue @@ -0,0 +1,88 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/keyboard/main.js b/vue-options-api-demos/buttons/dropdownbutton/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/keyboard/main.vue b/vue-options-api-demos/buttons/dropdownbutton/keyboard/main.vue new file mode 100644 index 00000000..fea78d8d --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/keyboard/main.vue @@ -0,0 +1,49 @@ + + + + diff --git a/vue-options-api-demos/buttons/dropdownbutton/overview/main.js b/vue-options-api-demos/buttons/dropdownbutton/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/dropdownbutton/overview/main.vue b/vue-options-api-demos/buttons/dropdownbutton/overview/main.vue new file mode 100644 index 00000000..96a317f7 --- /dev/null +++ b/vue-options-api-demos/buttons/dropdownbutton/overview/main.vue @@ -0,0 +1,52 @@ + + + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.js b/vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.vue new file mode 100644 index 00000000..d6db7e3e --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/align-offset/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/FloatingActionButtonConfigurator.vue b/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/FloatingActionButtonConfigurator.vue new file mode 100644 index 00000000..86374a2d --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/FloatingActionButtonConfigurator.vue @@ -0,0 +1,139 @@ + + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.js b/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.vue new file mode 100644 index 00000000..c7c23c2e --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/configurator/main.vue @@ -0,0 +1,53 @@ + + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.js b/vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.vue new file mode 100644 index 00000000..8eb82ee6 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/rounded/main.vue @@ -0,0 +1,57 @@ + + + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.js b/vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.vue new file mode 100644 index 00000000..c5d357c3 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/size/main.vue @@ -0,0 +1,50 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.js b/vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.vue new file mode 100644 index 00000000..4aa6f3af --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/appearance/theme/main.vue @@ -0,0 +1,56 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/floatingactionbutton/content-types/main.js b/vue-options-api-demos/buttons/floatingactionbutton/content-types/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/content-types/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/content-types/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/content-types/main.vue new file mode 100644 index 00000000..1bcccde8 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/content-types/main.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/floatingactionbutton/disabled/main.js b/vue-options-api-demos/buttons/floatingactionbutton/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/disabled/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/disabled/main.vue new file mode 100644 index 00000000..30db4164 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/disabled/main.vue @@ -0,0 +1,35 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/floatingactionbutton/events/main.js b/vue-options-api-demos/buttons/floatingactionbutton/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/events/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/events/main.vue new file mode 100644 index 00000000..827106ac --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/events/main.vue @@ -0,0 +1,53 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/icons/main.js b/vue-options-api-demos/buttons/floatingactionbutton/icons/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/icons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/icons/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/icons/main.vue new file mode 100644 index 00000000..74930bdb --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/icons/main.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/CustomItem.vue b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/CustomItem.vue new file mode 100644 index 00000000..92cb27df --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/CustomItem.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.js b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.vue new file mode 100644 index 00000000..68b586d2 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/custom-rendering/main.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.js b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.vue new file mode 100644 index 00000000..97684411 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/custom/popup/main.vue @@ -0,0 +1,45 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.js b/vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.vue new file mode 100644 index 00000000..4350df8f --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/databinding/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.js b/vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.vue new file mode 100644 index 00000000..501ca05f --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/items/disabled/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.js b/vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.vue new file mode 100644 index 00000000..c8d32c51 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/keyboard/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/overview/CustomItem.vue b/vue-options-api-demos/buttons/floatingactionbutton/overview/CustomItem.vue new file mode 100644 index 00000000..92cb27df --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/overview/CustomItem.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/overview/main.js b/vue-options-api-demos/buttons/floatingactionbutton/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/overview/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/overview/main.vue new file mode 100644 index 00000000..b882486d --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/overview/main.vue @@ -0,0 +1,136 @@ + + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.js b/vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.vue new file mode 100644 index 00000000..049d3a1a --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/position-mode/main.vue @@ -0,0 +1,83 @@ + + diff --git a/vue-options-api-demos/buttons/floatingactionbutton/positioning/main.js b/vue-options-api-demos/buttons/floatingactionbutton/positioning/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/positioning/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/floatingactionbutton/positioning/main.vue b/vue-options-api-demos/buttons/floatingactionbutton/positioning/main.vue new file mode 100644 index 00000000..adb9ff0c --- /dev/null +++ b/vue-options-api-demos/buttons/floatingactionbutton/positioning/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/buttons/overview/CustomChip.vue b/vue-options-api-demos/buttons/overview/CustomChip.vue new file mode 100644 index 00000000..b017d16b --- /dev/null +++ b/vue-options-api-demos/buttons/overview/CustomChip.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/overview/main.js b/vue-options-api-demos/buttons/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/overview/main.vue b/vue-options-api-demos/buttons/overview/main.vue new file mode 100644 index 00000000..5ccc6d5a --- /dev/null +++ b/vue-options-api-demos/buttons/overview/main.vue @@ -0,0 +1,241 @@ + + diff --git a/vue-options-api-demos/buttons/rtl/main.js b/vue-options-api-demos/buttons/rtl/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/rtl/main.vue b/vue-options-api-demos/buttons/rtl/main.vue new file mode 100644 index 00000000..9184178e --- /dev/null +++ b/vue-options-api-demos/buttons/rtl/main.vue @@ -0,0 +1,210 @@ + + diff --git a/vue-options-api-demos/buttons/shared/ButtonStyleConfigurator.vue b/vue-options-api-demos/buttons/shared/ButtonStyleConfigurator.vue new file mode 100644 index 00000000..c16a6018 --- /dev/null +++ b/vue-options-api-demos/buttons/shared/ButtonStyleConfigurator.vue @@ -0,0 +1,189 @@ + + + diff --git a/vue-options-api-demos/buttons/shared/ButtonsStyleConfigurator.vue b/vue-options-api-demos/buttons/shared/ButtonsStyleConfigurator.vue new file mode 100644 index 00000000..17dd70df --- /dev/null +++ b/vue-options-api-demos/buttons/shared/ButtonsStyleConfigurator.vue @@ -0,0 +1,189 @@ + + + diff --git a/vue-options-api-demos/buttons/shared/ChipStyleConfigurator.vue b/vue-options-api-demos/buttons/shared/ChipStyleConfigurator.vue new file mode 100644 index 00000000..0494ee76 --- /dev/null +++ b/vue-options-api-demos/buttons/shared/ChipStyleConfigurator.vue @@ -0,0 +1,159 @@ + + + diff --git a/vue-options-api-demos/buttons/shared/FloatingActionButtonConfigurator.vue b/vue-options-api-demos/buttons/shared/FloatingActionButtonConfigurator.vue new file mode 100644 index 00000000..ab68720f --- /dev/null +++ b/vue-options-api-demos/buttons/shared/FloatingActionButtonConfigurator.vue @@ -0,0 +1,160 @@ + + + diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/configurator/ButtonsStyleConfigurator.vue b/vue-options-api-demos/buttons/splitbutton/appearance/configurator/ButtonsStyleConfigurator.vue new file mode 100644 index 00000000..17dd70df --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/configurator/ButtonsStyleConfigurator.vue @@ -0,0 +1,189 @@ + + + diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.js b/vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.vue b/vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.vue new file mode 100644 index 00000000..737ace94 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/configurator/main.vue @@ -0,0 +1,69 @@ + + + diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.js b/vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.vue b/vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.vue new file mode 100644 index 00000000..d140537d --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/fill-mode/main.vue @@ -0,0 +1,77 @@ + + + + diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.js b/vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.vue b/vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.vue new file mode 100644 index 00000000..cc0b5b34 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/rounded/main.vue @@ -0,0 +1,99 @@ + + + + diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/size/main.js b/vue-options-api-demos/buttons/splitbutton/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/size/main.vue b/vue-options-api-demos/buttons/splitbutton/appearance/size/main.vue new file mode 100644 index 00000000..fe0b0214 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/size/main.vue @@ -0,0 +1,74 @@ + + + + diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.js b/vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.vue b/vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.vue new file mode 100644 index 00000000..131bdc24 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/appearance/theme-colors/main.vue @@ -0,0 +1,127 @@ + + + + diff --git a/vue-options-api-demos/buttons/splitbutton/customization/items/main.js b/vue-options-api-demos/buttons/splitbutton/customization/items/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/customization/items/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/customization/items/main.vue b/vue-options-api-demos/buttons/splitbutton/customization/items/main.vue new file mode 100644 index 00000000..7bcfd456 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/customization/items/main.vue @@ -0,0 +1,34 @@ + + + diff --git a/vue-options-api-demos/buttons/splitbutton/customization/popup/main.js b/vue-options-api-demos/buttons/splitbutton/customization/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/customization/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/customization/popup/main.vue b/vue-options-api-demos/buttons/splitbutton/customization/popup/main.vue new file mode 100644 index 00000000..7e952e95 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/customization/popup/main.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.js b/vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.vue b/vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.vue new file mode 100644 index 00000000..a9eb75d8 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/data-binding/objects/main.vue @@ -0,0 +1,49 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.js b/vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.vue b/vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.vue new file mode 100644 index 00000000..515b457f --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/data-binding/strings/main.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/splitbutton/disabled/main.js b/vue-options-api-demos/buttons/splitbutton/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/disabled/main.vue b/vue-options-api-demos/buttons/splitbutton/disabled/main.vue new file mode 100644 index 00000000..722ff46b --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/disabled/main.vue @@ -0,0 +1,21 @@ + + + diff --git a/vue-options-api-demos/buttons/splitbutton/events/Logger.vue b/vue-options-api-demos/buttons/splitbutton/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/splitbutton/events/main.js b/vue-options-api-demos/buttons/splitbutton/events/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/buttons/splitbutton/events/main.vue b/vue-options-api-demos/buttons/splitbutton/events/main.vue new file mode 100644 index 00000000..c2ee67c7 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/events/main.vue @@ -0,0 +1,91 @@ + + + + diff --git a/vue-options-api-demos/buttons/splitbutton/icons/main.js b/vue-options-api-demos/buttons/splitbutton/icons/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/icons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/icons/main.vue b/vue-options-api-demos/buttons/splitbutton/icons/main.vue new file mode 100644 index 00000000..f839269e --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/icons/main.vue @@ -0,0 +1,63 @@ + + + diff --git a/vue-options-api-demos/buttons/splitbutton/keyboard/main.js b/vue-options-api-demos/buttons/splitbutton/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/keyboard/main.vue b/vue-options-api-demos/buttons/splitbutton/keyboard/main.vue new file mode 100644 index 00000000..9a7e6c92 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/keyboard/main.vue @@ -0,0 +1,45 @@ + + + diff --git a/vue-options-api-demos/buttons/splitbutton/overview/main.js b/vue-options-api-demos/buttons/splitbutton/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/splitbutton/overview/main.vue b/vue-options-api-demos/buttons/splitbutton/overview/main.vue new file mode 100644 index 00000000..29da7234 --- /dev/null +++ b/vue-options-api-demos/buttons/splitbutton/overview/main.vue @@ -0,0 +1,52 @@ + + + diff --git a/vue-options-api-demos/buttons/toolbar/basic/main.js b/vue-options-api-demos/buttons/toolbar/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/toolbar/basic/main.vue b/vue-options-api-demos/buttons/toolbar/basic/main.vue new file mode 100644 index 00000000..29fcfd10 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/basic/main.vue @@ -0,0 +1,131 @@ + + + + diff --git a/vue-options-api-demos/buttons/toolbar/events/Logger.vue b/vue-options-api-demos/buttons/toolbar/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/buttons/toolbar/events/main.js b/vue-options-api-demos/buttons/toolbar/events/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/buttons/toolbar/events/main.vue b/vue-options-api-demos/buttons/toolbar/events/main.vue new file mode 100644 index 00000000..1cbd3099 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/events/main.vue @@ -0,0 +1,145 @@ + + + diff --git a/vue-options-api-demos/buttons/toolbar/fill-mode/ToolbarStyleConfigurator.vue b/vue-options-api-demos/buttons/toolbar/fill-mode/ToolbarStyleConfigurator.vue new file mode 100644 index 00000000..a158132d --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/fill-mode/ToolbarStyleConfigurator.vue @@ -0,0 +1,63 @@ + + + diff --git a/vue-options-api-demos/buttons/toolbar/fill-mode/main.js b/vue-options-api-demos/buttons/toolbar/fill-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/buttons/toolbar/fill-mode/main.vue b/vue-options-api-demos/buttons/toolbar/fill-mode/main.vue new file mode 100644 index 00000000..5e609885 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/fill-mode/main.vue @@ -0,0 +1,237 @@ + + + diff --git a/vue-options-api-demos/buttons/toolbar/keyboard/main.js b/vue-options-api-demos/buttons/toolbar/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/toolbar/keyboard/main.vue b/vue-options-api-demos/buttons/toolbar/keyboard/main.vue new file mode 100644 index 00000000..3d4cb358 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/keyboard/main.vue @@ -0,0 +1,124 @@ + + + + diff --git a/vue-options-api-demos/buttons/toolbar/overflow-scroll/ToolbarScrollConfigurator.vue b/vue-options-api-demos/buttons/toolbar/overflow-scroll/ToolbarScrollConfigurator.vue new file mode 100644 index 00000000..927ede92 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/overflow-scroll/ToolbarScrollConfigurator.vue @@ -0,0 +1,91 @@ + + + diff --git a/vue-options-api-demos/buttons/toolbar/overflow-scroll/main.js b/vue-options-api-demos/buttons/toolbar/overflow-scroll/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/overflow-scroll/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/toolbar/overflow-scroll/main.vue b/vue-options-api-demos/buttons/toolbar/overflow-scroll/main.vue new file mode 100644 index 00000000..3671aaa5 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/overflow-scroll/main.vue @@ -0,0 +1,161 @@ + + + + diff --git a/vue-options-api-demos/buttons/toolbar/overflow-section/main.js b/vue-options-api-demos/buttons/toolbar/overflow-section/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/overflow-section/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/toolbar/overflow-section/main.vue b/vue-options-api-demos/buttons/toolbar/overflow-section/main.vue new file mode 100644 index 00000000..25d4a4b0 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/overflow-section/main.vue @@ -0,0 +1,134 @@ + + + + diff --git a/vue-options-api-demos/buttons/toolbar/size/ToolbarStyleConfigurator.vue b/vue-options-api-demos/buttons/toolbar/size/ToolbarStyleConfigurator.vue new file mode 100644 index 00000000..a2bc3d1c --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/size/ToolbarStyleConfigurator.vue @@ -0,0 +1,62 @@ + + + diff --git a/vue-options-api-demos/buttons/toolbar/size/main.js b/vue-options-api-demos/buttons/toolbar/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/buttons/toolbar/size/main.vue b/vue-options-api-demos/buttons/toolbar/size/main.vue new file mode 100644 index 00000000..66acd50f --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/size/main.vue @@ -0,0 +1,149 @@ + + + diff --git a/vue-options-api-demos/buttons/toolbar/tools/main.js b/vue-options-api-demos/buttons/toolbar/tools/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/tools/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/buttons/toolbar/tools/main.vue b/vue-options-api-demos/buttons/toolbar/tools/main.vue new file mode 100644 index 00000000..d3c17a92 --- /dev/null +++ b/vue-options-api-demos/buttons/toolbar/tools/main.vue @@ -0,0 +1,130 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/api/axis-title-position/main.js b/vue-options-api-demos/charts/api/axis-title-position/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/axis-title-position/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/axis-title-position/main.vue b/vue-options-api-demos/charts/api/axis-title-position/main.vue new file mode 100644 index 00000000..10678847 --- /dev/null +++ b/vue-options-api-demos/charts/api/axis-title-position/main.vue @@ -0,0 +1,24 @@ + + diff --git a/vue-options-api-demos/charts/api/base-unit/main.js b/vue-options-api-demos/charts/api/base-unit/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/base-unit/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/base-unit/main.vue b/vue-options-api-demos/charts/api/base-unit/main.vue new file mode 100644 index 00000000..2c628285 --- /dev/null +++ b/vue-options-api-demos/charts/api/base-unit/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/charts/api/category-base-unit/main.js b/vue-options-api-demos/charts/api/category-base-unit/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/category-base-unit/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/category-base-unit/main.vue b/vue-options-api-demos/charts/api/category-base-unit/main.vue new file mode 100644 index 00000000..fa5d2692 --- /dev/null +++ b/vue-options-api-demos/charts/api/category-base-unit/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/charts/api/dash-type/main.js b/vue-options-api-demos/charts/api/dash-type/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/dash-type/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/dash-type/main.vue b/vue-options-api-demos/charts/api/dash-type/main.vue new file mode 100644 index 00000000..c709ad25 --- /dev/null +++ b/vue-options-api-demos/charts/api/dash-type/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/charts/api/line-style/main.js b/vue-options-api-demos/charts/api/line-style/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/line-style/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/line-style/main.vue b/vue-options-api-demos/charts/api/line-style/main.vue new file mode 100644 index 00000000..de91a532 --- /dev/null +++ b/vue-options-api-demos/charts/api/line-style/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/charts/api/marker-type/main.js b/vue-options-api-demos/charts/api/marker-type/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/marker-type/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/marker-type/main.vue b/vue-options-api-demos/charts/api/marker-type/main.vue new file mode 100644 index 00000000..1ceb7478 --- /dev/null +++ b/vue-options-api-demos/charts/api/marker-type/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/charts/api/note-label-position/main.js b/vue-options-api-demos/charts/api/note-label-position/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/note-label-position/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/note-label-position/main.vue b/vue-options-api-demos/charts/api/note-label-position/main.vue new file mode 100644 index 00000000..406a6d4e --- /dev/null +++ b/vue-options-api-demos/charts/api/note-label-position/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/charts/api/note-position/main.js b/vue-options-api-demos/charts/api/note-position/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/api/note-position/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/api/note-position/main.vue b/vue-options-api-demos/charts/api/note-position/main.vue new file mode 100644 index 00000000..eb7d0ed2 --- /dev/null +++ b/vue-options-api-demos/charts/api/note-position/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/charts/chart/box-plot/box-plot-data.json b/vue-options-api-demos/charts/chart/box-plot/box-plot-data.json new file mode 100644 index 00000000..86449d2e --- /dev/null +++ b/vue-options-api-demos/charts/chart/box-plot/box-plot-data.json @@ -0,0 +1,158 @@ +[{ + "lower": 1.3, + "q1": 2.15, + "median": 2.95, + "q3": 3.725, + "upper": 4.7, + "mean": 2.9, + "outliers": [1, 9], + "year": "1996" +}, { + "lower": 2, + "q1": 3.825, + "median": 5.45, + "q3": 6.425, + "upper": 8.2, + "mean": 5.2, + "outliers": [1.5, 2, 8.9], + "year": "1997" +}, { + "lower": 3.8, + "q1": 4.725, + "median": 5.55, + "q3": 5.75, + "upper": 8.7, + "mean": 5.5, + "year": "1998" +}, { + "lower": 3, + "q1": 4.375, + "median": 4.95, + "q3": 5.85, + "upper": 8, + "mean": 5.2, + "outliers": [3, 9.5], + "year": "1999" +}, { + "lower": 2.5, + "q1": 3.925, + "median": 4.15, + "q3": 4.45, + "upper": 5.1, + "mean": 4.1, + "year": "2000" +}, { + "lower": 2.4, + "q1": 3.725, + "median": 4.95, + "q3": 5.85, + "upper": 7.7, + "mean": 4.9, + "outliers": [2.1, 8.3, 9.8], + "year": "2001" +}, { + "lower": 1.7, + "q1": 2.3, + "median": 3.9, + "q3": 5, + "upper": 5.5, + "mean": 3.7, + "outliers": [1.1, 9.1], + "year": "2002" +}, { + "lower": 2.2, + "q1": 2.5, + "median": 3.1, + "q3": 3.975, + "upper": 4.3, + "mean": 3.2, + "outliers": [1.6, 1.8, 9.8], + "year": "2003" +}, { + "lower": 1.9, + "q1": 2.7, + "median": 3.35, + "q3": 4.575, + "upper": 5.7, + "mean": 3.6, + "outliers": [1.1, 8.3], + "year": "2004" +}, { + "lower": 1.7, + "q1": 2.65, + "median": 3.3, + "q3": 4.05, + "upper": 5, + "mean": 3.4, + "year": "2005" +}, { + "lower": 1.4, + "q1": 2.25, + "median": 3.3, + "q3": 4.65, + "upper": 5.7, + "mean": 3.4, + "year": "2006" +}, { + "lower": 1.9, + "q1": 2.85, + "median": 4, + "q3": 4.45, + "upper": 6.1, + "mean": 3.9, + "outliers": [1, 1.2], + "year": "2007" +}, { + "lower": 1.5, + "q1": 2.35, + "median": 4.1, + "q3": 5.225, + "upper": 5.7, + "mean": 3.9, + "outliers": [9, 9.5], + "year": "2008" +}, { + "lower": 1.8, + "q1": 2.325, + "median": 3.35, + "q3": 4, + "upper": 5.4, + "mean": 3.3, + "outliers": [1, 6], + "year": "2009" +}, { + "lower": 1.8, + "q1": 2.75, + "median": 3.35, + "q3": 3.825, + "upper": 4.9, + "mean": 3.4, + "year": "2010" +}, { + "lower": 1.7, + "q1": 2.275, + "median": 3.2, + "q3": 3.825, + "upper": 5.5, + "mean": 3.2, + "outliers": [0.5, 6.7], + "year": "2011" +}, { + "lower": 1.2, + "q1": 1.95, + "median": 2.45, + "q3": 3.075, + "upper": 3.5, + "mean": 2.5, + "year": "2012" +}, { + "lower": 1.3, + "q1": 1.9, + "median": 3.05, + "q3": 3.425, + "upper": 4, + "mean": 2.7, + "outliers": [7, 8.5], + "year": "2013" +}] + diff --git a/vue-options-api-demos/charts/chart/box-plot/main.js b/vue-options-api-demos/charts/chart/box-plot/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/box-plot/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/box-plot/main.vue b/vue-options-api-demos/charts/chart/box-plot/main.vue new file mode 100644 index 00000000..349036a3 --- /dev/null +++ b/vue-options-api-demos/charts/chart/box-plot/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/charts/chart/bubble/bubble-data.json b/vue-options-api-demos/charts/chart/bubble/bubble-data.json new file mode 100644 index 00000000..71ba7eef --- /dev/null +++ b/vue-options-api-demos/charts/chart/bubble/bubble-data.json @@ -0,0 +1,46 @@ +[{ + "x": -2500, + "y": 50000, + "size": 500000, + "category": "Microsoft" +}, { + "x": 500, + "y": 110000, + "size": 7600000, + "category": "Starbucks" +}, { + "x": 7000, + "y": 19000, + "size": 700000, + "category": "Google" +}, { + "x": 1400, + "y": 150000, + "size": 700000, + "category": "Publix Super Markets" +}, { + "x": 2400, + "y": 30000, + "size": 300000, + "category": "PricewaterhouseCoopers" +}, { + "x": 2450, + "y": 34000, + "size": 90000, + "category": "Cisco" +}, { + "x": 2700, + "y": 34000, + "size": 400000, + "category": "Accenture" +}, { + "x": 2900, + "y": 40000, + "size": 450000, + "category": "Deloitte" +}, { + "x": 3000, + "y": 55000, + "size": 900000, + "category": "Whole Foods Market" +}] diff --git a/vue-options-api-demos/charts/chart/bubble/main.js b/vue-options-api-demos/charts/chart/bubble/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/bubble/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/bubble/main.vue b/vue-options-api-demos/charts/chart/bubble/main.vue new file mode 100644 index 00000000..4d21c694 --- /dev/null +++ b/vue-options-api-demos/charts/chart/bubble/main.vue @@ -0,0 +1,73 @@ + + diff --git a/vue-options-api-demos/charts/chart/bullet/main.js b/vue-options-api-demos/charts/chart/bullet/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/bullet/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/bullet/main.vue b/vue-options-api-demos/charts/chart/bullet/main.vue new file mode 100644 index 00000000..9894a05f --- /dev/null +++ b/vue-options-api-demos/charts/chart/bullet/main.vue @@ -0,0 +1,189 @@ + + diff --git a/vue-options-api-demos/charts/chart/chart-instance/main.js b/vue-options-api-demos/charts/chart/chart-instance/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/chart-instance/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/chart-instance/main.vue b/vue-options-api-demos/charts/chart/chart-instance/main.vue new file mode 100644 index 00000000..812c51ca --- /dev/null +++ b/vue-options-api-demos/charts/chart/chart-instance/main.vue @@ -0,0 +1,139 @@ + + diff --git a/vue-options-api-demos/charts/chart/donut-center-visuals/main.js b/vue-options-api-demos/charts/chart/donut-center-visuals/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-center-visuals/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/donut-center-visuals/main.vue b/vue-options-api-demos/charts/chart/donut-center-visuals/main.vue new file mode 100644 index 00000000..0321ca8a --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-center-visuals/main.vue @@ -0,0 +1,107 @@ + + diff --git a/vue-options-api-demos/charts/chart/donut-center-visuals/power-distribution-data.json b/vue-options-api-demos/charts/chart/donut-center-visuals/power-distribution-data.json new file mode 100644 index 00000000..1e9bda0c --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-center-visuals/power-distribution-data.json @@ -0,0 +1,13 @@ +[ { + "kind": "Hydroelectric", "share": 0.175 +}, { + "kind": "Nuclear", "share": 0.238 +}, { + "kind": "Coal", "share": 0.118 +}, { + "kind": "Solar", "share": 0.052 +}, { + "kind": "Wind", "share": 0.225 +}, { + "kind": "Other", "share": 0.192 +} ] diff --git a/vue-options-api-demos/charts/chart/donut-center/main.js b/vue-options-api-demos/charts/chart/donut-center/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-center/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/donut-center/main.vue b/vue-options-api-demos/charts/chart/donut-center/main.vue new file mode 100644 index 00000000..139ecb0e --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-center/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/charts/chart/donut-center/power-distribution-data.json b/vue-options-api-demos/charts/chart/donut-center/power-distribution-data.json new file mode 100644 index 00000000..1e9bda0c --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-center/power-distribution-data.json @@ -0,0 +1,13 @@ +[ { + "kind": "Hydroelectric", "share": 0.175 +}, { + "kind": "Nuclear", "share": 0.238 +}, { + "kind": "Coal", "share": 0.118 +}, { + "kind": "Solar", "share": 0.052 +}, { + "kind": "Wind", "share": 0.225 +}, { + "kind": "Other", "share": 0.192 +} ] diff --git a/vue-options-api-demos/charts/chart/donut-series/donut-series-data.json b/vue-options-api-demos/charts/chart/donut-series/donut-series-data.json new file mode 100644 index 00000000..4efe5b5c --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-series/donut-series-data.json @@ -0,0 +1,55 @@ +[{ + "name": "2011", + "data": [{ + "category": "Asia", + "value": 30.8, + "color": "#9de219" + }, { + "category": "Europe", + "value": 21.1, + "color": "#90cc38" + }, { + "category": "Latin America", + "value": 16.3, + "color": "#068c35" + }, { + "category": "Africa", + "value": 17.6, + "color": "#006634" + }, { + "category": "Middle East", + "value": 9.2, + "color": "#004d38" + }, { + "category": "North America", + "value": 4.6, + "color": "#033939" + }] +}, { + "name": "2012", + "data": [{ + "category": "Asia", + "value": 53.8, + "color": "#9de219" + }, { + "category": "Europe", + "value": 16.1, + "color": "#90cc38" + }, { + "category": "Latin America", + "value": 11.3, + "color": "#068c35" + }, { + "category": "Africa", + "value": 9.6, + "color": "#006634" + }, { + "category": "Middle East", + "value": 5.2, + "color": "#004d38" + }, { + "category": "North America", + "value": 3.6, + "color": "#033939" + }] +}] diff --git a/vue-options-api-demos/charts/chart/donut-series/main.js b/vue-options-api-demos/charts/chart/donut-series/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-series/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/donut-series/main.vue b/vue-options-api-demos/charts/chart/donut-series/main.vue new file mode 100644 index 00000000..57580408 --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut-series/main.vue @@ -0,0 +1,70 @@ + + diff --git a/vue-options-api-demos/charts/chart/donut/main.js b/vue-options-api-demos/charts/chart/donut/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/donut/main.vue b/vue-options-api-demos/charts/chart/donut/main.vue new file mode 100644 index 00000000..112e0e34 --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/charts/chart/donut/power-distribution-data.json b/vue-options-api-demos/charts/chart/donut/power-distribution-data.json new file mode 100644 index 00000000..1e9bda0c --- /dev/null +++ b/vue-options-api-demos/charts/chart/donut/power-distribution-data.json @@ -0,0 +1,13 @@ +[ { + "kind": "Hydroelectric", "share": 0.175 +}, { + "kind": "Nuclear", "share": 0.238 +}, { + "kind": "Coal", "share": 0.118 +}, { + "kind": "Solar", "share": 0.052 +}, { + "kind": "Wind", "share": 0.225 +}, { + "kind": "Other", "share": 0.192 +} ] diff --git a/vue-options-api-demos/charts/chart/funnel-dynamic/funnel-data.json b/vue-options-api-demos/charts/chart/funnel-dynamic/funnel-data.json new file mode 100644 index 00000000..781f53f3 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel-dynamic/funnel-data.json @@ -0,0 +1,21 @@ +[ { + "stat": "Impressions ", + "count": 434823, + "color": "#0e5a7e" +}, { + "stat": "Clicks", + "count": 356854, + "color": "#166f99" +}, { + "stat": "Unique Visitors", + "count": 280022, + "color": "#2185b4" +}, { + "stat": "Downloads", + "count": 190374, + "color": "#319fd2" +}, { + "stat": "Purchases", + "count": 120392, + "color": "#3eaee2" +} ] diff --git a/vue-options-api-demos/charts/chart/funnel-dynamic/main.js b/vue-options-api-demos/charts/chart/funnel-dynamic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel-dynamic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/funnel-dynamic/main.vue b/vue-options-api-demos/charts/chart/funnel-dynamic/main.vue new file mode 100644 index 00000000..e20822cd --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel-dynamic/main.vue @@ -0,0 +1,76 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/funnel-ratio/funnel-data.json b/vue-options-api-demos/charts/chart/funnel-ratio/funnel-data.json new file mode 100644 index 00000000..781f53f3 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel-ratio/funnel-data.json @@ -0,0 +1,21 @@ +[ { + "stat": "Impressions ", + "count": 434823, + "color": "#0e5a7e" +}, { + "stat": "Clicks", + "count": 356854, + "color": "#166f99" +}, { + "stat": "Unique Visitors", + "count": 280022, + "color": "#2185b4" +}, { + "stat": "Downloads", + "count": 190374, + "color": "#319fd2" +}, { + "stat": "Purchases", + "count": 120392, + "color": "#3eaee2" +} ] diff --git a/vue-options-api-demos/charts/chart/funnel-ratio/main.js b/vue-options-api-demos/charts/chart/funnel-ratio/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel-ratio/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/funnel-ratio/main.vue b/vue-options-api-demos/charts/chart/funnel-ratio/main.vue new file mode 100644 index 00000000..a3a480c0 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel-ratio/main.vue @@ -0,0 +1,82 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/funnel/funnel-data.json b/vue-options-api-demos/charts/chart/funnel/funnel-data.json new file mode 100644 index 00000000..781f53f3 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel/funnel-data.json @@ -0,0 +1,21 @@ +[ { + "stat": "Impressions ", + "count": 434823, + "color": "#0e5a7e" +}, { + "stat": "Clicks", + "count": 356854, + "color": "#166f99" +}, { + "stat": "Unique Visitors", + "count": 280022, + "color": "#2185b4" +}, { + "stat": "Downloads", + "count": 190374, + "color": "#319fd2" +}, { + "stat": "Purchases", + "count": 120392, + "color": "#3eaee2" +} ] diff --git a/vue-options-api-demos/charts/chart/funnel/main.js b/vue-options-api-demos/charts/chart/funnel/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/funnel/main.vue b/vue-options-api-demos/charts/chart/funnel/main.vue new file mode 100644 index 00000000..2a2045b0 --- /dev/null +++ b/vue-options-api-demos/charts/chart/funnel/main.vue @@ -0,0 +1,56 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/globalization/main.js b/vue-options-api-demos/charts/chart/globalization/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/globalization/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/globalization/main.vue b/vue-options-api-demos/charts/chart/globalization/main.vue new file mode 100644 index 00000000..0dc7c59f --- /dev/null +++ b/vue-options-api-demos/charts/chart/globalization/main.vue @@ -0,0 +1,93 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/heatmap/basic/heatmap-data.js b/vue-options-api-demos/charts/chart/heatmap/basic/heatmap-data.js new file mode 100644 index 00000000..a7e924a2 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/basic/heatmap-data.js @@ -0,0 +1,108 @@ +const data = [ + [1, 0, 0], + [1, 1, 4], + [1, 2, 7], + [1, 3, 14], + [1, 4, 10], + [1, 5, 8], + [1, 6, 0], + [2, 0, 0], + [2, 1, 6], + [2, 2, 9], + [2, 3, 12], + [2, 4, 12], + [2, 5, 6], + [2, 6, 0], + [3, 0, 0], + [3, 1, 5], + [3, 2, 8], + [3, 3, 11], + [3, 4, 0], + [3, 5, 5], + [3, 6, 0], + [4, 0, 0], + [4, 1, 0], + [4, 2, 0], + [4, 3, 0], + [4, 4, 0], + [4, 5, 0], + [4, 6, 0], + [5, 0, 0], + [5, 1, 0], + [5, 2, 0], + [5, 3, 0], + [5, 4, 0], + [5, 5, 0], + [5, 6, 0], + [6, 0, 0], + [6, 1, 4], + [6, 2, 7], + [6, 3, 14], + [6, 4, 10], + [6, 5, 8], + [6, 6, 0], + [7, 0, 0], + [7, 1, 6], + [7, 2, 9], + [7, 3, 2], + [7, 4, 4], + [7, 5, 6], + [7, 6, 0], + [8, 0, 0], + [8, 1, 4], + [8, 2, 7], + [8, 3, 14], + [8, 4, 10], + [8, 5, 8], + [8, 6, 0], + [9, 0, 0], + [9, 1, 4], + [9, 2, 7], + [9, 3, 4], + [9, 4, 1], + [9, 5, 8], + [9, 6, 0], + [10, 0, 0], + [10, 1, 6], + [10, 2, 9], + [10, 3, 12], + [10, 4, 12], + [10, 5, 6], + [10, 6, 0], + [11, 0, 0], + [11, 1, 4], + [11, 2, 7], + [11, 3, 10], + [11, 4, 10], + [11, 5, 8], + [11, 6, 0], + [12, 0, 0], + [12, 1, 4], + [12, 2, 7], + [12, 3, 8], + [12, 4, 10], + [12, 5, 4], + [12, 6, 0], + [13, 0, 0], + [13, 1, 4], + [13, 2, 7], + [13, 3, 11], + [13, 4, 0], + [13, 5, 8], + [13, 6, 0], + [14, 0, 0], + [14, 1, 6], + [14, 2, 9], + [14, 3, 6], + [14, 4, 8], + [14, 5, 6], + [14, 6, 0], + [15, 0, 0], + [15, 1, 4], + [15, 2, 7], + [15, 3, 7], + [15, 4, 10], + [15, 5, 8], + [15, 6, 0], +]; +export default data; diff --git a/vue-options-api-demos/charts/chart/heatmap/basic/main.js b/vue-options-api-demos/charts/chart/heatmap/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/basic/main.vue b/vue-options-api-demos/charts/chart/heatmap/basic/main.vue new file mode 100644 index 00000000..3267ba7c --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/basic/main.vue @@ -0,0 +1,85 @@ + + + diff --git a/vue-options-api-demos/charts/chart/heatmap/binding-categories/main.js b/vue-options-api-demos/charts/chart/heatmap/binding-categories/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/binding-categories/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/binding-categories/main.vue b/vue-options-api-demos/charts/chart/heatmap/binding-categories/main.vue new file mode 100644 index 00000000..631a434b --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/binding-categories/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/charts/chart/heatmap/binding-objects/main.js b/vue-options-api-demos/charts/chart/heatmap/binding-objects/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/binding-objects/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/binding-objects/main.vue b/vue-options-api-demos/charts/chart/heatmap/binding-objects/main.vue new file mode 100644 index 00000000..f4ef8060 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/binding-objects/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/charts/chart/heatmap/color-scale/main.js b/vue-options-api-demos/charts/chart/heatmap/color-scale/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/color-scale/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/color-scale/main.vue b/vue-options-api-demos/charts/chart/heatmap/color-scale/main.vue new file mode 100644 index 00000000..84873d20 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/color-scale/main.vue @@ -0,0 +1,54 @@ + + + diff --git a/vue-options-api-demos/charts/chart/heatmap/crosshairs/main.js b/vue-options-api-demos/charts/chart/heatmap/crosshairs/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/crosshairs/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/crosshairs/main.vue b/vue-options-api-demos/charts/chart/heatmap/crosshairs/main.vue new file mode 100644 index 00000000..f34ab724 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/crosshairs/main.vue @@ -0,0 +1,80 @@ + + diff --git a/vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.js b/vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.vue b/vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.vue new file mode 100644 index 00000000..ce82e3c6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/marker-shapes/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/charts/chart/heatmap/marker-size/main.js b/vue-options-api-demos/charts/chart/heatmap/marker-size/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/marker-size/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/marker-size/main.vue b/vue-options-api-demos/charts/chart/heatmap/marker-size/main.vue new file mode 100644 index 00000000..b70561ca --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/marker-size/main.vue @@ -0,0 +1,91 @@ + + diff --git a/vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.js b/vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.vue b/vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.vue new file mode 100644 index 00000000..1a664326 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/pan-zoom/main.vue @@ -0,0 +1,73 @@ + + diff --git a/vue-options-api-demos/charts/chart/heatmap/tooltips/heatmap-data.js b/vue-options-api-demos/charts/chart/heatmap/tooltips/heatmap-data.js new file mode 100644 index 00000000..a7e924a2 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/tooltips/heatmap-data.js @@ -0,0 +1,108 @@ +const data = [ + [1, 0, 0], + [1, 1, 4], + [1, 2, 7], + [1, 3, 14], + [1, 4, 10], + [1, 5, 8], + [1, 6, 0], + [2, 0, 0], + [2, 1, 6], + [2, 2, 9], + [2, 3, 12], + [2, 4, 12], + [2, 5, 6], + [2, 6, 0], + [3, 0, 0], + [3, 1, 5], + [3, 2, 8], + [3, 3, 11], + [3, 4, 0], + [3, 5, 5], + [3, 6, 0], + [4, 0, 0], + [4, 1, 0], + [4, 2, 0], + [4, 3, 0], + [4, 4, 0], + [4, 5, 0], + [4, 6, 0], + [5, 0, 0], + [5, 1, 0], + [5, 2, 0], + [5, 3, 0], + [5, 4, 0], + [5, 5, 0], + [5, 6, 0], + [6, 0, 0], + [6, 1, 4], + [6, 2, 7], + [6, 3, 14], + [6, 4, 10], + [6, 5, 8], + [6, 6, 0], + [7, 0, 0], + [7, 1, 6], + [7, 2, 9], + [7, 3, 2], + [7, 4, 4], + [7, 5, 6], + [7, 6, 0], + [8, 0, 0], + [8, 1, 4], + [8, 2, 7], + [8, 3, 14], + [8, 4, 10], + [8, 5, 8], + [8, 6, 0], + [9, 0, 0], + [9, 1, 4], + [9, 2, 7], + [9, 3, 4], + [9, 4, 1], + [9, 5, 8], + [9, 6, 0], + [10, 0, 0], + [10, 1, 6], + [10, 2, 9], + [10, 3, 12], + [10, 4, 12], + [10, 5, 6], + [10, 6, 0], + [11, 0, 0], + [11, 1, 4], + [11, 2, 7], + [11, 3, 10], + [11, 4, 10], + [11, 5, 8], + [11, 6, 0], + [12, 0, 0], + [12, 1, 4], + [12, 2, 7], + [12, 3, 8], + [12, 4, 10], + [12, 5, 4], + [12, 6, 0], + [13, 0, 0], + [13, 1, 4], + [13, 2, 7], + [13, 3, 11], + [13, 4, 0], + [13, 5, 8], + [13, 6, 0], + [14, 0, 0], + [14, 1, 6], + [14, 2, 9], + [14, 3, 6], + [14, 4, 8], + [14, 5, 6], + [14, 6, 0], + [15, 0, 0], + [15, 1, 4], + [15, 2, 7], + [15, 3, 7], + [15, 4, 10], + [15, 5, 8], + [15, 6, 0], +]; +export default data; diff --git a/vue-options-api-demos/charts/chart/heatmap/tooltips/main.js b/vue-options-api-demos/charts/chart/heatmap/tooltips/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/tooltips/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/heatmap/tooltips/main.vue b/vue-options-api-demos/charts/chart/heatmap/tooltips/main.vue new file mode 100644 index 00000000..1787f951 --- /dev/null +++ b/vue-options-api-demos/charts/chart/heatmap/tooltips/main.vue @@ -0,0 +1,53 @@ + + diff --git a/vue-options-api-demos/charts/chart/pan-zoom/basic/main.js b/vue-options-api-demos/charts/chart/pan-zoom/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/pan-zoom/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/pan-zoom/basic/main.vue b/vue-options-api-demos/charts/chart/pan-zoom/basic/main.vue new file mode 100644 index 00000000..f8001ab8 --- /dev/null +++ b/vue-options-api-demos/charts/chart/pan-zoom/basic/main.vue @@ -0,0 +1,56 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/pan-zoom/lock/main.js b/vue-options-api-demos/charts/chart/pan-zoom/lock/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/pan-zoom/lock/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/pan-zoom/lock/main.vue b/vue-options-api-demos/charts/chart/pan-zoom/lock/main.vue new file mode 100644 index 00000000..e2339c24 --- /dev/null +++ b/vue-options-api-demos/charts/chart/pan-zoom/lock/main.vue @@ -0,0 +1,68 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/polar/main.js b/vue-options-api-demos/charts/chart/polar/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/polar/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/polar/main.vue b/vue-options-api-demos/charts/chart/polar/main.vue new file mode 100644 index 00000000..941f8f9d --- /dev/null +++ b/vue-options-api-demos/charts/chart/polar/main.vue @@ -0,0 +1,62 @@ + + + diff --git a/vue-options-api-demos/charts/chart/polar/polar-data.json b/vue-options-api-demos/charts/chart/polar/polar-data.json new file mode 100644 index 00000000..06d877fc --- /dev/null +++ b/vue-options-api-demos/charts/chart/polar/polar-data.json @@ -0,0 +1,14 @@ +[ + { "time": "08:00", "altitude": 4.9, "azimuth": 92.7 }, + { "time": "09:00", "altitude": 17.6, "azimuth": 100.6 }, + { "time": "10:00", "altitude": 30.1, "azimuth": 109.7 }, + { "time": "11:00", "altitude": 41.8, "azimuth": 121.3 }, + { "time": "12:00", "altitude": 51.8, "azimuth": 137.7 }, + { "time": "13:00", "altitude": 58.5, "azimuth": 161.5 }, + { "time": "14:00", "altitude": 59.4, "azimuth": 190.7 }, + { "time": "15:00", "altitude": 54.1, "azimuth": 216.6 }, + { "time": "16:00", "altitude": 44.8, "azimuth": 234.8 }, + { "time": "17:00", "altitude": 33.5, "azimuth": 247.6 }, + { "time": "18:00", "altitude": 21.2, "azimuth": 257.2 }, + { "time": "19:00", "altitude": 8.4, "azimuth": 265.3 } +] diff --git a/vue-options-api-demos/charts/chart/pyramid/basic/main.js b/vue-options-api-demos/charts/chart/pyramid/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/pyramid/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/pyramid/basic/main.vue b/vue-options-api-demos/charts/chart/pyramid/basic/main.vue new file mode 100644 index 00000000..5ac8bab8 --- /dev/null +++ b/vue-options-api-demos/charts/chart/pyramid/basic/main.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.js b/vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.vue b/vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.vue new file mode 100644 index 00000000..21d8eb3e --- /dev/null +++ b/vue-options-api-demos/charts/chart/pyramid/dynamic-height/main.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/vue-options-api-demos/charts/chart/radar/main.js b/vue-options-api-demos/charts/chart/radar/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/radar/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/radar/main.vue b/vue-options-api-demos/charts/chart/radar/main.vue new file mode 100644 index 00000000..05eabbde --- /dev/null +++ b/vue-options-api-demos/charts/chart/radar/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/chart/radar/radar-data.json b/vue-options-api-demos/charts/chart/radar/radar-data.json new file mode 100644 index 00000000..11eba02c --- /dev/null +++ b/vue-options-api-demos/charts/chart/radar/radar-data.json @@ -0,0 +1,16 @@ +[ + { "name": "JP Morgan", "pre": 116, "post": 64 }, + { "name": "HSBC", "pre": 165, "post": 85 }, + { "name": "Credit Suisse", "pre": 215, "post": 97 }, + { "name": "Goldman Sachs", "pre": 75, "post": 27 }, + { "name": "Morgan Stanley", "pre": 100, "post": 16 }, + { "name": "Societe Generale", "pre": 49, "post": 26 }, + { "name": "UBS", "pre": 80, "post": 35 }, + { "name": "BNP Paribas", "pre": 116, "post": 32 }, + { "name": "Unicredit", "pre": 108, "post": 26 }, + { "name": "Credit Agricole", "pre": 90, "post": 17 }, + { "name": "Deutsche Bank", "pre": 67, "post": 10 }, + { "name": "Barclays", "pre": 76, "post": 7 }, + { "name": "Citigroup", "pre": 91, "post": 19 }, + { "name": "RBS", "pre": 255, "post": 5 } +] diff --git a/vue-options-api-demos/charts/chart/range-area/main.js b/vue-options-api-demos/charts/chart/range-area/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/range-area/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/range-area/main.vue b/vue-options-api-demos/charts/chart/range-area/main.vue new file mode 100644 index 00000000..38ff80c2 --- /dev/null +++ b/vue-options-api-demos/charts/chart/range-area/main.vue @@ -0,0 +1,71 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/range-area/range-data.json b/vue-options-api-demos/charts/chart/range-area/range-data.json new file mode 100644 index 00000000..0b21030d --- /dev/null +++ b/vue-options-api-demos/charts/chart/range-area/range-data.json @@ -0,0 +1,14 @@ +[ + { "month": "January", "min": 5, "max": 11 }, + { "month": "February", "min": 5, "max": 13 }, + { "month": "March", "min": 7, "max": 15 }, + { "month": "April", "min": 10, "max": 19 }, + { "month": "May", "min": 13, "max": 23 }, + { "month": "June", "min": 17, "max": 28 }, + { "month": "July", "min": 20, "max": 30 }, + { "month": "August", "min": 20, "max": 30 }, + { "month": "September", "min": 17, "max": 26 }, + { "month": "October", "min": 13, "max": 22 }, + { "month": "November", "min": 9, "max": 16 }, + { "month": "December", "min": 6, "max": 13 } +] diff --git a/vue-options-api-demos/charts/chart/range-bar/main.js b/vue-options-api-demos/charts/chart/range-bar/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/range-bar/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/range-bar/main.vue b/vue-options-api-demos/charts/chart/range-bar/main.vue new file mode 100644 index 00000000..a3438c50 --- /dev/null +++ b/vue-options-api-demos/charts/chart/range-bar/main.vue @@ -0,0 +1,71 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/range-bar/range-data.json b/vue-options-api-demos/charts/chart/range-bar/range-data.json new file mode 100644 index 00000000..0b21030d --- /dev/null +++ b/vue-options-api-demos/charts/chart/range-bar/range-data.json @@ -0,0 +1,14 @@ +[ + { "month": "January", "min": 5, "max": 11 }, + { "month": "February", "min": 5, "max": 13 }, + { "month": "March", "min": 7, "max": 15 }, + { "month": "April", "min": 10, "max": 19 }, + { "month": "May", "min": 13, "max": 23 }, + { "month": "June", "min": 17, "max": 28 }, + { "month": "July", "min": 20, "max": 30 }, + { "month": "August", "min": 20, "max": 30 }, + { "month": "September", "min": 17, "max": 26 }, + { "month": "October", "min": 13, "max": 22 }, + { "month": "November", "min": 9, "max": 16 }, + { "month": "December", "min": 6, "max": 13 } +] diff --git a/vue-options-api-demos/charts/chart/rendering/main.js b/vue-options-api-demos/charts/chart/rendering/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/rendering/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/rendering/main.vue b/vue-options-api-demos/charts/chart/rendering/main.vue new file mode 100644 index 00000000..1b584a37 --- /dev/null +++ b/vue-options-api-demos/charts/chart/rendering/main.vue @@ -0,0 +1,128 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/rtl/main.js b/vue-options-api-demos/charts/chart/rtl/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/rtl/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/rtl/main.vue b/vue-options-api-demos/charts/chart/rtl/main.vue new file mode 100644 index 00000000..7acc6de9 --- /dev/null +++ b/vue-options-api-demos/charts/chart/rtl/main.vue @@ -0,0 +1,111 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/chart/scatter-line-style/main.js b/vue-options-api-demos/charts/chart/scatter-line-style/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-line-style/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/scatter-line-style/main.vue b/vue-options-api-demos/charts/chart/scatter-line-style/main.vue new file mode 100644 index 00000000..7daa4124 --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-line-style/main.vue @@ -0,0 +1,52 @@ + + + diff --git a/vue-options-api-demos/charts/chart/scatter-line-style/scatter-line-style-data.json b/vue-options-api-demos/charts/chart/scatter-line-style/scatter-line-style-data.json new file mode 100644 index 00000000..e8fbf411 --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-line-style/scatter-line-style-data.json @@ -0,0 +1,28 @@ +[ + [0, 20], + [1, 1], + [2, 18], + [3, 3], + [4, 15], + [5, 5], + [6, 10], + [7, 6], + [8, 9], + [9, 6], + [10, 10], + [11, 5], + [12, 13], + [13, 3], + [14, 16], + [15, 1], + [16, 19], + [17, 1], + [18, 20], + [19, 2], + [20, 18], + [21, 5], + [22, 12], + [23, 7], + [24, 10], + [25, 8] +] diff --git a/vue-options-api-demos/charts/chart/scatter-line/main.js b/vue-options-api-demos/charts/chart/scatter-line/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-line/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/scatter-line/main.vue b/vue-options-api-demos/charts/chart/scatter-line/main.vue new file mode 100644 index 00000000..322e58af --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-line/main.vue @@ -0,0 +1,69 @@ + + diff --git a/vue-options-api-demos/charts/chart/scatter-line/scatter-line-data.json b/vue-options-api-demos/charts/chart/scatter-line/scatter-line-data.json new file mode 100644 index 00000000..192fd058 --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-line/scatter-line-data.json @@ -0,0 +1,31 @@ +[{ + "current": 0.8, + "stats": [ + { "time": 10, "charge": 10 }, + { "time": 15, "charge": 20 }, + { "time": 20, "charge": 25 }, + { "time": 32, "charge": 40 }, + { "time": 43, "charge": 50 }, + { "time": 55, "charge": 60 }, + { "time": 60, "charge": 70 }, + { "time": 70, "charge": 80 }, + { "time": 90, "charge": 100 } + ] + }, { + "current": 1.6, + "stats": [ + { "time": 10, "charge": 40 }, + { "time": 17, "charge": 50 }, + { "time": 18, "charge": 70 }, + { "time": 35, "charge": 90 }, + { "time": 47, "charge": 95 }, + { "time": 60, "charge": 100 } + ] + }, { + "current": 3.2, + "stats": [ + { "time": 10, "charge": 70 }, + { "time": 13, "charge": 90 }, + { "time": 25, "charge": 100 } + ] +}] diff --git a/vue-options-api-demos/charts/chart/scatter-plot/main.js b/vue-options-api-demos/charts/chart/scatter-plot/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-plot/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/scatter-plot/main.vue b/vue-options-api-demos/charts/chart/scatter-plot/main.vue new file mode 100644 index 00000000..3bf7a45e --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-plot/main.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/charts/chart/scatter-plot/scatter-plot-data.json b/vue-options-api-demos/charts/chart/scatter-plot/scatter-plot-data.json new file mode 100644 index 00000000..29adf915 --- /dev/null +++ b/vue-options-api-demos/charts/chart/scatter-plot/scatter-plot-data.json @@ -0,0 +1,17 @@ +[ + { "windSpeed": 16.4, "rainfall": 5.4 }, + { "windSpeed": 21.7, "rainfall": 2 }, + { "windSpeed": 25.4, "rainfall": 3 }, + { "windSpeed": 19, "rainfall": 2 }, + { "windSpeed": 10.9, "rainfall": 1 }, + { "windSpeed": 13.6, "rainfall": 3.2 }, + { "windSpeed": 10.9, "rainfall": 7.4 }, + { "windSpeed": 10.9, "rainfall": 0 }, + { "windSpeed": 10.9, "rainfall": 8.2 }, + { "windSpeed": 16.4, "rainfall": 0 }, + { "windSpeed": 16.4, "rainfall": 1.8 }, + { "windSpeed": 13.6, "rainfall": 0.3 }, + { "windSpeed": 29.9, "rainfall": 0 }, + { "windSpeed": 27.1, "rainfall": 2.3 }, + { "windSpeed": 16.4, "rainfall": 0 } +] diff --git a/vue-options-api-demos/charts/chart/trendlines/basic/main.js b/vue-options-api-demos/charts/chart/trendlines/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/basic/main.vue b/vue-options-api-demos/charts/chart/trendlines/basic/main.vue new file mode 100644 index 00000000..b8769f06 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/basic/main.vue @@ -0,0 +1,66 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/basic/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/basic/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/basic/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/custom-field/main.js b/vue-options-api-demos/charts/chart/trendlines/custom-field/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/custom-field/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/custom-field/main.vue b/vue-options-api-demos/charts/chart/trendlines/custom-field/main.vue new file mode 100644 index 00000000..537d4988 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/custom-field/main.vue @@ -0,0 +1,67 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/custom-field/stock-data-sample.js b/vue-options-api-demos/charts/chart/trendlines/custom-field/stock-data-sample.js new file mode 100644 index 00000000..20018594 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/custom-field/stock-data-sample.js @@ -0,0 +1,2075 @@ +export const stockDataSample = +[ + { + 'Date': '2010/01/01', + 'Open': 54.13, + 'High': 54.13, + 'Low': 54.13, + 'Close': 54.13, + 'Volume': 0 + }, + { + 'Date': '2010/01/04', + 'Open': 55.72, + 'High': 56.39, + 'Low': 54.8, + 'Close': 56.18, + 'Volume': 6187088 + }, + { + 'Date': '2010/01/05', + 'Open': 56.25, + 'High': 58.28, + 'Low': 56, + 'Close': 58.02, + 'Volume': 8872728 + }, + { + 'Date': '2010/01/06', + 'Open': 58.23, + 'High': 59.99, + 'Low': 57.88, + 'Close': 59.78, + 'Volume': 8838016 + }, + { + 'Date': '2010/01/07', + 'Open': 59.51, + 'High': 62.31, + 'Low': 59.02, + 'Close': 62.2, + 'Volume': 14380744 + }, + { + 'Date': '2010/01/08', + 'Open': 61.54, + 'High': 61.78, + 'Low': 60.86, + 'Close': 61.6, + 'Volume': 7147427 + }, + { + 'Date': '2010/01/11', + 'Open': 61.95, + 'High': 62.09, + 'Low': 60.51, + 'Close': 60.87, + 'Volume': 5627699 + }, + { + 'Date': '2010/01/12', + 'Open': 60.07, + 'High': 61.2, + 'Low': 59.91, + 'Close': 60.43, + 'Volume': 5273875 + }, + { + 'Date': '2010/01/13', + 'Open': 60.61, + 'High': 61.7, + 'Low': 60.35, + 'Close': 61.16, + 'Volume': 4950400 + }, + { + 'Date': '2010/01/14', + 'Open': 61.03, + 'High': 61.62, + 'Low': 60.78, + 'Close': 61.56, + 'Volume': 3000398 + }, + { + 'Date': '2010/01/15', + 'Open': 60.82, + 'High': 60.82, + 'Low': 60.82, + 'Close': 60.82, + 'Volume': 0 + }, + { + 'Date': '2010/01/18', + 'Open': 60.82, + 'High': 60.82, + 'Low': 60.82, + 'Close': 60.82, + 'Volume': 0 + }, + { + 'Date': '2010/01/19', + 'Open': 60.6, + 'High': 61.01, + 'Low': 59.96, + 'Close': 60.65, + 'Volume': 5428029 + }, + { + 'Date': '2010/01/20', + 'Open': 60.33, + 'High': 60.57, + 'Low': 58.53, + 'Close': 60.2, + 'Volume': 5374069 + }, + { + 'Date': '2010/01/21', + 'Open': 60.3, + 'High': 61.26, + 'Low': 58.9, + 'Close': 59.2, + 'Volume': 5401938 + }, + { + 'Date': '2010/01/22', + 'Open': 58.62, + 'High': 59.17, + 'Low': 57.7, + 'Close': 57.77, + 'Volume': 4745396 + }, + { + 'Date': '2010/01/25', + 'Open': 58.35, + 'High': 58.75, + 'Low': 57.5, + 'Close': 57.78, + 'Volume': 3489914 + }, + { + 'Date': '2010/01/26', + 'Open': 57.54, + 'High': 58.5, + 'Low': 57.23, + 'Close': 57.71, + 'Volume': 4552136 + }, + { + 'Date': '2010/01/27', + 'Open': 58.84, + 'High': 62.08, + 'Low': 58.83, + 'Close': 61.93, + 'Volume': 14760056 + }, + { + 'Date': '2010/01/28', + 'Open': 62.15, + 'High': 62.95, + 'Low': 61.31, + 'Close': 62.56, + 'Volume': 8865642 + }, + { + 'Date': '2010/01/29', + 'Open': 62.8, + 'High': 63.4, + 'Low': 60.32, + 'Close': 60.6, + 'Volume': 8726177 + }, + { + 'Date': '2010/02/01', + 'Open': 60.74, + 'High': 61.86, + 'Low': 60.72, + 'Close': 61.7, + 'Volume': 5929599 + }, + { + 'Date': '2010/02/02', + 'Open': 61.29, + 'High': 62, + 'Low': 61, + 'Close': 61.94, + 'Volume': 7862734 + }, + { + 'Date': '2010/02/03', + 'Open': 61.52, + 'High': 61.8, + 'Low': 60.85, + 'Close': 61.46, + 'Volume': 5480578 + }, + { + 'Date': '2010/02/04', + 'Open': 60.95, + 'High': 61.17, + 'Low': 59.25, + 'Close': 59.32, + 'Volume': 7491344 + }, + { + 'Date': '2010/02/05', + 'Open': 59.21, + 'High': 59.74, + 'Low': 57.14, + 'Close': 58.4, + 'Volume': 9676128 + }, + { + 'Date': '2010/02/08', + 'Open': 58.33, + 'High': 58.97, + 'Low': 57.78, + 'Close': 57.89, + 'Volume': 4724664 + }, + { + 'Date': '2010/02/09', + 'Open': 58.62, + 'High': 60.43, + 'Low': 58.39, + 'Close': 59.74, + 'Volume': 8250844 + }, + { + 'Date': '2010/02/10', + 'Open': 59.71, + 'High': 60.05, + 'Low': 58.94, + 'Close': 59.54, + 'Volume': 4237165 + }, + { + 'Date': '2010/02/11', + 'Open': 59.75, + 'High': 60.75, + 'Low': 58.94, + 'Close': 60.59, + 'Volume': 4395736 + }, + { + 'Date': '2010/02/12', + 'Open': 59.65, + 'High': 59.65, + 'Low': 59.65, + 'Close': 59.65, + 'Volume': 0 + }, + { + 'Date': '2010/02/15', + 'Open': 59.65, + 'High': 59.65, + 'Low': 59.65, + 'Close': 59.65, + 'Volume': 0 + }, + { + 'Date': '2010/02/16', + 'Open': 60.42, + 'High': 61.29, + 'Low': 59.9, + 'Close': 61.26, + 'Volume': 4268659 + }, + { + 'Date': '2010/02/17', + 'Open': 61.39, + 'High': 62, + 'Low': 61, + 'Close': 61.82, + 'Volume': 4116171 + }, + { + 'Date': '2010/02/18', + 'Open': 61.78, + 'High': 63.01, + 'Low': 61.72, + 'Close': 62.89, + 'Volume': 4391778 + }, + { + 'Date': '2010/02/19', + 'Open': 62.65, + 'High': 64.34, + 'Low': 62.65, + 'Close': 63.59, + 'Volume': 7371049 + }, + { + 'Date': '2010/02/22', + 'Open': 63.58, + 'High': 64.47, + 'Low': 63.19, + 'Close': 63.97, + 'Volume': 6034004 + }, + { + 'Date': '2010/02/23', + 'Open': 63.81, + 'High': 64.17, + 'Low': 62.25, + 'Close': 62.77, + 'Volume': 6484460 + }, + { + 'Date': '2010/02/24', + 'Open': 63, + 'High': 63.7, + 'Low': 62.64, + 'Close': 63.48, + 'Volume': 3400361 + }, + { + 'Date': '2010/02/25', + 'Open': 62.72, + 'High': 62.97, + 'Low': 62, + 'Close': 62.87, + 'Volume': 5043170 + }, + { + 'Date': '2010/02/26', + 'Open': 63.09, + 'High': 63.88, + 'Low': 63.03, + 'Close': 63.16, + 'Volume': 4415909 + }, + { + 'Date': '2010/03/01', + 'Open': 63.05, + 'High': 64.33, + 'Low': 63, + 'Close': 64, + 'Volume': 5265630 + }, + { + 'Date': '2010/03/02', + 'Open': 64.64, + 'High': 65.33, + 'Low': 64.36, + 'Close': 64.44, + 'Volume': 4383103 + }, + { + 'Date': '2010/03/03', + 'Open': 64.58, + 'High': 64.97, + 'Low': 64.05, + 'Close': 64.45, + 'Volume': 4289350 + }, + { + 'Date': '2010/03/04', + 'Open': 65.09, + 'High': 65.8, + 'Low': 64.85, + 'Close': 65.55, + 'Volume': 7718659 + }, + { + 'Date': '2010/03/05', + 'Open': 66.06, + 'High': 68.04, + 'Low': 66.03, + 'Close': 67.93, + 'Volume': 8506441 + }, + { + 'Date': '2010/03/08', + 'Open': 68.01, + 'High': 68.01, + 'Low': 67.13, + 'Close': 67.24, + 'Volume': 5077225 + }, + { + 'Date': '2010/03/09', + 'Open': 67.57, + 'High': 68.34, + 'Low': 67.35, + 'Close': 67.79, + 'Volume': 7655839 + }, + { + 'Date': '2010/03/10', + 'Open': 68.14, + 'High': 70.48, + 'Low': 68.03, + 'Close': 70.01, + 'Volume': 10616531 + }, + { + 'Date': '2010/03/11', + 'Open': 70.08, + 'High': 70.43, + 'Low': 69.15, + 'Close': 70.07, + 'Volume': 7293133 + }, + { + 'Date': '2010/03/12', + 'Open': 70.48, + 'High': 70.49, + 'Low': 69.25, + 'Close': 69.83, + 'Volume': 5302767 + }, + { + 'Date': '2010/03/15', + 'Open': 69.37, + 'High': 69.77, + 'Low': 68.52, + 'Close': 69.4, + 'Volume': 7709023 + }, + { + 'Date': '2010/03/16', + 'Open': 69.24, + 'High': 69.31, + 'Low': 68.3, + 'Close': 68.72, + 'Volume': 7495575 + }, + { + 'Date': '2010/03/17', + 'Open': 68.97, + 'High': 69.49, + 'Low': 68.29, + 'Close': 69.38, + 'Volume': 6004213 + }, + { + 'Date': '2010/03/18', + 'Open': 69.35, + 'High': 70.93, + 'Low': 69.19, + 'Close': 70.87, + 'Volume': 7435774 + }, + { + 'Date': '2010/03/19', + 'Open': 73.2, + 'High': 73.3, + 'Low': 70.72, + 'Close': 70.72, + 'Volume': 17722432 + }, + { + 'Date': '2010/03/22', + 'Open': 71.66, + 'High': 72.64, + 'Low': 71.51, + 'Close': 71.91, + 'Volume': 9014855 + }, + { + 'Date': '2010/03/23', + 'Open': 72.54, + 'High': 72.63, + 'Low': 71.51, + 'Close': 72.18, + 'Volume': 4986322 + }, + { + 'Date': '2010/03/24', + 'Open': 72.42, + 'High': 73.2, + 'Low': 71.78, + 'Close': 72.32, + 'Volume': 7699920 + }, + { + 'Date': '2010/03/25', + 'Open': 72.95, + 'High': 73.43, + 'Low': 72, + 'Close': 72.49, + 'Volume': 5431155 + }, + { + 'Date': '2010/03/26', + 'Open': 72.66, + 'High': 72.99, + 'Low': 72.35, + 'Close': 72.59, + 'Volume': 4933688 + }, + { + 'Date': '2010/03/29', + 'Open': 73.08, + 'High': 74.53, + 'Low': 73, + 'Close': 74.11, + 'Volume': 9064111 + }, + { + 'Date': '2010/03/30', + 'Open': 73.84, + 'High': 74.18, + 'Low': 72.7, + 'Close': 73.53, + 'Volume': 4381292 + }, + { + 'Date': '2010/03/31', + 'Open': 72.92, + 'High': 73.06, + 'Low': 71.95, + 'Close': 72.61, + 'Volume': 5884899 + }, + { + 'Date': '2010/04/01', + 'Open': 72.99, + 'High': 72.99, + 'Low': 72.99, + 'Close': 72.99, + 'Volume': 0 + }, + { + 'Date': '2010/04/02', + 'Open': 72.99, + 'High': 72.99, + 'Low': 72.99, + 'Close': 72.99, + 'Volume': 0 + }, + { + 'Date': '2010/04/05', + 'Open': 72.99, + 'High': 73.05, + 'Low': 70.95, + 'Close': 72.04, + 'Volume': 9326414 + }, + { + 'Date': '2010/04/06', + 'Open': 71.84, + 'High': 73.18, + 'Low': 71.77, + 'Close': 72.36, + 'Volume': 5194801 + }, + { + 'Date': '2010/04/07', + 'Open': 72.16, + 'High': 72.52, + 'Low': 71.47, + 'Close': 72.1, + 'Volume': 6717177 + }, + { + 'Date': '2010/04/08', + 'Open': 71.89, + 'High': 72.46, + 'Low': 71.21, + 'Close': 72.28, + 'Volume': 3743018 + }, + { + 'Date': '2010/04/09', + 'Open': 72.26, + 'High': 72.66, + 'Low': 71.81, + 'Close': 72.42, + 'Volume': 3345780 + }, + { + 'Date': '2010/04/12', + 'Open': 72.15, + 'High': 72.57, + 'Low': 71.8, + 'Close': 71.92, + 'Volume': 3666172 + }, + { + 'Date': '2010/04/13', + 'Open': 71.54, + 'High': 71.69, + 'Low': 70.5, + 'Close': 71.19, + 'Volume': 5079284 + }, + { + 'Date': '2010/04/14', + 'Open': 70.83, + 'High': 71.76, + 'Low': 70.81, + 'Close': 71.7, + 'Volume': 3496649 + }, + { + 'Date': '2010/04/15', + 'Open': 71.34, + 'High': 72.61, + 'Low': 71.34, + 'Close': 72.09, + 'Volume': 2943682 + }, + { + 'Date': '2010/04/16', + 'Open': 72.1, + 'High': 72.1, + 'Low': 69.88, + 'Close': 70.79, + 'Volume': 8075323 + }, + { + 'Date': '2010/04/19', + 'Open': 70.27, + 'High': 71.28, + 'Low': 70.16, + 'Close': 70.96, + 'Volume': 4203068 + }, + { + 'Date': '2010/04/20', + 'Open': 71.54, + 'High': 71.98, + 'Low': 70.95, + 'Close': 71.41, + 'Volume': 4760806 + }, + { + 'Date': '2010/04/21', + 'Open': 71.51, + 'High': 74.65, + 'Low': 71.51, + 'Close': 74.16, + 'Volume': 12037705 + }, + { + 'Date': '2010/04/22', + 'Open': 74.46, + 'High': 76, + 'Low': 73.68, + 'Close': 75.59, + 'Volume': 9088834 + }, + { + 'Date': '2010/04/23', + 'Open': 75.04, + 'High': 75.68, + 'Low': 74.55, + 'Close': 75.13, + 'Volume': 5198190 + }, + { + 'Date': '2010/04/26', + 'Open': 74.58, + 'High': 75.29, + 'Low': 74.14, + 'Close': 74.34, + 'Volume': 4024935 + }, + { + 'Date': '2010/04/27', + 'Open': 74.65, + 'High': 74.93, + 'Low': 72.23, + 'Close': 72.48, + 'Volume': 6054842 + }, + { + 'Date': '2010/04/28', + 'Open': 72.95, + 'High': 72.99, + 'Low': 71.34, + 'Close': 72.37, + 'Volume': 5699477 + }, + { + 'Date': '2010/04/29', + 'Open': 73, + 'High': 74, + 'Low': 72.67, + 'Close': 73.79, + 'Volume': 5203310 + }, + { + 'Date': '2010/04/30', + 'Open': 73.8, + 'High': 74.48, + 'Low': 72.26, + 'Close': 72.43, + 'Volume': 5601081 + }, + { + 'Date': '2010/05/03', + 'Open': 72.62, + 'High': 74.7, + 'Low': 72.46, + 'Close': 74.39, + 'Volume': 5407779 + }, + { + 'Date': '2010/05/04', + 'Open': 73.31, + 'High': 73.45, + 'Low': 72.23, + 'Close': 72.79, + 'Volume': 6230700 + }, + { + 'Date': '2010/05/05', + 'Open': 71.9, + 'High': 72.04, + 'Low': 70.44, + 'Close': 71, + 'Volume': 5509124 + }, + { + 'Date': '2010/05/06', + 'Open': 70.66, + 'High': 71.49, + 'Low': 62, + 'Close': 67.97, + 'Volume': 13771537 + }, + { + 'Date': '2010/05/07', + 'Open': 68.29, + 'High': 69.12, + 'Low': 65.8, + 'Close': 66.72, + 'Volume': 8927346 + }, + { + 'Date': '2010/05/10', + 'Open': 69.96, + 'High': 71.73, + 'Low': 69.8, + 'Close': 71, + 'Volume': 8841884 + }, + { + 'Date': '2010/05/11', + 'Open': 70.31, + 'High': 72.67, + 'Low': 70.14, + 'Close': 71.42, + 'Volume': 6551880 + }, + { + 'Date': '2010/05/12', + 'Open': 72.04, + 'High': 73.37, + 'Low': 72.04, + 'Close': 72.87, + 'Volume': 6331552 + }, + { + 'Date': '2010/05/13', + 'Open': 72.66, + 'High': 73.3, + 'Low': 71.56, + 'Close': 71.76, + 'Volume': 3953696 + }, + { + 'Date': '2010/05/14', + 'Open': 71.08, + 'High': 71.4, + 'Low': 68.98, + 'Close': 69.82, + 'Volume': 7954557 + }, + { + 'Date': '2010/05/17', + 'Open': 70.36, + 'High': 70.37, + 'Low': 67.62, + 'Close': 69.68, + 'Volume': 4814936 + }, + { + 'Date': '2010/05/18', + 'Open': 69.89, + 'High': 70.13, + 'Low': 67.3, + 'Close': 67.72, + 'Volume': 8882829 + }, + { + 'Date': '2010/05/19', + 'Open': 66.85, + 'High': 67.55, + 'Low': 65.28, + 'Close': 66.21, + 'Volume': 9974312 + }, + { + 'Date': '2010/05/20', + 'Open': 65, + 'High': 65.11, + 'Low': 62.8, + 'Close': 63, + 'Volume': 10904161 + }, + { + 'Date': '2010/05/21', + 'Open': 61.99, + 'High': 65, + 'Low': 61.39, + 'Close': 64.56, + 'Volume': 10882625 + }, + { + 'Date': '2010/05/24', + 'Open': 63.66, + 'High': 64.61, + 'Low': 63.06, + 'Close': 63.15, + 'Volume': 6168825 + }, + { + 'Date': '2010/05/25', + 'Open': 61, + 'High': 62.98, + 'Low': 60.61, + 'Close': 62.78, + 'Volume': 6903135 + }, + { + 'Date': '2010/05/26', + 'Open': 63.6, + 'High': 65.41, + 'Low': 63, + 'Close': 63.26, + 'Volume': 7386008 + }, + { + 'Date': '2010/05/27', + 'Open': 64.86, + 'High': 65.23, + 'Low': 63.91, + 'Close': 65.13, + 'Volume': 7444591 + }, + { + 'Date': '2010/05/28', + 'Open': 64.18, + 'High': 64.18, + 'Low': 64.18, + 'Close': 64.18, + 'Volume': 0 + }, + { + 'Date': '2010/05/31', + 'Open': 64.18, + 'High': 64.18, + 'Low': 64.18, + 'Close': 64.18, + 'Volume': 0 + }, + { + 'Date': '2010/06/01', + 'Open': 64.27, + 'High': 65.2, + 'Low': 62.86, + 'Close': 62.95, + 'Volume': 6318443 + }, + { + 'Date': '2010/06/02', + 'Open': 63.39, + 'High': 64.37, + 'Low': 62.06, + 'Close': 64.34, + 'Volume': 4588144 + }, + { + 'Date': '2010/06/03', + 'Open': 64.84, + 'High': 64.84, + 'Low': 63.51, + 'Close': 64.31, + 'Volume': 3775793 + }, + { + 'Date': '2010/06/04', + 'Open': 63.25, + 'High': 63.41, + 'Low': 60.93, + 'Close': 61.15, + 'Volume': 8228715 + }, + { + 'Date': '2010/06/07', + 'Open': 61.69, + 'High': 61.7, + 'Low': 60.07, + 'Close': 60.11, + 'Volume': 5918574 + }, + { + 'Date': '2010/06/08', + 'Open': 60.33, + 'High': 61.1, + 'Low': 59.84, + 'Close': 61.02, + 'Volume': 7192623 + }, + { + 'Date': '2010/06/09', + 'Open': 61.48, + 'High': 63.18, + 'Low': 61.17, + 'Close': 61.71, + 'Volume': 7729414 + }, + { + 'Date': '2010/06/10', + 'Open': 62.81, + 'High': 64.01, + 'Low': 62.3, + 'Close': 63.89, + 'Volume': 5682835 + }, + { + 'Date': '2010/06/11', + 'Open': 63.16, + 'High': 65.7, + 'Low': 63.15, + 'Close': 65.38, + 'Volume': 8462575 + }, + { + 'Date': '2010/06/14', + 'Open': 66.22, + 'High': 66.55, + 'Low': 64.71, + 'Close': 64.82, + 'Volume': 6000064 + }, + { + 'Date': '2010/06/15', + 'Open': 65.67, + 'High': 67.57, + 'Low': 65.47, + 'Close': 67.48, + 'Volume': 6400775 + }, + { + 'Date': '2010/06/16', + 'Open': 66.93, + 'High': 67.56, + 'Low': 66.6, + 'Close': 67.03, + 'Volume': 4452275 + }, + { + 'Date': '2010/06/17', + 'Open': 67.48, + 'High': 67.49, + 'Low': 65.88, + 'Close': 67.26, + 'Volume': 3637256 + }, + { + 'Date': '2010/06/18', + 'Open': 67.38, + 'High': 68.14, + 'Low': 67.16, + 'Close': 67.96, + 'Volume': 6216603 + }, + { + 'Date': '2010/06/21', + 'Open': 68.95, + 'High': 69.34, + 'Low': 67.57, + 'Close': 67.97, + 'Volume': 4109588 + }, + { + 'Date': '2010/06/22', + 'Open': 67.97, + 'High': 68.47, + 'Low': 66.15, + 'Close': 66.28, + 'Volume': 4188173 + }, + { + 'Date': '2010/06/23', + 'Open': 66.42, + 'High': 67.88, + 'Low': 65.65, + 'Close': 67.45, + 'Volume': 6098515 + }, + { + 'Date': '2010/06/24', + 'Open': 67.17, + 'High': 68.24, + 'Low': 67.14, + 'Close': 67.43, + 'Volume': 7782533 + }, + { + 'Date': '2010/06/25', + 'Open': 67.31, + 'High': 68.77, + 'Low': 66.67, + 'Close': 68.77, + 'Volume': 13325760 + }, + { + 'Date': '2010/06/28', + 'Open': 68.43, + 'High': 68.62, + 'Low': 67.26, + 'Close': 67.3, + 'Volume': 5517259 + }, + { + 'Date': '2010/06/29', + 'Open': 66.11, + 'High': 66.2, + 'Low': 62.56, + 'Close': 63.04, + 'Volume': 9212875 + }, + { + 'Date': '2010/06/30', + 'Open': 63.05, + 'High': 64.21, + 'Low': 62.58, + 'Close': 62.75, + 'Volume': 7102383 + }, + { + 'Date': '2010/07/01', + 'Open': 62.48, + 'High': 62.72, + 'Low': 61.31, + 'Close': 62.26, + 'Volume': 6465874 + }, + { + 'Date': '2010/07/02', + 'Open': 61.94, + 'High': 61.94, + 'Low': 61.94, + 'Close': 61.94, + 'Volume': 0 + }, + { + 'Date': '2010/07/05', + 'Open': 61.94, + 'High': 61.94, + 'Low': 61.94, + 'Close': 61.94, + 'Volume': 0 + }, + { + 'Date': '2010/07/06', + 'Open': 62.71, + 'High': 63.02, + 'Low': 60.65, + 'Close': 61.36, + 'Volume': 5444212 + }, + { + 'Date': '2010/07/07', + 'Open': 61.48, + 'High': 63.37, + 'Low': 61.03, + 'Close': 63.3, + 'Volume': 4785046 + }, + { + 'Date': '2010/07/08', + 'Open': 64.09, + 'High': 64.89, + 'Low': 63.55, + 'Close': 64.73, + 'Volume': 4489385 + }, + { + 'Date': '2010/07/09', + 'Open': 65.2, + 'High': 65.2, + 'Low': 64.01, + 'Close': 64.66, + 'Volume': 3145076 + }, + { + 'Date': '2010/07/12', + 'Open': 64.55, + 'High': 64.98, + 'Low': 64.01, + 'Close': 64.34, + 'Volume': 2299533 + }, + { + 'Date': '2010/07/13', + 'Open': 65.15, + 'High': 65.36, + 'Low': 64.18, + 'Close': 64.43, + 'Volume': 6208260 + }, + { + 'Date': '2010/07/14', + 'Open': 64.29, + 'High': 65.39, + 'Low': 64.05, + 'Close': 64.75, + 'Volume': 3822487 + }, + { + 'Date': '2010/07/15', + 'Open': 65.65, + 'High': 65.78, + 'Low': 63.36, + 'Close': 64.37, + 'Volume': 8069172 + }, + { + 'Date': '2010/07/16', + 'Open': 63.96, + 'High': 64.26, + 'Low': 61.68, + 'Close': 61.9, + 'Volume': 7016315 + }, + { + 'Date': '2010/07/19', + 'Open': 62.72, + 'High': 63.36, + 'Low': 62.04, + 'Close': 63.18, + 'Volume': 5031493 + }, + { + 'Date': '2010/07/20', + 'Open': 62.26, + 'High': 64, + 'Low': 61.83, + 'Close': 63.88, + 'Volume': 5069055 + }, + { + 'Date': '2010/07/21', + 'Open': 64.4, + 'High': 64.81, + 'Low': 62.66, + 'Close': 63.18, + 'Volume': 4459407 + }, + { + 'Date': '2010/07/22', + 'Open': 64.02, + 'High': 67.11, + 'Low': 64.02, + 'Close': 66.6, + 'Volume': 7574451 + }, + { + 'Date': '2010/07/23', + 'Open': 66.49, + 'High': 68.17, + 'Low': 66.36, + 'Close': 67.93, + 'Volume': 5029708 + }, + { + 'Date': '2010/07/26', + 'Open': 68.15, + 'High': 68.99, + 'Low': 68, + 'Close': 68.85, + 'Volume': 5836465 + }, + { + 'Date': '2010/07/27', + 'Open': 69.25, + 'High': 69.75, + 'Low': 68.4, + 'Close': 68.62, + 'Volume': 5687098 + }, + { + 'Date': '2010/07/28', + 'Open': 67.62, + 'High': 68, + 'Low': 66.9, + 'Close': 67.32, + 'Volume': 5540629 + }, + { + 'Date': '2010/07/29', + 'Open': 67.85, + 'High': 68.53, + 'Low': 66.69, + 'Close': 67.22, + 'Volume': 4460227 + }, + { + 'Date': '2010/07/30', + 'Open': 66.61, + 'High': 68.38, + 'Low': 66.47, + 'Close': 68.14, + 'Volume': 6032163 + }, + { + 'Date': '2010/08/02', + 'Open': 69.01, + 'High': 69.93, + 'Low': 68.5, + 'Close': 69.69, + 'Volume': 5430717 + }, + { + 'Date': '2010/08/03', + 'Open': 69.31, + 'High': 70, + 'Low': 68.93, + 'Close': 69.54, + 'Volume': 3778718 + }, + { + 'Date': '2010/08/04', + 'Open': 69.42, + 'High': 69.93, + 'Low': 69.16, + 'Close': 69.25, + 'Volume': 3861191 + }, + { + 'Date': '2010/08/05', + 'Open': 68.73, + 'High': 69.25, + 'Low': 68.33, + 'Close': 68.71, + 'Volume': 4318815 + }, + { + 'Date': '2010/08/06', + 'Open': 68.03, + 'High': 68.72, + 'Low': 67.36, + 'Close': 68.7, + 'Volume': 4498788 + }, + { + 'Date': '2010/08/09', + 'Open': 69.17, + 'High': 69.47, + 'Low': 68.45, + 'Close': 68.99, + 'Volume': 2907790 + }, + { + 'Date': '2010/08/10', + 'Open': 68.29, + 'High': 68.97, + 'Low': 67.54, + 'Close': 68.62, + 'Volume': 4127296 + }, + { + 'Date': '2010/08/11', + 'Open': 67.18, + 'High': 67.26, + 'Low': 64.92, + 'Close': 65.6, + 'Volume': 5230837 + }, + { + 'Date': '2010/08/12', + 'Open': 64.65, + 'High': 65.27, + 'Low': 64.44, + 'Close': 64.7, + 'Volume': 3847607 + }, + { + 'Date': '2010/08/13', + 'Open': 64.59, + 'High': 65.7, + 'Low': 64.54, + 'Close': 64.84, + 'Volume': 3667747 + }, + { + 'Date': '2010/08/16', + 'Open': 64.27, + 'High': 64.93, + 'Low': 63.65, + 'Close': 64.4, + 'Volume': 3042334 + }, + { + 'Date': '2010/08/17', + 'Open': 65.16, + 'High': 66.91, + 'Low': 64.65, + 'Close': 65.99, + 'Volume': 4303899 + }, + { + 'Date': '2010/08/18', + 'Open': 66.05, + 'High': 66.36, + 'Low': 64.99, + 'Close': 66, + 'Volume': 2816059 + }, + { + 'Date': '2010/08/19', + 'Open': 65.74, + 'High': 65.82, + 'Low': 64.15, + 'Close': 64.62, + 'Volume': 4201568 + }, + { + 'Date': '2010/08/20', + 'Open': 64.2, + 'High': 64.73, + 'Low': 63.59, + 'Close': 64.6, + 'Volume': 3865920 + }, + { + 'Date': '2010/08/23', + 'Open': 65.09, + 'High': 65.24, + 'Low': 63.21, + 'Close': 63.3, + 'Volume': 3888194 + }, + { + 'Date': '2010/08/24', + 'Open': 62.55, + 'High': 62.81, + 'Low': 60.53, + 'Close': 60.93, + 'Volume': 9983972 + }, + { + 'Date': '2010/08/25', + 'Open': 60.49, + 'High': 61.11, + 'Low': 59.48, + 'Close': 60.76, + 'Volume': 5144544 + }, + { + 'Date': '2010/08/26', + 'Open': 61.36, + 'High': 62.56, + 'Low': 61.07, + 'Close': 61.32, + 'Volume': 4889769 + }, + { + 'Date': '2010/08/27', + 'Open': 61.13, + 'High': 63.34, + 'Low': 60.57, + 'Close': 63.16, + 'Volume': 6851673 + }, + { + 'Date': '2010/08/30', + 'Open': 63, + 'High': 63.19, + 'Low': 62.1, + 'Close': 62.1, + 'Volume': 3279135 + }, + { + 'Date': '2010/08/31', + 'Open': 62, + 'High': 62.18, + 'Low': 60.8, + 'Close': 61.13, + 'Volume': 5309421 + }, + { + 'Date': '2010/09/01', + 'Open': 61.79, + 'High': 63.09, + 'Low': 61.66, + 'Close': 62.29, + 'Volume': 5688798 + }, + { + 'Date': '2010/09/02', + 'Open': 62.34, + 'High': 63.39, + 'Low': 62.2, + 'Close': 63.39, + 'Volume': 3465719 + }, + { + 'Date': '2010/09/03', + 'Open': 64.64, + 'High': 64.64, + 'Low': 64.64, + 'Close': 64.64, + 'Volume': 0 + }, + { + 'Date': '2010/09/06', + 'Open': 64.64, + 'High': 64.64, + 'Low': 64.64, + 'Close': 64.64, + 'Volume': 0 + }, + { + 'Date': '2010/09/07', + 'Open': 64.25, + 'High': 64.25, + 'Low': 63.29, + 'Close': 63.42, + 'Volume': 2529793 + }, + { + 'Date': '2010/09/08', + 'Open': 63.6, + 'High': 65, + 'Low': 63.58, + 'Close': 64.5, + 'Volume': 3747703 + }, + { + 'Date': '2010/09/09', + 'Open': 65.51, + 'High': 65.63, + 'Low': 62.95, + 'Close': 63.44, + 'Volume': 4190696 + }, + { + 'Date': '2010/09/10', + 'Open': 63.38, + 'High': 64.1, + 'Low': 62.96, + 'Close': 63.84, + 'Volume': 3214772 + }, + { + 'Date': '2010/09/13', + 'Open': 64.73, + 'High': 64.98, + 'Low': 63.92, + 'Close': 64.19, + 'Volume': 3126886 + }, + { + 'Date': '2010/09/14', + 'Open': 64.02, + 'High': 64.35, + 'Low': 62.43, + 'Close': 62.76, + 'Volume': 6025475 + }, + { + 'Date': '2010/09/15', + 'Open': 62.49, + 'High': 62.79, + 'Low': 61.89, + 'Close': 62.73, + 'Volume': 4929167 + }, + { + 'Date': '2010/09/16', + 'Open': 62.39, + 'High': 63.35, + 'Low': 62.2, + 'Close': 62.58, + 'Volume': 4681838 + }, + { + 'Date': '2010/09/17', + 'Open': 63.26, + 'High': 63.34, + 'Low': 62, + 'Close': 62.95, + 'Volume': 10702625 + }, + { + 'Date': '2010/09/20', + 'Open': 62.99, + 'High': 63.9, + 'Low': 62.53, + 'Close': 63.72, + 'Volume': 4187283 + }, + { + 'Date': '2010/09/21', + 'Open': 63.8, + 'High': 64.5, + 'Low': 63.39, + 'Close': 64.23, + 'Volume': 5361146 + }, + { + 'Date': '2010/09/22', + 'Open': 64.38, + 'High': 64.86, + 'Low': 63.63, + 'Close': 63.9, + 'Volume': 3635438 + }, + { + 'Date': '2010/09/23', + 'Open': 63.31, + 'High': 63.49, + 'Low': 62.56, + 'Close': 62.65, + 'Volume': 3656936 + }, + { + 'Date': '2010/09/24', + 'Open': 63.52, + 'High': 64.83, + 'Low': 63.33, + 'Close': 64.6, + 'Volume': 4626836 + }, + { + 'Date': '2010/09/27', + 'Open': 64.61, + 'High': 64.7, + 'Low': 63.8, + 'Close': 63.89, + 'Volume': 2762402 + }, + { + 'Date': '2010/09/28', + 'Open': 63.85, + 'High': 64.67, + 'Low': 62.94, + 'Close': 64.52, + 'Volume': 3583321 + }, + { + 'Date': '2010/09/29', + 'Open': 64.71, + 'High': 66.26, + 'Low': 64.44, + 'Close': 65.97, + 'Volume': 5874689 + }, + { + 'Date': '2010/09/30', + 'Open': 67.09, + 'High': 67.97, + 'Low': 66.05, + 'Close': 66.54, + 'Volume': 8214220 + }, + { + 'Date': '2010/10/01', + 'Open': 67.54, + 'High': 67.98, + 'Low': 66.67, + 'Close': 66.83, + 'Volume': 4489476 + }, + { + 'Date': '2010/10/04', + 'Open': 66.57, + 'High': 67.89, + 'Low': 65.86, + 'Close': 66.33, + 'Volume': 4073665 + }, + { + 'Date': '2010/10/05', + 'Open': 67.02, + 'High': 68.98, + 'Low': 67.02, + 'Close': 68.6, + 'Volume': 7517772 + }, + { + 'Date': '2010/10/06', + 'Open': 68.61, + 'High': 69.39, + 'Low': 68.41, + 'Close': 68.58, + 'Volume': 4719126 + }, + { + 'Date': '2010/10/07', + 'Open': 68.97, + 'High': 69.14, + 'Low': 67.8, + 'Close': 68.46, + 'Volume': 5506142 + }, + { + 'Date': '2010/10/08', + 'Open': 68.47, + 'High': 69.71, + 'Low': 68.15, + 'Close': 69.23, + 'Volume': 3335682 + }, + { + 'Date': '2010/10/11', + 'Open': 69.51, + 'High': 70.25, + 'Low': 69.23, + 'Close': 69.99, + 'Volume': 3469356 + }, + { + 'Date': '2010/10/12', + 'Open': 70.16, + 'High': 70.6, + 'Low': 68.91, + 'Close': 70.22, + 'Volume': 4381517 + }, + { + 'Date': '2010/10/13', + 'Open': 70.73, + 'High': 72.17, + 'Low': 70.66, + 'Close': 71.47, + 'Volume': 6038876 + }, + { + 'Date': '2010/10/14', + 'Open': 71.73, + 'High': 72, + 'Low': 70.85, + 'Close': 71.36, + 'Volume': 3841826 + }, + { + 'Date': '2010/10/15', + 'Open': 71.85, + 'High': 71.9, + 'Low': 70.05, + 'Close': 70.11, + 'Volume': 5641988 + }, + { + 'Date': '2010/10/18', + 'Open': 70.19, + 'High': 71.05, + 'Low': 70.03, + 'Close': 70.23, + 'Volume': 4832596 + }, + { + 'Date': '2010/10/19', + 'Open': 69.57, + 'High': 69.96, + 'Low': 68.35, + 'Close': 69.05, + 'Volume': 4493842 + }, + { + 'Date': '2010/10/20', + 'Open': 70, + 'High': 71.94, + 'Low': 69.57, + 'Close': 71.36, + 'Volume': 8067660 + }, + { + 'Date': '2010/10/21', + 'Open': 71.61, + 'High': 71.88, + 'Low': 70.57, + 'Close': 71.5, + 'Volume': 4630931 + }, + { + 'Date': '2010/10/22', + 'Open': 71.38, + 'High': 71.63, + 'Low': 70.61, + 'Close': 71.26, + 'Volume': 3062553 + }, + { + 'Date': '2010/10/25', + 'Open': 71.68, + 'High': 72.49, + 'Low': 71.47, + 'Close': 71.66, + 'Volume': 4802975 + }, + { + 'Date': '2010/10/26', + 'Open': 71.1, + 'High': 71.65, + 'Low': 70.73, + 'Close': 71.3, + 'Volume': 3547112 + }, + { + 'Date': '2010/10/27', + 'Open': 70.87, + 'High': 71.11, + 'Low': 69.71, + 'Close': 70.86, + 'Volume': 3818178 + }, + { + 'Date': '2010/10/28', + 'Open': 71.3, + 'High': 71.79, + 'Low': 70.35, + 'Close': 71.27, + 'Volume': 4128092 + }, + { + 'Date': '2010/10/29', + 'Open': 71.15, + 'High': 71.46, + 'Low': 70.36, + 'Close': 70.64, + 'Volume': 3202225 + }, + { + 'Date': '2010/11/01', + 'Open': 70.71, + 'High': 71.89, + 'Low': 69.91, + 'Close': 70.48, + 'Volume': 3324632 + }, + { + 'Date': '2010/11/02', + 'Open': 70.85, + 'High': 70.98, + 'Low': 68.8, + 'Close': 69.78, + 'Volume': 6340501 + }, + { + 'Date': '2010/11/03', + 'Open': 69.66, + 'High': 69.73, + 'Low': 68.04, + 'Close': 68.94, + 'Volume': 4676861 + }, + { + 'Date': '2010/11/04', + 'Open': 70, + 'High': 71.58, + 'Low': 69.78, + 'Close': 70.85, + 'Volume': 5758303 + }, + { + 'Date': '2010/11/05', + 'Open': 70.85, + 'High': 71.65, + 'Low': 70.5, + 'Close': 71.27, + 'Volume': 3625799 + }, + { + 'Date': '2010/11/08', + 'Open': 70.06, + 'High': 70.41, + 'Low': 69.75, + 'Close': 70.21, + 'Volume': 4171524 + }, + { + 'Date': '2010/11/09', + 'Open': 70.27, + 'High': 70.55, + 'Low': 68.83, + 'Close': 69.25, + 'Volume': 4587423 + }, + { + 'Date': '2010/11/10', + 'Open': 67.69, + 'High': 67.69, + 'Low': 66.79, + 'Close': 67.07, + 'Volume': 10494604 + }, + { + 'Date': '2010/11/11', + 'Open': 66.55, + 'High': 66.7, + 'Low': 65.04, + 'Close': 65.37, + 'Volume': 10033682 + }, + { + 'Date': '2010/11/12', + 'Open': 65.01, + 'High': 65.25, + 'Low': 63.01, + 'Close': 63.09, + 'Volume': 16721476 + }, + { + 'Date': '2010/11/15', + 'Open': 63.35, + 'High': 64.1, + 'Low': 62.62, + 'Close': 63.61, + 'Volume': 10968680 + }, + { + 'Date': '2010/11/16', + 'Open': 63.35, + 'High': 63.35, + 'Low': 61.84, + 'Close': 62.78, + 'Volume': 9636736 + }, + { + 'Date': '2010/11/17', + 'Open': 62.67, + 'High': 63.02, + 'Low': 62.17, + 'Close': 62.5, + 'Volume': 8173227 + }, + { + 'Date': '2010/11/18', + 'Open': 63.35, + 'High': 64.72, + 'Low': 62.72, + 'Close': 64.61, + 'Volume': 11579001 + }, + { + 'Date': '2010/11/19', + 'Open': 64.53, + 'High': 64.74, + 'Low': 63.39, + 'Close': 63.59, + 'Volume': 8824612 + }, + { + 'Date': '2010/11/22', + 'Open': 63.02, + 'High': 64.17, + 'Low': 62.8, + 'Close': 64.03, + 'Volume': 5917125 + }, + { + 'Date': '2010/11/23', + 'Open': 63.43, + 'High': 64.11, + 'Low': 63.1, + 'Close': 63.6, + 'Volume': 6567822 + }, + { + 'Date': '2010/11/24', + 'Open': 65.41, + 'High': 65.41, + 'Low': 65.41, + 'Close': 65.41, + 'Volume': 0 + }, + { + 'Date': '2010/11/26', + 'Open': 65.09, + 'High': 65.46, + 'Low': 64.67, + 'Close': 64.8, + 'Volume': 2280773 + }, + { + 'Date': '2010/11/29', + 'Open': 64.33, + 'High': 64.7, + 'Low': 63.44, + 'Close': 64.36, + 'Volume': 4385199 + }, + { + 'Date': '2010/11/30', + 'Open': 63.73, + 'High': 64.21, + 'Low': 63.47, + 'Close': 63.77, + 'Volume': 5819079 + }, + { + 'Date': '2010/12/01', + 'Open': 64.66, + 'High': 65.79, + 'Low': 64.52, + 'Close': 65.72, + 'Volume': 7515183 + }, + { + 'Date': '2010/12/02', + 'Open': 65.62, + 'High': 66.8, + 'Low': 65.55, + 'Close': 66.59, + 'Volume': 4768256 + }, + { + 'Date': '2010/12/03', + 'Open': 66.58, + 'High': 66.68, + 'Low': 65.95, + 'Close': 66.54, + 'Volume': 3357522 + }, + { + 'Date': '2010/12/06', + 'Open': 66.41, + 'High': 66.96, + 'Low': 65.97, + 'Close': 66.59, + 'Volume': 3455003 + }, + { + 'Date': '2010/12/07', + 'Open': 67.04, + 'High': 67.39, + 'Low': 66.01, + 'Close': 66.23, + 'Volume': 4739511 + }, + { + 'Date': '2010/12/08', + 'Open': 66.19, + 'High': 66.56, + 'Low': 64.92, + 'Close': 65.18, + 'Volume': 5230594 + }, + { + 'Date': '2010/12/09', + 'Open': 65.61, + 'High': 65.61, + 'Low': 64.4, + 'Close': 64.61, + 'Volume': 5188492 + }, + { + 'Date': '2010/12/10', + 'Open': 64.63, + 'High': 64.77, + 'Low': 63.96, + 'Close': 64.16, + 'Volume': 5501949 + }, + { + 'Date': '2010/12/13', + 'Open': 64.23, + 'High': 64.38, + 'Low': 63.63, + 'Close': 63.79, + 'Volume': 4823758 + }, + { + 'Date': '2010/12/14', + 'Open': 63.85, + 'High': 65.11, + 'Low': 63.68, + 'Close': 64.49, + 'Volume': 6304424 + }, + { + 'Date': '2010/12/15', + 'Open': 64.29, + 'High': 64.69, + 'Low': 64.09, + 'Close': 64.24, + 'Volume': 3439085 + }, + { + 'Date': '2010/12/16', + 'Open': 64.33, + 'High': 64.85, + 'Low': 63.71, + 'Close': 64.4, + 'Volume': 5169047 + }, + { + 'Date': '2010/12/17', + 'Open': 64.89, + 'High': 65.28, + 'Low': 64.35, + 'Close': 65.03, + 'Volume': 8884612 + }, + { + 'Date': '2010/12/20', + 'Open': 64.74, + 'High': 64.77, + 'Low': 62.82, + 'Close': 63.27, + 'Volume': 9710920 + }, + { + 'Date': '2010/12/21', + 'Open': 63.61, + 'High': 64.35, + 'Low': 63.28, + 'Close': 64.19, + 'Volume': 5092820 + }, + { + 'Date': '2010/12/22', + 'Open': 64.45, + 'High': 65.14, + 'Low': 64.01, + 'Close': 64.61, + 'Volume': 5255958 + }, + { + 'Date': '2010/12/23', + 'Open': 65.06, + 'High': 65.06, + 'Low': 65.06, + 'Close': 65.06, + 'Volume': 0 + }, + { + 'Date': '2010/12/27', + 'Open': 64.73, + 'High': 64.91, + 'Low': 64.33, + 'Close': 64.75, + 'Volume': 2549101 + }, + { + 'Date': '2010/12/28', + 'Open': 64.81, + 'High': 65, + 'Low': 64.33, + 'Close': 64.86, + 'Volume': 2643380 + }, + { + 'Date': '2010/12/29', + 'Open': 65, + 'High': 65.2, + 'Low': 64.62, + 'Close': 65.05, + 'Volume': 2505431 + }, + { + 'Date': '2010/12/30', + 'Open': 65.11, + 'High': 65.23, + 'Low': 64.73, + 'Close': 65.01, + 'Volume': 2343020 + }, + { + 'Date': '2010/12/31', + 'Open': 64.9, + 'High': 65.29, + 'Low': 64.62, + 'Close': 65.26, + 'Volume': 2137676 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/date-series/main.js b/vue-options-api-demos/charts/chart/trendlines/date-series/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/date-series/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/date-series/main.vue b/vue-options-api-demos/charts/chart/trendlines/date-series/main.vue new file mode 100644 index 00000000..97f03639 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/date-series/main.vue @@ -0,0 +1,66 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/date-series/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/date-series/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/date-series/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.js b/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.vue b/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.vue new file mode 100644 index 00000000..01fb5f47 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/exponential/categorical/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.js b/vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.vue b/vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.vue new file mode 100644 index 00000000..ecd921a3 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/exponential/scatter/main.vue @@ -0,0 +1,54 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/forecast/main.js b/vue-options-api-demos/charts/chart/trendlines/forecast/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/forecast/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/forecast/main.vue b/vue-options-api-demos/charts/chart/trendlines/forecast/main.vue new file mode 100644 index 00000000..bc22dae1 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/forecast/main.vue @@ -0,0 +1,68 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/forecast/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/forecast/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/forecast/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.js b/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.vue b/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.vue new file mode 100644 index 00000000..e49b2ff3 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/main.vue @@ -0,0 +1,69 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/hidden-legend-item/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.js b/vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.vue b/vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.vue new file mode 100644 index 00000000..7b20d929 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/linear/categorical/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/linear/categorical/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/linear/categorical/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/linear/categorical/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.js b/vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.vue b/vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.vue new file mode 100644 index 00000000..57cef812 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/linear/scatter/main.vue @@ -0,0 +1,54 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.js b/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.vue b/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.vue new file mode 100644 index 00000000..47a28295 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/logarithmic/categorical/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.js b/vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.vue b/vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.vue new file mode 100644 index 00000000..cbb77536 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/logarithmic/scatter/main.vue @@ -0,0 +1,54 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.js b/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.vue b/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.vue new file mode 100644 index 00000000..3e4901bf --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/main.vue @@ -0,0 +1,62 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/moving-average/categorical/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.js b/vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.vue b/vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.vue new file mode 100644 index 00000000..d421c17f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/moving-average/scatter/main.vue @@ -0,0 +1,57 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.js b/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.vue b/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.vue new file mode 100644 index 00000000..dbe11929 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/main.vue @@ -0,0 +1,62 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/polynomial/categorical/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.js b/vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.vue b/vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.vue new file mode 100644 index 00000000..ec905b74 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/polynomial/scatter/main.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/power/categorical/main.js b/vue-options-api-demos/charts/chart/trendlines/power/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/power/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/power/categorical/main.vue b/vue-options-api-demos/charts/chart/trendlines/power/categorical/main.vue new file mode 100644 index 00000000..a9d7a80a --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/power/categorical/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/chart/trendlines/power/categorical/sales-data.js b/vue-options-api-demos/charts/chart/trendlines/power/categorical/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/power/categorical/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/chart/trendlines/power/scatter/main.js b/vue-options-api-demos/charts/chart/trendlines/power/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/power/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/trendlines/power/scatter/main.vue b/vue-options-api-demos/charts/chart/trendlines/power/scatter/main.vue new file mode 100644 index 00000000..1bbe6064 --- /dev/null +++ b/vue-options-api-demos/charts/chart/trendlines/power/scatter/main.vue @@ -0,0 +1,54 @@ + + + diff --git a/vue-options-api-demos/charts/chart/waterfall/main.js b/vue-options-api-demos/charts/chart/waterfall/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/chart/waterfall/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/chart/waterfall/main.vue b/vue-options-api-demos/charts/chart/waterfall/main.vue new file mode 100644 index 00000000..1cc3c858 --- /dev/null +++ b/vue-options-api-demos/charts/chart/waterfall/main.vue @@ -0,0 +1,82 @@ + + + diff --git a/vue-options-api-demos/charts/chart/waterfall/waterfall-data.json b/vue-options-api-demos/charts/chart/waterfall/waterfall-data.json new file mode 100644 index 00000000..a60ac5dd --- /dev/null +++ b/vue-options-api-demos/charts/chart/waterfall/waterfall-data.json @@ -0,0 +1,31 @@ +[{ + "period": "Beginning \n Balance", + "amount": 50000 + }, { + "period": "Jan", + "amount": 17000 + }, { + "period": "Feb", + "amount": 14000 + }, { + "period": "Mar", + "amount": -12000 + }, { + "period": "Q1", + "summary": "runningTotal" + }, { + "period": "Apr", + "amount": -22000 + }, { + "period": "May", + "amount": -18000 + }, { + "period": "Jun", + "amount": 10000 + }, { + "period": "Q2", + "summary": "runningTotal" + }, { + "period": "Ending \n Balance", + "summary": "total" + }] diff --git a/vue-options-api-demos/charts/data-binding/arrays/main.js b/vue-options-api-demos/charts/data-binding/arrays/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/arrays/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/arrays/main.vue b/vue-options-api-demos/charts/data-binding/arrays/main.vue new file mode 100644 index 00000000..ead1f6d4 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/arrays/main.vue @@ -0,0 +1,31 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/category-field/main.js b/vue-options-api-demos/charts/data-binding/category-field/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/category-field/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/category-field/main.vue b/vue-options-api-demos/charts/data-binding/category-field/main.vue new file mode 100644 index 00000000..b2842a81 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/category-field/main.vue @@ -0,0 +1,42 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.js b/vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.vue b/vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.vue new file mode 100644 index 00000000..c00761b3 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/duplicates-aggregate-custom/main.vue @@ -0,0 +1,52 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.js b/vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.vue b/vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.vue new file mode 100644 index 00000000..2af8b341 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/duplicates-aggregate/main.vue @@ -0,0 +1,47 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/duplicates/main.js b/vue-options-api-demos/charts/data-binding/duplicates/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/duplicates/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/duplicates/main.vue b/vue-options-api-demos/charts/data-binding/duplicates/main.vue new file mode 100644 index 00000000..baf42ed2 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/duplicates/main.vue @@ -0,0 +1,46 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/group-objects/main.js b/vue-options-api-demos/charts/data-binding/group-objects/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/group-objects/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/group-objects/main.vue b/vue-options-api-demos/charts/data-binding/group-objects/main.vue new file mode 100644 index 00000000..d57da3db --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/group-objects/main.vue @@ -0,0 +1,72 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/labels/main.js b/vue-options-api-demos/charts/data-binding/labels/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/labels/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/labels/main.vue b/vue-options-api-demos/charts/data-binding/labels/main.vue new file mode 100644 index 00000000..d615fd09 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/labels/main.vue @@ -0,0 +1,36 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.js b/vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.vue b/vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.vue new file mode 100644 index 00000000..d46fcb1e --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/no-data-overlay-children/main.vue @@ -0,0 +1,48 @@ + + + diff --git a/vue-options-api-demos/charts/data-binding/no-data-overlay/main.js b/vue-options-api-demos/charts/data-binding/no-data-overlay/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/no-data-overlay/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/no-data-overlay/main.vue b/vue-options-api-demos/charts/data-binding/no-data-overlay/main.vue new file mode 100644 index 00000000..27a62317 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/no-data-overlay/main.vue @@ -0,0 +1,39 @@ + + + diff --git a/vue-options-api-demos/charts/data-binding/objects/main.js b/vue-options-api-demos/charts/data-binding/objects/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/objects/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/objects/main.vue b/vue-options-api-demos/charts/data-binding/objects/main.vue new file mode 100644 index 00000000..3ae58b7a --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/objects/main.vue @@ -0,0 +1,41 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/data-binding/values/main.js b/vue-options-api-demos/charts/data-binding/values/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/values/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/data-binding/values/main.vue b/vue-options-api-demos/charts/data-binding/values/main.vue new file mode 100644 index 00000000..e0b51977 --- /dev/null +++ b/vue-options-api-demos/charts/data-binding/values/main.vue @@ -0,0 +1,27 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/elements/axes/axis-config/main.js b/vue-options-api-demos/charts/elements/axes/axis-config/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/axis-config/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/axis-config/main.vue b/vue-options-api-demos/charts/elements/axes/axis-config/main.vue new file mode 100644 index 00000000..32c4e150 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/axis-config/main.vue @@ -0,0 +1,44 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/categorical/main.js b/vue-options-api-demos/charts/elements/axes/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/categorical/main.vue b/vue-options-api-demos/charts/elements/axes/categorical/main.vue new file mode 100644 index 00000000..2060dde1 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/categorical/main.vue @@ -0,0 +1,46 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/date-aggregates/main.js b/vue-options-api-demos/charts/elements/axes/date-aggregates/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/date-aggregates/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/date-aggregates/main.vue b/vue-options-api-demos/charts/elements/axes/date-aggregates/main.vue new file mode 100644 index 00000000..c5fd934c --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/date-aggregates/main.vue @@ -0,0 +1,71 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/date-aggregates/weather-data.js b/vue-options-api-demos/charts/elements/axes/date-aggregates/weather-data.js new file mode 100644 index 00000000..bf815e3d --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/date-aggregates/weather-data.js @@ -0,0 +1,220 @@ +const data = () => +[ + { + Timestamp: '2018-01-01T00:00:00.000', + TMax: 3.3, + TMin: -12, + Wind: 5.5, + Rain: 0 + }, + { + Timestamp: '2018-01-02T00:00:00.000', + TMax: 5.2, + TMin: -10, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-03T00:00:00.000', + TMax: 3.2, + TMin: -8, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-04T00:00:00.000', + TMax: 11, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-05T00:00:00.000', + TMax: 9, + TMin: 0, + Wind: 21.7, + Rain: 1.8 + }, + { + Timestamp: '2018-01-06T00:00:00.000', + TMax: 2, + TMin: -1, + Wind: 21.7, + Rain: 19.7 + }, + { + Timestamp: '2018-01-07T00:00:00.000', + TMax: 2, + TMin: -3, + Wind: 24.5, + Rain: 1.3 + }, + { + Timestamp: '2018-01-08T00:00:00.000', + TMax: 3, + TMin: -2, + Wind: 16.4, + Rain: 0.8 + }, + { + Timestamp: '2018-01-09T00:00:00.000', + TMax: 3, + TMin: -7, + Wind: 13.6, + Rain: 0.3 + }, + { + Timestamp: '2018-01-10T00:00:00.000', + TMax: 2.2, + TMin: -8, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-11T00:00:00.000', + TMax: 4, + TMin: -6, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-12T00:00:00.000', + TMax: 5.5, + TMin: -6, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-13T00:00:00.000', + TMax: 2.7, + TMin: -2, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-14T00:00:00.000', + TMax: 0, + TMin: -6, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-15T00:00:00.000', + TMax: -1, + TMin: -6, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-16T00:00:00.000', + TMax: 0, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-17T00:00:00.000', + TMax: 1, + TMin: -7, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-18T00:00:00.000', + TMax: 5, + TMin: -6, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-19T00:00:00.000', + TMax: 6, + TMin: -3, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-20T00:00:00.000', + TMax: 3, + TMin: -3, + Wind: 29.9, + Rain: 7.2 + }, + { + Timestamp: '2018-01-21T00:00:00.000', + TMax: 2.2, + TMin: -7, + Wind: 19, + Rain: 1.5 + }, + { + Timestamp: '2018-01-22T00:00:00.000', + TMax: 6.2, + TMin: -8, + Wind: 8.1, + Rain: 0.3 + }, + { + Timestamp: '2018-01-23T00:00:00.000', + TMax: 6, + TMin: -2, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-24T00:00:00.000', + TMax: 2.4, + TMin: -2, + Wind: 16.4, + Rain: 5.1 + }, + { + Timestamp: '2018-01-25T00:00:00.000', + TMax: -1.4, + TMin: -9, + Wind: 16.4, + Rain: 17.2 + }, + { + Timestamp: '2018-01-26T00:00:00.000', + TMax: 0, + TMin: -8, + Wind: 10.9, + Rain: 5.9 + }, + { + Timestamp: '2018-01-27T00:00:00.000', + TMax: -2.7, + TMin: -9, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-28T00:00:00.000', + TMax: -2.4, + TMin: -14, + Wind: 19, + Rain: 0 + }, + { + Timestamp: '2018-01-29T00:00:00.000', + TMax: -5, + TMin: -20, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-30T00:00:00.000', + TMax: -5.4, + TMin: -22, + Wind: 5.5, + Rain: 0 + } +]; + +export const mockData = () => + data().map(p => { + p.Date = new Date(p.Timestamp); + return p; + } +); diff --git a/vue-options-api-demos/charts/elements/axes/label-rotation/main.js b/vue-options-api-demos/charts/elements/axes/label-rotation/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/label-rotation/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/label-rotation/main.vue b/vue-options-api-demos/charts/elements/axes/label-rotation/main.vue new file mode 100644 index 00000000..be8e00a8 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/label-rotation/main.vue @@ -0,0 +1,52 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/label-rotation/weather-data.js b/vue-options-api-demos/charts/elements/axes/label-rotation/weather-data.js new file mode 100644 index 00000000..bf815e3d --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/label-rotation/weather-data.js @@ -0,0 +1,220 @@ +const data = () => +[ + { + Timestamp: '2018-01-01T00:00:00.000', + TMax: 3.3, + TMin: -12, + Wind: 5.5, + Rain: 0 + }, + { + Timestamp: '2018-01-02T00:00:00.000', + TMax: 5.2, + TMin: -10, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-03T00:00:00.000', + TMax: 3.2, + TMin: -8, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-04T00:00:00.000', + TMax: 11, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-05T00:00:00.000', + TMax: 9, + TMin: 0, + Wind: 21.7, + Rain: 1.8 + }, + { + Timestamp: '2018-01-06T00:00:00.000', + TMax: 2, + TMin: -1, + Wind: 21.7, + Rain: 19.7 + }, + { + Timestamp: '2018-01-07T00:00:00.000', + TMax: 2, + TMin: -3, + Wind: 24.5, + Rain: 1.3 + }, + { + Timestamp: '2018-01-08T00:00:00.000', + TMax: 3, + TMin: -2, + Wind: 16.4, + Rain: 0.8 + }, + { + Timestamp: '2018-01-09T00:00:00.000', + TMax: 3, + TMin: -7, + Wind: 13.6, + Rain: 0.3 + }, + { + Timestamp: '2018-01-10T00:00:00.000', + TMax: 2.2, + TMin: -8, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-11T00:00:00.000', + TMax: 4, + TMin: -6, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-12T00:00:00.000', + TMax: 5.5, + TMin: -6, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-13T00:00:00.000', + TMax: 2.7, + TMin: -2, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-14T00:00:00.000', + TMax: 0, + TMin: -6, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-15T00:00:00.000', + TMax: -1, + TMin: -6, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-16T00:00:00.000', + TMax: 0, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-17T00:00:00.000', + TMax: 1, + TMin: -7, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-18T00:00:00.000', + TMax: 5, + TMin: -6, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-19T00:00:00.000', + TMax: 6, + TMin: -3, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-20T00:00:00.000', + TMax: 3, + TMin: -3, + Wind: 29.9, + Rain: 7.2 + }, + { + Timestamp: '2018-01-21T00:00:00.000', + TMax: 2.2, + TMin: -7, + Wind: 19, + Rain: 1.5 + }, + { + Timestamp: '2018-01-22T00:00:00.000', + TMax: 6.2, + TMin: -8, + Wind: 8.1, + Rain: 0.3 + }, + { + Timestamp: '2018-01-23T00:00:00.000', + TMax: 6, + TMin: -2, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-24T00:00:00.000', + TMax: 2.4, + TMin: -2, + Wind: 16.4, + Rain: 5.1 + }, + { + Timestamp: '2018-01-25T00:00:00.000', + TMax: -1.4, + TMin: -9, + Wind: 16.4, + Rain: 17.2 + }, + { + Timestamp: '2018-01-26T00:00:00.000', + TMax: 0, + TMin: -8, + Wind: 10.9, + Rain: 5.9 + }, + { + Timestamp: '2018-01-27T00:00:00.000', + TMax: -2.7, + TMin: -9, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-28T00:00:00.000', + TMax: -2.4, + TMin: -14, + Wind: 19, + Rain: 0 + }, + { + Timestamp: '2018-01-29T00:00:00.000', + TMax: -5, + TMin: -20, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-30T00:00:00.000', + TMax: -5.4, + TMin: -22, + Wind: 5.5, + Rain: 0 + } +]; + +export const mockData = () => + data().map(p => { + p.Date = new Date(p.Timestamp); + return p; + } +); diff --git a/vue-options-api-demos/charts/elements/axes/max-divisions/main.js b/vue-options-api-demos/charts/elements/axes/max-divisions/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/max-divisions/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/max-divisions/main.vue b/vue-options-api-demos/charts/elements/axes/max-divisions/main.vue new file mode 100644 index 00000000..60bbdb23 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/max-divisions/main.vue @@ -0,0 +1,57 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/max-divisions/weather-data.js b/vue-options-api-demos/charts/elements/axes/max-divisions/weather-data.js new file mode 100644 index 00000000..bf815e3d --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/max-divisions/weather-data.js @@ -0,0 +1,220 @@ +const data = () => +[ + { + Timestamp: '2018-01-01T00:00:00.000', + TMax: 3.3, + TMin: -12, + Wind: 5.5, + Rain: 0 + }, + { + Timestamp: '2018-01-02T00:00:00.000', + TMax: 5.2, + TMin: -10, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-03T00:00:00.000', + TMax: 3.2, + TMin: -8, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-04T00:00:00.000', + TMax: 11, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-05T00:00:00.000', + TMax: 9, + TMin: 0, + Wind: 21.7, + Rain: 1.8 + }, + { + Timestamp: '2018-01-06T00:00:00.000', + TMax: 2, + TMin: -1, + Wind: 21.7, + Rain: 19.7 + }, + { + Timestamp: '2018-01-07T00:00:00.000', + TMax: 2, + TMin: -3, + Wind: 24.5, + Rain: 1.3 + }, + { + Timestamp: '2018-01-08T00:00:00.000', + TMax: 3, + TMin: -2, + Wind: 16.4, + Rain: 0.8 + }, + { + Timestamp: '2018-01-09T00:00:00.000', + TMax: 3, + TMin: -7, + Wind: 13.6, + Rain: 0.3 + }, + { + Timestamp: '2018-01-10T00:00:00.000', + TMax: 2.2, + TMin: -8, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-11T00:00:00.000', + TMax: 4, + TMin: -6, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-12T00:00:00.000', + TMax: 5.5, + TMin: -6, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-13T00:00:00.000', + TMax: 2.7, + TMin: -2, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-14T00:00:00.000', + TMax: 0, + TMin: -6, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-15T00:00:00.000', + TMax: -1, + TMin: -6, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-16T00:00:00.000', + TMax: 0, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-17T00:00:00.000', + TMax: 1, + TMin: -7, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-18T00:00:00.000', + TMax: 5, + TMin: -6, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-19T00:00:00.000', + TMax: 6, + TMin: -3, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-20T00:00:00.000', + TMax: 3, + TMin: -3, + Wind: 29.9, + Rain: 7.2 + }, + { + Timestamp: '2018-01-21T00:00:00.000', + TMax: 2.2, + TMin: -7, + Wind: 19, + Rain: 1.5 + }, + { + Timestamp: '2018-01-22T00:00:00.000', + TMax: 6.2, + TMin: -8, + Wind: 8.1, + Rain: 0.3 + }, + { + Timestamp: '2018-01-23T00:00:00.000', + TMax: 6, + TMin: -2, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-24T00:00:00.000', + TMax: 2.4, + TMin: -2, + Wind: 16.4, + Rain: 5.1 + }, + { + Timestamp: '2018-01-25T00:00:00.000', + TMax: -1.4, + TMin: -9, + Wind: 16.4, + Rain: 17.2 + }, + { + Timestamp: '2018-01-26T00:00:00.000', + TMax: 0, + TMin: -8, + Wind: 10.9, + Rain: 5.9 + }, + { + Timestamp: '2018-01-27T00:00:00.000', + TMax: -2.7, + TMin: -9, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-28T00:00:00.000', + TMax: -2.4, + TMin: -14, + Wind: 19, + Rain: 0 + }, + { + Timestamp: '2018-01-29T00:00:00.000', + TMax: -5, + TMin: -20, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-30T00:00:00.000', + TMax: -5.4, + TMin: -22, + Wind: 5.5, + Rain: 0 + } +]; + +export const mockData = () => + data().map(p => { + p.Date = new Date(p.Timestamp); + return p; + } +); diff --git a/vue-options-api-demos/charts/elements/axes/multi-axis/main.js b/vue-options-api-demos/charts/elements/axes/multi-axis/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/multi-axis/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/multi-axis/main.vue b/vue-options-api-demos/charts/elements/axes/multi-axis/main.vue new file mode 100644 index 00000000..46063d72 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/multi-axis/main.vue @@ -0,0 +1,162 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/range-labels/covid-data.json b/vue-options-api-demos/charts/elements/axes/range-labels/covid-data.json new file mode 100644 index 00000000..55b698ec --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/range-labels/covid-data.json @@ -0,0 +1,593 @@ +[ + { + "NewCases": 41, + "Timestamp": 1578700800000 + }, + { + "NewCases": 0, + "Timestamp": 1578787200000 + }, + { + "NewCases": 1, + "Timestamp": 1578873600000 + }, + { + "NewCases": 1, + "Timestamp": 1578960000000 + }, + { + "NewCases": 0, + "Timestamp": 1579046400000 + }, + { + "NewCases": 0, + "Timestamp": 1579132800000 + }, + { + "NewCases": 5, + "Timestamp": 1579219200000 + }, + { + "NewCases": 17, + "Timestamp": 1579305600000 + }, + { + "NewCases": 60, + "Timestamp": 1579392000000 + }, + { + "NewCases": 78, + "Timestamp": 1579478400000 + }, + { + "NewCases": 93, + "Timestamp": 1579564800000 + }, + { + "NewCases": 154, + "Timestamp": 1579651200000 + }, + { + "NewCases": 133, + "Timestamp": 1579737600000 + }, + { + "NewCases": 271, + "Timestamp": 1579824000000 + }, + { + "NewCases": 469, + "Timestamp": 1579910400000 + }, + { + "NewCases": 698, + "Timestamp": 1579996800000 + }, + { + "NewCases": 785, + "Timestamp": 1580083200000 + }, + { + "NewCases": 1789, + "Timestamp": 1580169600000 + }, + { + "NewCases": 1481, + "Timestamp": 1580256000000 + }, + { + "NewCases": 1760, + "Timestamp": 1580342400000 + }, + { + "NewCases": 2011, + "Timestamp": 1580428800000 + }, + { + "NewCases": 2115, + "Timestamp": 1580515200000 + }, + { + "NewCases": 2597, + "Timestamp": 1580601600000 + }, + { + "NewCases": 2832, + "Timestamp": 1580688000000 + }, + { + "NewCases": 3258, + "Timestamp": 1580774400000 + }, + { + "NewCases": 3914, + "Timestamp": 1580860800000 + }, + { + "NewCases": 3722, + "Timestamp": 1580947200000 + }, + { + "NewCases": 3201, + "Timestamp": 1581033600000 + }, + { + "NewCases": 3413, + "Timestamp": 1581120000000 + }, + { + "NewCases": 2670, + "Timestamp": 1581206400000 + }, + { + "NewCases": 3058, + "Timestamp": 1581292800000 + }, + { + "NewCases": 2482, + "Timestamp": 1581379200000 + }, + { + "NewCases": 2066, + "Timestamp": 1581465600000 + }, + { + "NewCases": 15212, + "Timestamp": 1581552000000 + }, + { + "NewCases": 4068, + "Timestamp": 1581638400000 + }, + { + "NewCases": 2732, + "Timestamp": 1581724800000 + }, + { + "NewCases": 2090, + "Timestamp": 1581811200000 + }, + { + "NewCases": 2161, + "Timestamp": 1581897600000 + }, + { + "NewCases": 1993, + "Timestamp": 1581984000000 + }, + { + "NewCases": 1856, + "Timestamp": 1582070400000 + }, + { + "NewCases": 486, + "Timestamp": 1582156800000 + }, + { + "NewCases": 1044, + "Timestamp": 1582243200000 + }, + { + "NewCases": 1109, + "Timestamp": 1582329600000 + }, + { + "NewCases": 1020, + "Timestamp": 1582416000000 + }, + { + "NewCases": 619, + "Timestamp": 1582502400000 + }, + { + "NewCases": 825, + "Timestamp": 1582588800000 + }, + { + "NewCases": 927, + "Timestamp": 1582675200000 + }, + { + "NewCases": 1376, + "Timestamp": 1582761600000 + }, + { + "NewCases": 1431, + "Timestamp": 1582848000000 + }, + { + "NewCases": 1827, + "Timestamp": 1582934400000 + }, + { + "NewCases": 1880, + "Timestamp": 1583020800000 + }, + { + "NewCases": 2296, + "Timestamp": 1583107200000 + }, + { + "NewCases": 2293, + "Timestamp": 1583193600000 + }, + { + "NewCases": 2197, + "Timestamp": 1583280000000 + }, + { + "NewCases": 2726, + "Timestamp": 1583366400000 + }, + { + "NewCases": 3911, + "Timestamp": 1583452800000 + }, + { + "NewCases": 3809, + "Timestamp": 1583539200000 + }, + { + "NewCases": 3931, + "Timestamp": 1583625600000 + }, + { + "NewCases": 4332, + "Timestamp": 1583712000000 + }, + { + "NewCases": 4460, + "Timestamp": 1583798400000 + }, + { + "NewCases": 6315, + "Timestamp": 1583884800000 + }, + { + "NewCases": 6682, + "Timestamp": 1583971200000 + }, + { + "NewCases": 10153, + "Timestamp": 1584057600000 + }, + { + "NewCases": 11793, + "Timestamp": 1584144000000 + }, + { + "NewCases": 12472, + "Timestamp": 1584230400000 + }, + { + "NewCases": 10749, + "Timestamp": 1584316800000 + }, + { + "NewCases": 15523, + "Timestamp": 1584403200000 + }, + { + "NewCases": 18365, + "Timestamp": 1584489600000 + }, + { + "NewCases": 24256, + "Timestamp": 1584576000000 + }, + { + "NewCases": 32003, + "Timestamp": 1584662400000 + }, + { + "NewCases": 26069, + "Timestamp": 1584748800000 + }, + { + "NewCases": 1944, + "Timestamp": 1584835200000 + }, + { + "NewCases": 40898, + "Timestamp": 1584921600000 + }, + { + "NewCases": 51862, + "Timestamp": 1585008000000 + }, + { + "NewCases": 29810, + "Timestamp": 1585094400000 + }, + { + "NewCases": 54655, + "Timestamp": 1585180800000 + }, + { + "NewCases": 41366, + "Timestamp": 1585267200000 + }, + { + "NewCases": 62724, + "Timestamp": 1585353600000 + }, + { + "NewCases": 62705, + "Timestamp": 1585440000000 + }, + { + "NewCases": 59160, + "Timestamp": 1585526400000 + }, + { + "NewCases": 57643, + "Timestamp": 1585612800000 + }, + { + "NewCases": 72471, + "Timestamp": 1585699200000 + }, + { + "NewCases": 72901, + "Timestamp": 1585785600000 + }, + { + "NewCases": 75944, + "Timestamp": 1585872000000 + }, + { + "NewCases": 79908, + "Timestamp": 1585958400000 + }, + { + "NewCases": 80692, + "Timestamp": 1586044800000 + }, + { + "NewCases": 77617, + "Timestamp": 1586131200000 + }, + { + "NewCases": 68465, + "Timestamp": 1586217600000 + }, + { + "NewCases": 73849, + "Timestamp": 1586304000000 + }, + { + "NewCases": 82736, + "Timestamp": 1586390400000 + }, + { + "NewCases": 84635, + "Timestamp": 1586476800000 + }, + { + "NewCases": 90778, + "Timestamp": 1586563200000 + }, + { + "NewCases": 84634, + "Timestamp": 1586649600000 + }, + { + "NewCases": 77274, + "Timestamp": 1586736000000 + }, + { + "NewCases": 71545, + "Timestamp": 1586822400000 + }, + { + "NewCases": 73220, + "Timestamp": 1586908800000 + }, + { + "NewCases": 76794, + "Timestamp": 1586995200000 + }, + { + "NewCases": 81839, + "Timestamp": 1587081600000 + }, + { + "NewCases": 84353, + "Timestamp": 1587168000000 + }, + { + "NewCases": 78522, + "Timestamp": 1587254400000 + }, + { + "NewCases": 70345, + "Timestamp": 1587340800000 + }, + { + "NewCases": 83101, + "Timestamp": 1587427200000 + }, + { + "NewCases": 72107, + "Timestamp": 1587513600000 + }, + { + "NewCases": 72752, + "Timestamp": 1587600000000 + }, + { + "NewCases": 80220, + "Timestamp": 1587686400000 + }, + { + "NewCases": 89313, + "Timestamp": 1587772800000 + }, + { + "NewCases": 85505, + "Timestamp": 1587859200000 + }, + { + "NewCases": 87138, + "Timestamp": 1587945600000 + }, + { + "NewCases": 73759, + "Timestamp": 1588032000000 + }, + { + "NewCases": 66321, + "Timestamp": 1588118400000 + }, + { + "NewCases": 72955, + "Timestamp": 1588204800000 + }, + { + "NewCases": 85008, + "Timestamp": 1588291200000 + }, + { + "NewCases": 90578, + "Timestamp": 1588377600000 + }, + { + "NewCases": 83985, + "Timestamp": 1588464000000 + }, + { + "NewCases": 85984, + "Timestamp": 1588550400000 + }, + { + "NewCases": 82906, + "Timestamp": 1588636800000 + }, + { + "NewCases": 70578, + "Timestamp": 1588723200000 + }, + { + "NewCases": 83835, + "Timestamp": 1588809600000 + }, + { + "NewCases": 88245, + "Timestamp": 1588896000000 + }, + { + "NewCases": 94857, + "Timestamp": 1588982400000 + }, + { + "NewCases": 89086, + "Timestamp": 1589068800000 + }, + { + "NewCases": 88684, + "Timestamp": 1589155200000 + }, + { + "NewCases": 81413, + "Timestamp": 1589241600000 + }, + { + "NewCases": 75740, + "Timestamp": 1589328000000 + }, + { + "NewCases": 82566, + "Timestamp": 1589414400000 + }, + { + "NewCases": 88685, + "Timestamp": 1589500800000 + }, + { + "NewCases": 92967, + "Timestamp": 1589587200000 + }, + { + "NewCases": 95802, + "Timestamp": 1589673600000 + }, + { + "NewCases": 103325, + "Timestamp": 1589760000000 + }, + { + "NewCases": 74696, + "Timestamp": 1589846400000 + }, + { + "NewCases": 90054, + "Timestamp": 1589932800000 + }, + { + "NewCases": 102103, + "Timestamp": 1590019200000 + }, + { + "NewCases": 91060, + "Timestamp": 1590105600000 + }, + { + "NewCases": 107563, + "Timestamp": 1590192000000 + }, + { + "NewCases": 104409, + "Timestamp": 1590278400000 + }, + { + "NewCases": 102660, + "Timestamp": 1590364800000 + }, + { + "NewCases": 88121, + "Timestamp": 1590451200000 + }, + { + "NewCases": 94577, + "Timestamp": 1590537600000 + }, + { + "NewCases": 96393, + "Timestamp": 1590624000000 + }, + { + "NewCases": 111464, + "Timestamp": 1590710400000 + }, + { + "NewCases": 116834, + "Timestamp": 1590796800000 + }, + { + "NewCases": 116079, + "Timestamp": 1590883200000 + }, + { + "NewCases": 124080, + "Timestamp": 1590969600000 + }, + { + "NewCases": 113338, + "Timestamp": 1591056000000 + }, + { + "NewCases": 93246, + "Timestamp": 1591142400000 + }, + { + "NewCases": 129281, + "Timestamp": 1591228800000 + }, + { + "NewCases": 118528, + "Timestamp": 1591315200000 + }, + { + "NewCases": 127943, + "Timestamp": 1591401600000 + }] \ No newline at end of file diff --git a/vue-options-api-demos/charts/elements/axes/range-labels/main.js b/vue-options-api-demos/charts/elements/axes/range-labels/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/range-labels/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/range-labels/main.vue b/vue-options-api-demos/charts/elements/axes/range-labels/main.vue new file mode 100644 index 00000000..b773d1be --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/range-labels/main.vue @@ -0,0 +1,92 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/scatter/main.js b/vue-options-api-demos/charts/elements/axes/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/scatter/main.vue b/vue-options-api-demos/charts/elements/axes/scatter/main.vue new file mode 100644 index 00000000..e6d91dd1 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/scatter/main.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/time-intervals/main.js b/vue-options-api-demos/charts/elements/axes/time-intervals/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/time-intervals/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/time-intervals/main.vue b/vue-options-api-demos/charts/elements/axes/time-intervals/main.vue new file mode 100644 index 00000000..df32352e --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/time-intervals/main.vue @@ -0,0 +1,69 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/time-intervals/weather-data.js b/vue-options-api-demos/charts/elements/axes/time-intervals/weather-data.js new file mode 100644 index 00000000..bf815e3d --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/time-intervals/weather-data.js @@ -0,0 +1,220 @@ +const data = () => +[ + { + Timestamp: '2018-01-01T00:00:00.000', + TMax: 3.3, + TMin: -12, + Wind: 5.5, + Rain: 0 + }, + { + Timestamp: '2018-01-02T00:00:00.000', + TMax: 5.2, + TMin: -10, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-03T00:00:00.000', + TMax: 3.2, + TMin: -8, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-04T00:00:00.000', + TMax: 11, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-05T00:00:00.000', + TMax: 9, + TMin: 0, + Wind: 21.7, + Rain: 1.8 + }, + { + Timestamp: '2018-01-06T00:00:00.000', + TMax: 2, + TMin: -1, + Wind: 21.7, + Rain: 19.7 + }, + { + Timestamp: '2018-01-07T00:00:00.000', + TMax: 2, + TMin: -3, + Wind: 24.5, + Rain: 1.3 + }, + { + Timestamp: '2018-01-08T00:00:00.000', + TMax: 3, + TMin: -2, + Wind: 16.4, + Rain: 0.8 + }, + { + Timestamp: '2018-01-09T00:00:00.000', + TMax: 3, + TMin: -7, + Wind: 13.6, + Rain: 0.3 + }, + { + Timestamp: '2018-01-10T00:00:00.000', + TMax: 2.2, + TMin: -8, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-11T00:00:00.000', + TMax: 4, + TMin: -6, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-12T00:00:00.000', + TMax: 5.5, + TMin: -6, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-13T00:00:00.000', + TMax: 2.7, + TMin: -2, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-14T00:00:00.000', + TMax: 0, + TMin: -6, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-15T00:00:00.000', + TMax: -1, + TMin: -6, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-16T00:00:00.000', + TMax: 0, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-17T00:00:00.000', + TMax: 1, + TMin: -7, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-18T00:00:00.000', + TMax: 5, + TMin: -6, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-19T00:00:00.000', + TMax: 6, + TMin: -3, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-20T00:00:00.000', + TMax: 3, + TMin: -3, + Wind: 29.9, + Rain: 7.2 + }, + { + Timestamp: '2018-01-21T00:00:00.000', + TMax: 2.2, + TMin: -7, + Wind: 19, + Rain: 1.5 + }, + { + Timestamp: '2018-01-22T00:00:00.000', + TMax: 6.2, + TMin: -8, + Wind: 8.1, + Rain: 0.3 + }, + { + Timestamp: '2018-01-23T00:00:00.000', + TMax: 6, + TMin: -2, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-24T00:00:00.000', + TMax: 2.4, + TMin: -2, + Wind: 16.4, + Rain: 5.1 + }, + { + Timestamp: '2018-01-25T00:00:00.000', + TMax: -1.4, + TMin: -9, + Wind: 16.4, + Rain: 17.2 + }, + { + Timestamp: '2018-01-26T00:00:00.000', + TMax: 0, + TMin: -8, + Wind: 10.9, + Rain: 5.9 + }, + { + Timestamp: '2018-01-27T00:00:00.000', + TMax: -2.7, + TMin: -9, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-28T00:00:00.000', + TMax: -2.4, + TMin: -14, + Wind: 19, + Rain: 0 + }, + { + Timestamp: '2018-01-29T00:00:00.000', + TMax: -5, + TMin: -20, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-30T00:00:00.000', + TMax: -5.4, + TMin: -22, + Wind: 5.5, + Rain: 0 + } +]; + +export const mockData = () => + data().map(p => { + p.Date = new Date(p.Timestamp); + return p; + } +); diff --git a/vue-options-api-demos/charts/elements/axes/time-series/main.js b/vue-options-api-demos/charts/elements/axes/time-series/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/time-series/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/axes/time-series/main.vue b/vue-options-api-demos/charts/elements/axes/time-series/main.vue new file mode 100644 index 00000000..d809470f --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/time-series/main.vue @@ -0,0 +1,48 @@ + + + diff --git a/vue-options-api-demos/charts/elements/axes/time-series/weather-data.js b/vue-options-api-demos/charts/elements/axes/time-series/weather-data.js new file mode 100644 index 00000000..bf815e3d --- /dev/null +++ b/vue-options-api-demos/charts/elements/axes/time-series/weather-data.js @@ -0,0 +1,220 @@ +const data = () => +[ + { + Timestamp: '2018-01-01T00:00:00.000', + TMax: 3.3, + TMin: -12, + Wind: 5.5, + Rain: 0 + }, + { + Timestamp: '2018-01-02T00:00:00.000', + TMax: 5.2, + TMin: -10, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-03T00:00:00.000', + TMax: 3.2, + TMin: -8, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-04T00:00:00.000', + TMax: 11, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-05T00:00:00.000', + TMax: 9, + TMin: 0, + Wind: 21.7, + Rain: 1.8 + }, + { + Timestamp: '2018-01-06T00:00:00.000', + TMax: 2, + TMin: -1, + Wind: 21.7, + Rain: 19.7 + }, + { + Timestamp: '2018-01-07T00:00:00.000', + TMax: 2, + TMin: -3, + Wind: 24.5, + Rain: 1.3 + }, + { + Timestamp: '2018-01-08T00:00:00.000', + TMax: 3, + TMin: -2, + Wind: 16.4, + Rain: 0.8 + }, + { + Timestamp: '2018-01-09T00:00:00.000', + TMax: 3, + TMin: -7, + Wind: 13.6, + Rain: 0.3 + }, + { + Timestamp: '2018-01-10T00:00:00.000', + TMax: 2.2, + TMin: -8, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-11T00:00:00.000', + TMax: 4, + TMin: -6, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-12T00:00:00.000', + TMax: 5.5, + TMin: -6, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-13T00:00:00.000', + TMax: 2.7, + TMin: -2, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-14T00:00:00.000', + TMax: 0, + TMin: -6, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-15T00:00:00.000', + TMax: -1, + TMin: -6, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-16T00:00:00.000', + TMax: 0, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-17T00:00:00.000', + TMax: 1, + TMin: -7, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-18T00:00:00.000', + TMax: 5, + TMin: -6, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-19T00:00:00.000', + TMax: 6, + TMin: -3, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-20T00:00:00.000', + TMax: 3, + TMin: -3, + Wind: 29.9, + Rain: 7.2 + }, + { + Timestamp: '2018-01-21T00:00:00.000', + TMax: 2.2, + TMin: -7, + Wind: 19, + Rain: 1.5 + }, + { + Timestamp: '2018-01-22T00:00:00.000', + TMax: 6.2, + TMin: -8, + Wind: 8.1, + Rain: 0.3 + }, + { + Timestamp: '2018-01-23T00:00:00.000', + TMax: 6, + TMin: -2, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-24T00:00:00.000', + TMax: 2.4, + TMin: -2, + Wind: 16.4, + Rain: 5.1 + }, + { + Timestamp: '2018-01-25T00:00:00.000', + TMax: -1.4, + TMin: -9, + Wind: 16.4, + Rain: 17.2 + }, + { + Timestamp: '2018-01-26T00:00:00.000', + TMax: 0, + TMin: -8, + Wind: 10.9, + Rain: 5.9 + }, + { + Timestamp: '2018-01-27T00:00:00.000', + TMax: -2.7, + TMin: -9, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-28T00:00:00.000', + TMax: -2.4, + TMin: -14, + Wind: 19, + Rain: 0 + }, + { + Timestamp: '2018-01-29T00:00:00.000', + TMax: -5, + TMin: -20, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-30T00:00:00.000', + TMax: -5.4, + TMin: -22, + Wind: 5.5, + Rain: 0 + } +]; + +export const mockData = () => + data().map(p => { + p.Date = new Date(p.Timestamp); + return p; + } +); diff --git a/vue-options-api-demos/charts/elements/chart-area/main.js b/vue-options-api-demos/charts/elements/chart-area/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/chart-area/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/chart-area/main.vue b/vue-options-api-demos/charts/elements/chart-area/main.vue new file mode 100644 index 00000000..4708a693 --- /dev/null +++ b/vue-options-api-demos/charts/elements/chart-area/main.vue @@ -0,0 +1,33 @@ + + + diff --git a/vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.js b/vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.vue b/vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.vue new file mode 100644 index 00000000..d4f49ee3 --- /dev/null +++ b/vue-options-api-demos/charts/elements/crosshairs/cursor-values/main.vue @@ -0,0 +1,65 @@ + + + diff --git a/vue-options-api-demos/charts/elements/crosshairs/overview/main.js b/vue-options-api-demos/charts/elements/crosshairs/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/crosshairs/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/crosshairs/overview/main.vue b/vue-options-api-demos/charts/elements/crosshairs/overview/main.vue new file mode 100644 index 00000000..7272450d --- /dev/null +++ b/vue-options-api-demos/charts/elements/crosshairs/overview/main.vue @@ -0,0 +1,60 @@ + + + diff --git a/vue-options-api-demos/charts/elements/error-bars/array-values/main.js b/vue-options-api-demos/charts/elements/error-bars/array-values/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/array-values/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/error-bars/array-values/main.vue b/vue-options-api-demos/charts/elements/error-bars/array-values/main.vue new file mode 100644 index 00000000..a4594733 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/array-values/main.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-options-api-demos/charts/elements/error-bars/custom/main.js b/vue-options-api-demos/charts/elements/error-bars/custom/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/custom/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/error-bars/custom/main.vue b/vue-options-api-demos/charts/elements/error-bars/custom/main.vue new file mode 100644 index 00000000..10b2d7d0 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/custom/main.vue @@ -0,0 +1,39 @@ + + + diff --git a/vue-options-api-demos/charts/elements/error-bars/numeric-values/main.js b/vue-options-api-demos/charts/elements/error-bars/numeric-values/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/numeric-values/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/error-bars/numeric-values/main.vue b/vue-options-api-demos/charts/elements/error-bars/numeric-values/main.vue new file mode 100644 index 00000000..487bbd27 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/numeric-values/main.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-options-api-demos/charts/elements/error-bars/overview/main.js b/vue-options-api-demos/charts/elements/error-bars/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/error-bars/overview/main.vue b/vue-options-api-demos/charts/elements/error-bars/overview/main.vue new file mode 100644 index 00000000..a6c042a2 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/overview/main.vue @@ -0,0 +1,52 @@ + + + diff --git a/vue-options-api-demos/charts/elements/error-bars/percentage-values/main.js b/vue-options-api-demos/charts/elements/error-bars/percentage-values/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/percentage-values/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/error-bars/percentage-values/main.vue b/vue-options-api-demos/charts/elements/error-bars/percentage-values/main.vue new file mode 100644 index 00000000..38ad4dd7 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/percentage-values/main.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-options-api-demos/charts/elements/error-bars/scatter/main.js b/vue-options-api-demos/charts/elements/error-bars/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/error-bars/scatter/main.vue b/vue-options-api-demos/charts/elements/error-bars/scatter/main.vue new file mode 100644 index 00000000..8acc67d4 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/scatter/main.vue @@ -0,0 +1,41 @@ + + + diff --git a/vue-options-api-demos/charts/elements/error-bars/statistical-values/main.js b/vue-options-api-demos/charts/elements/error-bars/statistical-values/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/statistical-values/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/error-bars/statistical-values/main.vue b/vue-options-api-demos/charts/elements/error-bars/statistical-values/main.vue new file mode 100644 index 00000000..a2ae07a9 --- /dev/null +++ b/vue-options-api-demos/charts/elements/error-bars/statistical-values/main.vue @@ -0,0 +1,35 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/override-axis-labels/main.js b/vue-options-api-demos/charts/elements/labels/override-axis-labels/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/override-axis-labels/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/override-axis-labels/main.vue b/vue-options-api-demos/charts/elements/labels/override-axis-labels/main.vue new file mode 100644 index 00000000..ce19edf3 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/override-axis-labels/main.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/override-series-labels/main.js b/vue-options-api-demos/charts/elements/labels/override-series-labels/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/override-series-labels/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/override-series-labels/main.vue b/vue-options-api-demos/charts/elements/labels/override-series-labels/main.vue new file mode 100644 index 00000000..a22bd145 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/override-series-labels/main.vue @@ -0,0 +1,40 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/style-axis/main.js b/vue-options-api-demos/charts/elements/labels/style-axis/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-axis/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/style-axis/main.vue b/vue-options-api-demos/charts/elements/labels/style-axis/main.vue new file mode 100644 index 00000000..9b0745f5 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-axis/main.vue @@ -0,0 +1,52 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/style-currency-axis/main.js b/vue-options-api-demos/charts/elements/labels/style-currency-axis/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-currency-axis/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/style-currency-axis/main.vue b/vue-options-api-demos/charts/elements/labels/style-currency-axis/main.vue new file mode 100644 index 00000000..32668f05 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-currency-axis/main.vue @@ -0,0 +1,33 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/style-currency-series/main.js b/vue-options-api-demos/charts/elements/labels/style-currency-series/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-currency-series/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/style-currency-series/main.vue b/vue-options-api-demos/charts/elements/labels/style-currency-series/main.vue new file mode 100644 index 00000000..126c1314 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-currency-series/main.vue @@ -0,0 +1,34 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/style-scatter-series/main.js b/vue-options-api-demos/charts/elements/labels/style-scatter-series/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-scatter-series/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/style-scatter-series/main.vue b/vue-options-api-demos/charts/elements/labels/style-scatter-series/main.vue new file mode 100644 index 00000000..4d65ff59 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-scatter-series/main.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/style-series/main.js b/vue-options-api-demos/charts/elements/labels/style-series/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-series/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/style-series/main.vue b/vue-options-api-demos/charts/elements/labels/style-series/main.vue new file mode 100644 index 00000000..299853ad --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/style-series/main.vue @@ -0,0 +1,40 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/visual-axis/main.js b/vue-options-api-demos/charts/elements/labels/visual-axis/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/visual-axis/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/visual-axis/main.vue b/vue-options-api-demos/charts/elements/labels/visual-axis/main.vue new file mode 100644 index 00000000..07fe4de2 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/visual-axis/main.vue @@ -0,0 +1,64 @@ + + + diff --git a/vue-options-api-demos/charts/elements/labels/visual-series/main.js b/vue-options-api-demos/charts/elements/labels/visual-series/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/visual-series/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/labels/visual-series/main.vue b/vue-options-api-demos/charts/elements/labels/visual-series/main.vue new file mode 100644 index 00000000..b02ee946 --- /dev/null +++ b/vue-options-api-demos/charts/elements/labels/visual-series/main.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue-options-api-demos/charts/elements/legend/click-legend/main.js b/vue-options-api-demos/charts/elements/legend/click-legend/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/click-legend/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/legend/click-legend/main.vue b/vue-options-api-demos/charts/elements/legend/click-legend/main.vue new file mode 100644 index 00000000..e60918aa --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/click-legend/main.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-options-api-demos/charts/elements/legend/custom-legend-position/main.js b/vue-options-api-demos/charts/elements/legend/custom-legend-position/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/custom-legend-position/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/legend/custom-legend-position/main.vue b/vue-options-api-demos/charts/elements/legend/custom-legend-position/main.vue new file mode 100644 index 00000000..caf7bae0 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/custom-legend-position/main.vue @@ -0,0 +1,33 @@ + + + diff --git a/vue-options-api-demos/charts/elements/legend/hide-legend/main.js b/vue-options-api-demos/charts/elements/legend/hide-legend/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/hide-legend/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/legend/hide-legend/main.vue b/vue-options-api-demos/charts/elements/legend/hide-legend/main.vue new file mode 100644 index 00000000..929a9f6a --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/hide-legend/main.vue @@ -0,0 +1,33 @@ + + + diff --git a/vue-options-api-demos/charts/elements/legend/legend-items/main.js b/vue-options-api-demos/charts/elements/legend/legend-items/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/legend-items/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/legend/legend-items/main.vue b/vue-options-api-demos/charts/elements/legend/legend-items/main.vue new file mode 100644 index 00000000..f15a2174 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/legend-items/main.vue @@ -0,0 +1,91 @@ + + diff --git a/vue-options-api-demos/charts/elements/legend/overview/main.js b/vue-options-api-demos/charts/elements/legend/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/legend/overview/main.vue b/vue-options-api-demos/charts/elements/legend/overview/main.vue new file mode 100644 index 00000000..2cc02fa7 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/overview/main.vue @@ -0,0 +1,33 @@ + + + diff --git a/vue-options-api-demos/charts/elements/legend/title/main.js b/vue-options-api-demos/charts/elements/legend/title/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/title/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/legend/title/main.vue b/vue-options-api-demos/charts/elements/legend/title/main.vue new file mode 100644 index 00000000..d1f3a59a --- /dev/null +++ b/vue-options-api-demos/charts/elements/legend/title/main.vue @@ -0,0 +1,73 @@ + + + diff --git a/vue-options-api-demos/charts/elements/notes/appearance/main.js b/vue-options-api-demos/charts/elements/notes/appearance/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/notes/appearance/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/notes/appearance/main.vue b/vue-options-api-demos/charts/elements/notes/appearance/main.vue new file mode 100644 index 00000000..0b1a6b49 --- /dev/null +++ b/vue-options-api-demos/charts/elements/notes/appearance/main.vue @@ -0,0 +1,54 @@ + + + diff --git a/vue-options-api-demos/charts/elements/notes/axis-notes/main.js b/vue-options-api-demos/charts/elements/notes/axis-notes/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/notes/axis-notes/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/notes/axis-notes/main.vue b/vue-options-api-demos/charts/elements/notes/axis-notes/main.vue new file mode 100644 index 00000000..fe13c6c9 --- /dev/null +++ b/vue-options-api-demos/charts/elements/notes/axis-notes/main.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/charts/elements/notes/overview/main.js b/vue-options-api-demos/charts/elements/notes/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/notes/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/notes/overview/main.vue b/vue-options-api-demos/charts/elements/notes/overview/main.vue new file mode 100644 index 00000000..893515ec --- /dev/null +++ b/vue-options-api-demos/charts/elements/notes/overview/main.vue @@ -0,0 +1,50 @@ + + + diff --git a/vue-options-api-demos/charts/elements/panes/clip/main.js b/vue-options-api-demos/charts/elements/panes/clip/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/panes/clip/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/panes/clip/main.vue b/vue-options-api-demos/charts/elements/panes/clip/main.vue new file mode 100644 index 00000000..1bd8e359 --- /dev/null +++ b/vue-options-api-demos/charts/elements/panes/clip/main.vue @@ -0,0 +1,58 @@ + + + diff --git a/vue-options-api-demos/charts/elements/panes/default/main.js b/vue-options-api-demos/charts/elements/panes/default/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/panes/default/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/panes/default/main.vue b/vue-options-api-demos/charts/elements/panes/default/main.vue new file mode 100644 index 00000000..05cfe528 --- /dev/null +++ b/vue-options-api-demos/charts/elements/panes/default/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/elements/panes/overview/main.js b/vue-options-api-demos/charts/elements/panes/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/panes/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/panes/overview/main.vue b/vue-options-api-demos/charts/elements/panes/overview/main.vue new file mode 100644 index 00000000..25661369 --- /dev/null +++ b/vue-options-api-demos/charts/elements/panes/overview/main.vue @@ -0,0 +1,54 @@ + + + diff --git a/vue-options-api-demos/charts/elements/plot-area/main.js b/vue-options-api-demos/charts/elements/plot-area/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-area/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/plot-area/main.vue b/vue-options-api-demos/charts/elements/plot-area/main.vue new file mode 100644 index 00000000..ee5bc33c --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-area/main.vue @@ -0,0 +1,33 @@ + + + diff --git a/vue-options-api-demos/charts/elements/plot-bands/custom/main.js b/vue-options-api-demos/charts/elements/plot-bands/custom/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-bands/custom/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/plot-bands/custom/main.vue b/vue-options-api-demos/charts/elements/plot-bands/custom/main.vue new file mode 100644 index 00000000..3d40f1c9 --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-bands/custom/main.vue @@ -0,0 +1,91 @@ + + + diff --git a/vue-options-api-demos/charts/elements/plot-bands/labels/main.js b/vue-options-api-demos/charts/elements/plot-bands/labels/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-bands/labels/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/plot-bands/labels/main.vue b/vue-options-api-demos/charts/elements/plot-bands/labels/main.vue new file mode 100644 index 00000000..df88aa8f --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-bands/labels/main.vue @@ -0,0 +1,74 @@ + + + diff --git a/vue-options-api-demos/charts/elements/plot-bands/overview/main.js b/vue-options-api-demos/charts/elements/plot-bands/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-bands/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/plot-bands/overview/main.vue b/vue-options-api-demos/charts/elements/plot-bands/overview/main.vue new file mode 100644 index 00000000..93529df9 --- /dev/null +++ b/vue-options-api-demos/charts/elements/plot-bands/overview/main.vue @@ -0,0 +1,62 @@ + + + diff --git a/vue-options-api-demos/charts/elements/selection/navigator/main.js b/vue-options-api-demos/charts/elements/selection/navigator/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/selection/navigator/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/selection/navigator/main.vue b/vue-options-api-demos/charts/elements/selection/navigator/main.vue new file mode 100644 index 00000000..5141b965 --- /dev/null +++ b/vue-options-api-demos/charts/elements/selection/navigator/main.vue @@ -0,0 +1,102 @@ + + + diff --git a/vue-options-api-demos/charts/elements/selection/overview/main.js b/vue-options-api-demos/charts/elements/selection/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/selection/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/selection/overview/main.vue b/vue-options-api-demos/charts/elements/selection/overview/main.vue new file mode 100644 index 00000000..e5deecfc --- /dev/null +++ b/vue-options-api-demos/charts/elements/selection/overview/main.vue @@ -0,0 +1,47 @@ + + + diff --git a/vue-options-api-demos/charts/elements/series/configuration/main.js b/vue-options-api-demos/charts/elements/series/configuration/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/series/configuration/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/series/configuration/main.vue b/vue-options-api-demos/charts/elements/series/configuration/main.vue new file mode 100644 index 00000000..47114d41 --- /dev/null +++ b/vue-options-api-demos/charts/elements/series/configuration/main.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-options-api-demos/charts/elements/series/overview/main.js b/vue-options-api-demos/charts/elements/series/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/series/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/series/overview/main.vue b/vue-options-api-demos/charts/elements/series/overview/main.vue new file mode 100644 index 00000000..5401a221 --- /dev/null +++ b/vue-options-api-demos/charts/elements/series/overview/main.vue @@ -0,0 +1,51 @@ + + + diff --git a/vue-options-api-demos/charts/elements/title/main.js b/vue-options-api-demos/charts/elements/title/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/title/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/title/main.vue b/vue-options-api-demos/charts/elements/title/main.vue new file mode 100644 index 00000000..6e91643e --- /dev/null +++ b/vue-options-api-demos/charts/elements/title/main.vue @@ -0,0 +1,23 @@ + + + diff --git a/vue-options-api-demos/charts/elements/tooltips/categorical/main.js b/vue-options-api-demos/charts/elements/tooltips/categorical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/categorical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/tooltips/categorical/main.vue b/vue-options-api-demos/charts/elements/tooltips/categorical/main.vue new file mode 100644 index 00000000..b4d11ff6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/categorical/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/elements/tooltips/format/main.js b/vue-options-api-demos/charts/elements/tooltips/format/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/format/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/tooltips/format/main.vue b/vue-options-api-demos/charts/elements/tooltips/format/main.vue new file mode 100644 index 00000000..b7c35c9b --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/format/main.vue @@ -0,0 +1,38 @@ + + + diff --git a/vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.js b/vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.vue b/vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.vue new file mode 100644 index 00000000..30fbe033 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/one-tooltip/main.vue @@ -0,0 +1,44 @@ + + + diff --git a/vue-options-api-demos/charts/elements/tooltips/overview/main.js b/vue-options-api-demos/charts/elements/tooltips/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/tooltips/overview/main.vue b/vue-options-api-demos/charts/elements/tooltips/overview/main.vue new file mode 100644 index 00000000..fc247353 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/overview/main.vue @@ -0,0 +1,38 @@ + + + diff --git a/vue-options-api-demos/charts/elements/tooltips/scatter/main.js b/vue-options-api-demos/charts/elements/tooltips/scatter/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/scatter/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/tooltips/scatter/main.vue b/vue-options-api-demos/charts/elements/tooltips/scatter/main.vue new file mode 100644 index 00000000..70e56f30 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/scatter/main.vue @@ -0,0 +1,52 @@ + + + diff --git a/vue-options-api-demos/charts/elements/tooltips/template/main.js b/vue-options-api-demos/charts/elements/tooltips/template/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/template/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/elements/tooltips/template/main.vue b/vue-options-api-demos/charts/elements/tooltips/template/main.vue new file mode 100644 index 00000000..5d231d6a --- /dev/null +++ b/vue-options-api-demos/charts/elements/tooltips/template/main.vue @@ -0,0 +1,49 @@ + + + diff --git a/vue-options-api-demos/charts/events/basic/Logger.vue b/vue-options-api-demos/charts/events/basic/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/charts/events/basic/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/events/basic/main.js b/vue-options-api-demos/charts/events/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/events/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/events/basic/main.vue b/vue-options-api-demos/charts/events/basic/main.vue new file mode 100644 index 00000000..ad987289 --- /dev/null +++ b/vue-options-api-demos/charts/events/basic/main.vue @@ -0,0 +1,167 @@ + + diff --git a/vue-options-api-demos/charts/events/drag/Logger.vue b/vue-options-api-demos/charts/events/drag/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/charts/events/drag/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/events/drag/main.js b/vue-options-api-demos/charts/events/drag/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/events/drag/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/events/drag/main.vue b/vue-options-api-demos/charts/events/drag/main.vue new file mode 100644 index 00000000..4bceb95e --- /dev/null +++ b/vue-options-api-demos/charts/events/drag/main.vue @@ -0,0 +1,139 @@ + + diff --git a/vue-options-api-demos/charts/events/select/Logger.vue b/vue-options-api-demos/charts/events/select/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/charts/events/select/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/events/select/main.js b/vue-options-api-demos/charts/events/select/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/events/select/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/events/select/main.vue b/vue-options-api-demos/charts/events/select/main.vue new file mode 100644 index 00000000..69b7dfb2 --- /dev/null +++ b/vue-options-api-demos/charts/events/select/main.vue @@ -0,0 +1,146 @@ + + diff --git a/vue-options-api-demos/charts/events/zoom/Logger.vue b/vue-options-api-demos/charts/events/zoom/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/charts/events/zoom/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/events/zoom/main.js b/vue-options-api-demos/charts/events/zoom/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/events/zoom/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/events/zoom/main.vue b/vue-options-api-demos/charts/events/zoom/main.vue new file mode 100644 index 00000000..09fb87b8 --- /dev/null +++ b/vue-options-api-demos/charts/events/zoom/main.vue @@ -0,0 +1,140 @@ + + diff --git a/vue-options-api-demos/charts/export-options/image-size/main.js b/vue-options-api-demos/charts/export-options/image-size/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/image-size/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/export-options/image-size/main.vue b/vue-options-api-demos/charts/export-options/image-size/main.vue new file mode 100644 index 00000000..23f6e889 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/image-size/main.vue @@ -0,0 +1,150 @@ + + diff --git a/vue-options-api-demos/charts/export-options/image/main.js b/vue-options-api-demos/charts/export-options/image/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/image/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/export-options/image/main.vue b/vue-options-api-demos/charts/export-options/image/main.vue new file mode 100644 index 00000000..cc012dbf --- /dev/null +++ b/vue-options-api-demos/charts/export-options/image/main.vue @@ -0,0 +1,145 @@ + + diff --git a/vue-options-api-demos/charts/export-options/pdf-size/main.js b/vue-options-api-demos/charts/export-options/pdf-size/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/pdf-size/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/export-options/pdf-size/main.vue b/vue-options-api-demos/charts/export-options/pdf-size/main.vue new file mode 100644 index 00000000..6f98ddc7 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/pdf-size/main.vue @@ -0,0 +1,150 @@ + + diff --git a/vue-options-api-demos/charts/export-options/pdf/main.js b/vue-options-api-demos/charts/export-options/pdf/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/pdf/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/export-options/pdf/main.vue b/vue-options-api-demos/charts/export-options/pdf/main.vue new file mode 100644 index 00000000..d0b2b505 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/pdf/main.vue @@ -0,0 +1,145 @@ + + diff --git a/vue-options-api-demos/charts/export-options/svg/main.js b/vue-options-api-demos/charts/export-options/svg/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/svg/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/export-options/svg/main.vue b/vue-options-api-demos/charts/export-options/svg/main.vue new file mode 100644 index 00000000..5d993cd3 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/svg/main.vue @@ -0,0 +1,145 @@ + + diff --git a/vue-options-api-demos/charts/export-options/visuals/main.js b/vue-options-api-demos/charts/export-options/visuals/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/visuals/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/export-options/visuals/main.vue b/vue-options-api-demos/charts/export-options/visuals/main.vue new file mode 100644 index 00000000..fb184248 --- /dev/null +++ b/vue-options-api-demos/charts/export-options/visuals/main.vue @@ -0,0 +1,127 @@ + + diff --git a/vue-options-api-demos/charts/overview/main.js b/vue-options-api-demos/charts/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/overview/main.vue b/vue-options-api-demos/charts/overview/main.vue new file mode 100644 index 00000000..27c58f5c --- /dev/null +++ b/vue-options-api-demos/charts/overview/main.vue @@ -0,0 +1,309 @@ + + + + diff --git a/vue-options-api-demos/charts/sankey/auto-layout/main.js b/vue-options-api-demos/charts/sankey/auto-layout/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/auto-layout/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/auto-layout/main.vue b/vue-options-api-demos/charts/sankey/auto-layout/main.vue new file mode 100644 index 00000000..7ce31b34 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/auto-layout/main.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/customization/data/main.js b/vue-options-api-demos/charts/sankey/customization/data/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/customization/data/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/customization/data/main.vue b/vue-options-api-demos/charts/sankey/customization/data/main.vue new file mode 100644 index 00000000..4a95ba52 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/customization/data/main.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/customization/defaults/main.js b/vue-options-api-demos/charts/sankey/customization/defaults/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/customization/defaults/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/customization/defaults/main.vue b/vue-options-api-demos/charts/sankey/customization/defaults/main.vue new file mode 100644 index 00000000..e475bcba --- /dev/null +++ b/vue-options-api-demos/charts/sankey/customization/defaults/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.js b/vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.vue b/vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.vue new file mode 100644 index 00000000..0533d4a7 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/data-binding/datasets-customize-objects/main.vue @@ -0,0 +1,65 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.js b/vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.vue b/vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.vue new file mode 100644 index 00000000..4c275a94 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/data-binding/datasets-objects/main.vue @@ -0,0 +1,57 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/elements/legend/main.js b/vue-options-api-demos/charts/sankey/elements/legend/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/legend/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/elements/legend/main.vue b/vue-options-api-demos/charts/sankey/elements/legend/main.vue new file mode 100644 index 00000000..8591b392 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/legend/main.vue @@ -0,0 +1,60 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/elements/title/main.js b/vue-options-api-demos/charts/sankey/elements/title/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/title/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/elements/title/main.vue b/vue-options-api-demos/charts/sankey/elements/title/main.vue new file mode 100644 index 00000000..01b6cea6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/title/main.vue @@ -0,0 +1,60 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.js b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.vue b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.vue new file mode 100644 index 00000000..03bfa929 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-behaviour/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.js b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.vue b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.vue new file mode 100644 index 00000000..00800503 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/main.vue @@ -0,0 +1,71 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-link-content.vue b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-link-content.vue new file mode 100644 index 00000000..459c4ffd --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-link-content.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-node-content.vue b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-node-content.vue new file mode 100644 index 00000000..07af7d62 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/custom-rendering/tooltip-node-content.vue @@ -0,0 +1,13 @@ + + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/default/main.js b/vue-options-api-demos/charts/sankey/elements/tooltip/default/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/default/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/elements/tooltip/default/main.vue b/vue-options-api-demos/charts/sankey/elements/tooltip/default/main.vue new file mode 100644 index 00000000..1d239196 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/elements/tooltip/default/main.vue @@ -0,0 +1,60 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/events/main.js b/vue-options-api-demos/charts/sankey/events/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/events/main.vue b/vue-options-api-demos/charts/sankey/events/main.vue new file mode 100644 index 00000000..a375254e --- /dev/null +++ b/vue-options-api-demos/charts/sankey/events/main.vue @@ -0,0 +1,71 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/export/custom/main.js b/vue-options-api-demos/charts/sankey/export/custom/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/custom/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/export/custom/main.vue b/vue-options-api-demos/charts/sankey/export/custom/main.vue new file mode 100644 index 00000000..d2a26022 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/custom/main.vue @@ -0,0 +1,89 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/export/image-size/main.js b/vue-options-api-demos/charts/sankey/export/image-size/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/image-size/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/export/image-size/main.vue b/vue-options-api-demos/charts/sankey/export/image-size/main.vue new file mode 100644 index 00000000..8e2e73bb --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/image-size/main.vue @@ -0,0 +1,75 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/export/image/main.js b/vue-options-api-demos/charts/sankey/export/image/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/image/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/export/image/main.vue b/vue-options-api-demos/charts/sankey/export/image/main.vue new file mode 100644 index 00000000..9b72ed83 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/image/main.vue @@ -0,0 +1,72 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.js b/vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.vue b/vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.vue new file mode 100644 index 00000000..0c8a94c1 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/pdf-paper-size/main.vue @@ -0,0 +1,88 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/export/pdf/main.js b/vue-options-api-demos/charts/sankey/export/pdf/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/pdf/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/export/pdf/main.vue b/vue-options-api-demos/charts/sankey/export/pdf/main.vue new file mode 100644 index 00000000..7ee7ac4c --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/pdf/main.vue @@ -0,0 +1,72 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/export/svg/main.js b/vue-options-api-demos/charts/sankey/export/svg/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/svg/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/export/svg/main.vue b/vue-options-api-demos/charts/sankey/export/svg/main.vue new file mode 100644 index 00000000..a55db62b --- /dev/null +++ b/vue-options-api-demos/charts/sankey/export/svg/main.vue @@ -0,0 +1,72 @@ + + + diff --git a/vue-options-api-demos/charts/sankey/keyboard-navigation/main.js b/vue-options-api-demos/charts/sankey/keyboard-navigation/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/keyboard-navigation/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/keyboard-navigation/main.vue b/vue-options-api-demos/charts/sankey/keyboard-navigation/main.vue new file mode 100644 index 00000000..14eb201b --- /dev/null +++ b/vue-options-api-demos/charts/sankey/keyboard-navigation/main.vue @@ -0,0 +1,60 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/sankey/overview/main.js b/vue-options-api-demos/charts/sankey/overview/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/overview/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sankey/overview/main.vue b/vue-options-api-demos/charts/sankey/overview/main.vue new file mode 100644 index 00000000..01b6cea6 --- /dev/null +++ b/vue-options-api-demos/charts/sankey/overview/main.vue @@ -0,0 +1,60 @@ + + + diff --git a/vue-options-api-demos/charts/series-types/area/100-stacked/main.js b/vue-options-api-demos/charts/series-types/area/100-stacked/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/100-stacked/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/area/100-stacked/main.vue b/vue-options-api-demos/charts/series-types/area/100-stacked/main.vue new file mode 100644 index 00000000..f3afad0e --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/100-stacked/main.vue @@ -0,0 +1,29 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/area/basic/main.js b/vue-options-api-demos/charts/series-types/area/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/area/basic/main.vue b/vue-options-api-demos/charts/series-types/area/basic/main.vue new file mode 100644 index 00000000..c986005b --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/basic/main.vue @@ -0,0 +1,47 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/area/line-style/main.js b/vue-options-api-demos/charts/series-types/area/line-style/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/line-style/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/area/line-style/main.vue b/vue-options-api-demos/charts/series-types/area/line-style/main.vue new file mode 100644 index 00000000..7b1961f8 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/line-style/main.vue @@ -0,0 +1,77 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/area/stacked/main.js b/vue-options-api-demos/charts/series-types/area/stacked/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/stacked/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/area/stacked/main.vue b/vue-options-api-demos/charts/series-types/area/stacked/main.vue new file mode 100644 index 00000000..cba72239 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/stacked/main.vue @@ -0,0 +1,39 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/area/vertical/main.js b/vue-options-api-demos/charts/series-types/area/vertical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/vertical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/area/vertical/main.vue b/vue-options-api-demos/charts/series-types/area/vertical/main.vue new file mode 100644 index 00000000..c59a3977 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/area/vertical/main.vue @@ -0,0 +1,37 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/bar/100-stacked/main.js b/vue-options-api-demos/charts/series-types/bar/100-stacked/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/100-stacked/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/bar/100-stacked/main.vue b/vue-options-api-demos/charts/series-types/bar/100-stacked/main.vue new file mode 100644 index 00000000..ad4fb9e8 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/100-stacked/main.vue @@ -0,0 +1,63 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/bar/basic/main.js b/vue-options-api-demos/charts/series-types/bar/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/bar/basic/main.vue b/vue-options-api-demos/charts/series-types/bar/basic/main.vue new file mode 100644 index 00000000..553aff97 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/basic/main.vue @@ -0,0 +1,53 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/bar/column/main.js b/vue-options-api-demos/charts/series-types/bar/column/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/column/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/bar/column/main.vue b/vue-options-api-demos/charts/series-types/bar/column/main.vue new file mode 100644 index 00000000..bb169a9b --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/column/main.vue @@ -0,0 +1,29 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/bar/gap/main.js b/vue-options-api-demos/charts/series-types/bar/gap/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/gap/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/bar/gap/main.vue b/vue-options-api-demos/charts/series-types/bar/gap/main.vue new file mode 100644 index 00000000..eefc9f7c --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/gap/main.vue @@ -0,0 +1,44 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/bar/spacing/main.js b/vue-options-api-demos/charts/series-types/bar/spacing/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/spacing/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/bar/spacing/main.vue b/vue-options-api-demos/charts/series-types/bar/spacing/main.vue new file mode 100644 index 00000000..ee856a94 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/spacing/main.vue @@ -0,0 +1,44 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/bar/stacked-group/main.js b/vue-options-api-demos/charts/series-types/bar/stacked-group/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/stacked-group/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/bar/stacked-group/main.vue b/vue-options-api-demos/charts/series-types/bar/stacked-group/main.vue new file mode 100644 index 00000000..e164ae92 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/stacked-group/main.vue @@ -0,0 +1,65 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/bar/stacked/main.js b/vue-options-api-demos/charts/series-types/bar/stacked/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/stacked/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/bar/stacked/main.vue b/vue-options-api-demos/charts/series-types/bar/stacked/main.vue new file mode 100644 index 00000000..2fe1b266 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/bar/stacked/main.vue @@ -0,0 +1,63 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/series-types/line/basic/main.js b/vue-options-api-demos/charts/series-types/line/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/line/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/line/basic/main.vue b/vue-options-api-demos/charts/series-types/line/basic/main.vue new file mode 100644 index 00000000..21933e6a --- /dev/null +++ b/vue-options-api-demos/charts/series-types/line/basic/main.vue @@ -0,0 +1,56 @@ + + + diff --git a/vue-options-api-demos/charts/series-types/line/line-style/main.js b/vue-options-api-demos/charts/series-types/line/line-style/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/line/line-style/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/line/line-style/main.vue b/vue-options-api-demos/charts/series-types/line/line-style/main.vue new file mode 100644 index 00000000..ffdce4b0 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/line/line-style/main.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/charts/series-types/line/vertical/main.js b/vue-options-api-demos/charts/series-types/line/vertical/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/line/vertical/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/line/vertical/main.vue b/vue-options-api-demos/charts/series-types/line/vertical/main.vue new file mode 100644 index 00000000..8e26190d --- /dev/null +++ b/vue-options-api-demos/charts/series-types/line/vertical/main.vue @@ -0,0 +1,41 @@ + + + diff --git a/vue-options-api-demos/charts/series-types/pie/basic/main.js b/vue-options-api-demos/charts/series-types/pie/basic/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/series-types/pie/basic/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/series-types/pie/basic/main.vue b/vue-options-api-demos/charts/series-types/pie/basic/main.vue new file mode 100644 index 00000000..27b1842f --- /dev/null +++ b/vue-options-api-demos/charts/series-types/pie/basic/main.vue @@ -0,0 +1,75 @@ + + + diff --git a/vue-options-api-demos/charts/shared/box-plot-data.json b/vue-options-api-demos/charts/shared/box-plot-data.json new file mode 100644 index 00000000..86449d2e --- /dev/null +++ b/vue-options-api-demos/charts/shared/box-plot-data.json @@ -0,0 +1,158 @@ +[{ + "lower": 1.3, + "q1": 2.15, + "median": 2.95, + "q3": 3.725, + "upper": 4.7, + "mean": 2.9, + "outliers": [1, 9], + "year": "1996" +}, { + "lower": 2, + "q1": 3.825, + "median": 5.45, + "q3": 6.425, + "upper": 8.2, + "mean": 5.2, + "outliers": [1.5, 2, 8.9], + "year": "1997" +}, { + "lower": 3.8, + "q1": 4.725, + "median": 5.55, + "q3": 5.75, + "upper": 8.7, + "mean": 5.5, + "year": "1998" +}, { + "lower": 3, + "q1": 4.375, + "median": 4.95, + "q3": 5.85, + "upper": 8, + "mean": 5.2, + "outliers": [3, 9.5], + "year": "1999" +}, { + "lower": 2.5, + "q1": 3.925, + "median": 4.15, + "q3": 4.45, + "upper": 5.1, + "mean": 4.1, + "year": "2000" +}, { + "lower": 2.4, + "q1": 3.725, + "median": 4.95, + "q3": 5.85, + "upper": 7.7, + "mean": 4.9, + "outliers": [2.1, 8.3, 9.8], + "year": "2001" +}, { + "lower": 1.7, + "q1": 2.3, + "median": 3.9, + "q3": 5, + "upper": 5.5, + "mean": 3.7, + "outliers": [1.1, 9.1], + "year": "2002" +}, { + "lower": 2.2, + "q1": 2.5, + "median": 3.1, + "q3": 3.975, + "upper": 4.3, + "mean": 3.2, + "outliers": [1.6, 1.8, 9.8], + "year": "2003" +}, { + "lower": 1.9, + "q1": 2.7, + "median": 3.35, + "q3": 4.575, + "upper": 5.7, + "mean": 3.6, + "outliers": [1.1, 8.3], + "year": "2004" +}, { + "lower": 1.7, + "q1": 2.65, + "median": 3.3, + "q3": 4.05, + "upper": 5, + "mean": 3.4, + "year": "2005" +}, { + "lower": 1.4, + "q1": 2.25, + "median": 3.3, + "q3": 4.65, + "upper": 5.7, + "mean": 3.4, + "year": "2006" +}, { + "lower": 1.9, + "q1": 2.85, + "median": 4, + "q3": 4.45, + "upper": 6.1, + "mean": 3.9, + "outliers": [1, 1.2], + "year": "2007" +}, { + "lower": 1.5, + "q1": 2.35, + "median": 4.1, + "q3": 5.225, + "upper": 5.7, + "mean": 3.9, + "outliers": [9, 9.5], + "year": "2008" +}, { + "lower": 1.8, + "q1": 2.325, + "median": 3.35, + "q3": 4, + "upper": 5.4, + "mean": 3.3, + "outliers": [1, 6], + "year": "2009" +}, { + "lower": 1.8, + "q1": 2.75, + "median": 3.35, + "q3": 3.825, + "upper": 4.9, + "mean": 3.4, + "year": "2010" +}, { + "lower": 1.7, + "q1": 2.275, + "median": 3.2, + "q3": 3.825, + "upper": 5.5, + "mean": 3.2, + "outliers": [0.5, 6.7], + "year": "2011" +}, { + "lower": 1.2, + "q1": 1.95, + "median": 2.45, + "q3": 3.075, + "upper": 3.5, + "mean": 2.5, + "year": "2012" +}, { + "lower": 1.3, + "q1": 1.9, + "median": 3.05, + "q3": 3.425, + "upper": 4, + "mean": 2.7, + "outliers": [7, 8.5], + "year": "2013" +}] + diff --git a/vue-options-api-demos/charts/shared/bubble-data.json b/vue-options-api-demos/charts/shared/bubble-data.json new file mode 100644 index 00000000..71ba7eef --- /dev/null +++ b/vue-options-api-demos/charts/shared/bubble-data.json @@ -0,0 +1,46 @@ +[{ + "x": -2500, + "y": 50000, + "size": 500000, + "category": "Microsoft" +}, { + "x": 500, + "y": 110000, + "size": 7600000, + "category": "Starbucks" +}, { + "x": 7000, + "y": 19000, + "size": 700000, + "category": "Google" +}, { + "x": 1400, + "y": 150000, + "size": 700000, + "category": "Publix Super Markets" +}, { + "x": 2400, + "y": 30000, + "size": 300000, + "category": "PricewaterhouseCoopers" +}, { + "x": 2450, + "y": 34000, + "size": 90000, + "category": "Cisco" +}, { + "x": 2700, + "y": 34000, + "size": 400000, + "category": "Accenture" +}, { + "x": 2900, + "y": 40000, + "size": 450000, + "category": "Deloitte" +}, { + "x": 3000, + "y": 55000, + "size": 900000, + "category": "Whole Foods Market" +}] diff --git a/vue-options-api-demos/charts/shared/covid-data.json b/vue-options-api-demos/charts/shared/covid-data.json new file mode 100644 index 00000000..55b698ec --- /dev/null +++ b/vue-options-api-demos/charts/shared/covid-data.json @@ -0,0 +1,593 @@ +[ + { + "NewCases": 41, + "Timestamp": 1578700800000 + }, + { + "NewCases": 0, + "Timestamp": 1578787200000 + }, + { + "NewCases": 1, + "Timestamp": 1578873600000 + }, + { + "NewCases": 1, + "Timestamp": 1578960000000 + }, + { + "NewCases": 0, + "Timestamp": 1579046400000 + }, + { + "NewCases": 0, + "Timestamp": 1579132800000 + }, + { + "NewCases": 5, + "Timestamp": 1579219200000 + }, + { + "NewCases": 17, + "Timestamp": 1579305600000 + }, + { + "NewCases": 60, + "Timestamp": 1579392000000 + }, + { + "NewCases": 78, + "Timestamp": 1579478400000 + }, + { + "NewCases": 93, + "Timestamp": 1579564800000 + }, + { + "NewCases": 154, + "Timestamp": 1579651200000 + }, + { + "NewCases": 133, + "Timestamp": 1579737600000 + }, + { + "NewCases": 271, + "Timestamp": 1579824000000 + }, + { + "NewCases": 469, + "Timestamp": 1579910400000 + }, + { + "NewCases": 698, + "Timestamp": 1579996800000 + }, + { + "NewCases": 785, + "Timestamp": 1580083200000 + }, + { + "NewCases": 1789, + "Timestamp": 1580169600000 + }, + { + "NewCases": 1481, + "Timestamp": 1580256000000 + }, + { + "NewCases": 1760, + "Timestamp": 1580342400000 + }, + { + "NewCases": 2011, + "Timestamp": 1580428800000 + }, + { + "NewCases": 2115, + "Timestamp": 1580515200000 + }, + { + "NewCases": 2597, + "Timestamp": 1580601600000 + }, + { + "NewCases": 2832, + "Timestamp": 1580688000000 + }, + { + "NewCases": 3258, + "Timestamp": 1580774400000 + }, + { + "NewCases": 3914, + "Timestamp": 1580860800000 + }, + { + "NewCases": 3722, + "Timestamp": 1580947200000 + }, + { + "NewCases": 3201, + "Timestamp": 1581033600000 + }, + { + "NewCases": 3413, + "Timestamp": 1581120000000 + }, + { + "NewCases": 2670, + "Timestamp": 1581206400000 + }, + { + "NewCases": 3058, + "Timestamp": 1581292800000 + }, + { + "NewCases": 2482, + "Timestamp": 1581379200000 + }, + { + "NewCases": 2066, + "Timestamp": 1581465600000 + }, + { + "NewCases": 15212, + "Timestamp": 1581552000000 + }, + { + "NewCases": 4068, + "Timestamp": 1581638400000 + }, + { + "NewCases": 2732, + "Timestamp": 1581724800000 + }, + { + "NewCases": 2090, + "Timestamp": 1581811200000 + }, + { + "NewCases": 2161, + "Timestamp": 1581897600000 + }, + { + "NewCases": 1993, + "Timestamp": 1581984000000 + }, + { + "NewCases": 1856, + "Timestamp": 1582070400000 + }, + { + "NewCases": 486, + "Timestamp": 1582156800000 + }, + { + "NewCases": 1044, + "Timestamp": 1582243200000 + }, + { + "NewCases": 1109, + "Timestamp": 1582329600000 + }, + { + "NewCases": 1020, + "Timestamp": 1582416000000 + }, + { + "NewCases": 619, + "Timestamp": 1582502400000 + }, + { + "NewCases": 825, + "Timestamp": 1582588800000 + }, + { + "NewCases": 927, + "Timestamp": 1582675200000 + }, + { + "NewCases": 1376, + "Timestamp": 1582761600000 + }, + { + "NewCases": 1431, + "Timestamp": 1582848000000 + }, + { + "NewCases": 1827, + "Timestamp": 1582934400000 + }, + { + "NewCases": 1880, + "Timestamp": 1583020800000 + }, + { + "NewCases": 2296, + "Timestamp": 1583107200000 + }, + { + "NewCases": 2293, + "Timestamp": 1583193600000 + }, + { + "NewCases": 2197, + "Timestamp": 1583280000000 + }, + { + "NewCases": 2726, + "Timestamp": 1583366400000 + }, + { + "NewCases": 3911, + "Timestamp": 1583452800000 + }, + { + "NewCases": 3809, + "Timestamp": 1583539200000 + }, + { + "NewCases": 3931, + "Timestamp": 1583625600000 + }, + { + "NewCases": 4332, + "Timestamp": 1583712000000 + }, + { + "NewCases": 4460, + "Timestamp": 1583798400000 + }, + { + "NewCases": 6315, + "Timestamp": 1583884800000 + }, + { + "NewCases": 6682, + "Timestamp": 1583971200000 + }, + { + "NewCases": 10153, + "Timestamp": 1584057600000 + }, + { + "NewCases": 11793, + "Timestamp": 1584144000000 + }, + { + "NewCases": 12472, + "Timestamp": 1584230400000 + }, + { + "NewCases": 10749, + "Timestamp": 1584316800000 + }, + { + "NewCases": 15523, + "Timestamp": 1584403200000 + }, + { + "NewCases": 18365, + "Timestamp": 1584489600000 + }, + { + "NewCases": 24256, + "Timestamp": 1584576000000 + }, + { + "NewCases": 32003, + "Timestamp": 1584662400000 + }, + { + "NewCases": 26069, + "Timestamp": 1584748800000 + }, + { + "NewCases": 1944, + "Timestamp": 1584835200000 + }, + { + "NewCases": 40898, + "Timestamp": 1584921600000 + }, + { + "NewCases": 51862, + "Timestamp": 1585008000000 + }, + { + "NewCases": 29810, + "Timestamp": 1585094400000 + }, + { + "NewCases": 54655, + "Timestamp": 1585180800000 + }, + { + "NewCases": 41366, + "Timestamp": 1585267200000 + }, + { + "NewCases": 62724, + "Timestamp": 1585353600000 + }, + { + "NewCases": 62705, + "Timestamp": 1585440000000 + }, + { + "NewCases": 59160, + "Timestamp": 1585526400000 + }, + { + "NewCases": 57643, + "Timestamp": 1585612800000 + }, + { + "NewCases": 72471, + "Timestamp": 1585699200000 + }, + { + "NewCases": 72901, + "Timestamp": 1585785600000 + }, + { + "NewCases": 75944, + "Timestamp": 1585872000000 + }, + { + "NewCases": 79908, + "Timestamp": 1585958400000 + }, + { + "NewCases": 80692, + "Timestamp": 1586044800000 + }, + { + "NewCases": 77617, + "Timestamp": 1586131200000 + }, + { + "NewCases": 68465, + "Timestamp": 1586217600000 + }, + { + "NewCases": 73849, + "Timestamp": 1586304000000 + }, + { + "NewCases": 82736, + "Timestamp": 1586390400000 + }, + { + "NewCases": 84635, + "Timestamp": 1586476800000 + }, + { + "NewCases": 90778, + "Timestamp": 1586563200000 + }, + { + "NewCases": 84634, + "Timestamp": 1586649600000 + }, + { + "NewCases": 77274, + "Timestamp": 1586736000000 + }, + { + "NewCases": 71545, + "Timestamp": 1586822400000 + }, + { + "NewCases": 73220, + "Timestamp": 1586908800000 + }, + { + "NewCases": 76794, + "Timestamp": 1586995200000 + }, + { + "NewCases": 81839, + "Timestamp": 1587081600000 + }, + { + "NewCases": 84353, + "Timestamp": 1587168000000 + }, + { + "NewCases": 78522, + "Timestamp": 1587254400000 + }, + { + "NewCases": 70345, + "Timestamp": 1587340800000 + }, + { + "NewCases": 83101, + "Timestamp": 1587427200000 + }, + { + "NewCases": 72107, + "Timestamp": 1587513600000 + }, + { + "NewCases": 72752, + "Timestamp": 1587600000000 + }, + { + "NewCases": 80220, + "Timestamp": 1587686400000 + }, + { + "NewCases": 89313, + "Timestamp": 1587772800000 + }, + { + "NewCases": 85505, + "Timestamp": 1587859200000 + }, + { + "NewCases": 87138, + "Timestamp": 1587945600000 + }, + { + "NewCases": 73759, + "Timestamp": 1588032000000 + }, + { + "NewCases": 66321, + "Timestamp": 1588118400000 + }, + { + "NewCases": 72955, + "Timestamp": 1588204800000 + }, + { + "NewCases": 85008, + "Timestamp": 1588291200000 + }, + { + "NewCases": 90578, + "Timestamp": 1588377600000 + }, + { + "NewCases": 83985, + "Timestamp": 1588464000000 + }, + { + "NewCases": 85984, + "Timestamp": 1588550400000 + }, + { + "NewCases": 82906, + "Timestamp": 1588636800000 + }, + { + "NewCases": 70578, + "Timestamp": 1588723200000 + }, + { + "NewCases": 83835, + "Timestamp": 1588809600000 + }, + { + "NewCases": 88245, + "Timestamp": 1588896000000 + }, + { + "NewCases": 94857, + "Timestamp": 1588982400000 + }, + { + "NewCases": 89086, + "Timestamp": 1589068800000 + }, + { + "NewCases": 88684, + "Timestamp": 1589155200000 + }, + { + "NewCases": 81413, + "Timestamp": 1589241600000 + }, + { + "NewCases": 75740, + "Timestamp": 1589328000000 + }, + { + "NewCases": 82566, + "Timestamp": 1589414400000 + }, + { + "NewCases": 88685, + "Timestamp": 1589500800000 + }, + { + "NewCases": 92967, + "Timestamp": 1589587200000 + }, + { + "NewCases": 95802, + "Timestamp": 1589673600000 + }, + { + "NewCases": 103325, + "Timestamp": 1589760000000 + }, + { + "NewCases": 74696, + "Timestamp": 1589846400000 + }, + { + "NewCases": 90054, + "Timestamp": 1589932800000 + }, + { + "NewCases": 102103, + "Timestamp": 1590019200000 + }, + { + "NewCases": 91060, + "Timestamp": 1590105600000 + }, + { + "NewCases": 107563, + "Timestamp": 1590192000000 + }, + { + "NewCases": 104409, + "Timestamp": 1590278400000 + }, + { + "NewCases": 102660, + "Timestamp": 1590364800000 + }, + { + "NewCases": 88121, + "Timestamp": 1590451200000 + }, + { + "NewCases": 94577, + "Timestamp": 1590537600000 + }, + { + "NewCases": 96393, + "Timestamp": 1590624000000 + }, + { + "NewCases": 111464, + "Timestamp": 1590710400000 + }, + { + "NewCases": 116834, + "Timestamp": 1590796800000 + }, + { + "NewCases": 116079, + "Timestamp": 1590883200000 + }, + { + "NewCases": 124080, + "Timestamp": 1590969600000 + }, + { + "NewCases": 113338, + "Timestamp": 1591056000000 + }, + { + "NewCases": 93246, + "Timestamp": 1591142400000 + }, + { + "NewCases": 129281, + "Timestamp": 1591228800000 + }, + { + "NewCases": 118528, + "Timestamp": 1591315200000 + }, + { + "NewCases": 127943, + "Timestamp": 1591401600000 + }] \ No newline at end of file diff --git a/vue-options-api-demos/charts/shared/donut-series-data.json b/vue-options-api-demos/charts/shared/donut-series-data.json new file mode 100644 index 00000000..4efe5b5c --- /dev/null +++ b/vue-options-api-demos/charts/shared/donut-series-data.json @@ -0,0 +1,55 @@ +[{ + "name": "2011", + "data": [{ + "category": "Asia", + "value": 30.8, + "color": "#9de219" + }, { + "category": "Europe", + "value": 21.1, + "color": "#90cc38" + }, { + "category": "Latin America", + "value": 16.3, + "color": "#068c35" + }, { + "category": "Africa", + "value": 17.6, + "color": "#006634" + }, { + "category": "Middle East", + "value": 9.2, + "color": "#004d38" + }, { + "category": "North America", + "value": 4.6, + "color": "#033939" + }] +}, { + "name": "2012", + "data": [{ + "category": "Asia", + "value": 53.8, + "color": "#9de219" + }, { + "category": "Europe", + "value": 16.1, + "color": "#90cc38" + }, { + "category": "Latin America", + "value": 11.3, + "color": "#068c35" + }, { + "category": "Africa", + "value": 9.6, + "color": "#006634" + }, { + "category": "Middle East", + "value": 5.2, + "color": "#004d38" + }, { + "category": "North America", + "value": 3.6, + "color": "#033939" + }] +}] diff --git a/vue-options-api-demos/charts/shared/funnel-data.json b/vue-options-api-demos/charts/shared/funnel-data.json new file mode 100644 index 00000000..781f53f3 --- /dev/null +++ b/vue-options-api-demos/charts/shared/funnel-data.json @@ -0,0 +1,21 @@ +[ { + "stat": "Impressions ", + "count": 434823, + "color": "#0e5a7e" +}, { + "stat": "Clicks", + "count": 356854, + "color": "#166f99" +}, { + "stat": "Unique Visitors", + "count": 280022, + "color": "#2185b4" +}, { + "stat": "Downloads", + "count": 190374, + "color": "#319fd2" +}, { + "stat": "Purchases", + "count": 120392, + "color": "#3eaee2" +} ] diff --git a/vue-options-api-demos/charts/shared/polar-data.json b/vue-options-api-demos/charts/shared/polar-data.json new file mode 100644 index 00000000..06d877fc --- /dev/null +++ b/vue-options-api-demos/charts/shared/polar-data.json @@ -0,0 +1,14 @@ +[ + { "time": "08:00", "altitude": 4.9, "azimuth": 92.7 }, + { "time": "09:00", "altitude": 17.6, "azimuth": 100.6 }, + { "time": "10:00", "altitude": 30.1, "azimuth": 109.7 }, + { "time": "11:00", "altitude": 41.8, "azimuth": 121.3 }, + { "time": "12:00", "altitude": 51.8, "azimuth": 137.7 }, + { "time": "13:00", "altitude": 58.5, "azimuth": 161.5 }, + { "time": "14:00", "altitude": 59.4, "azimuth": 190.7 }, + { "time": "15:00", "altitude": 54.1, "azimuth": 216.6 }, + { "time": "16:00", "altitude": 44.8, "azimuth": 234.8 }, + { "time": "17:00", "altitude": 33.5, "azimuth": 247.6 }, + { "time": "18:00", "altitude": 21.2, "azimuth": 257.2 }, + { "time": "19:00", "altitude": 8.4, "azimuth": 265.3 } +] diff --git a/vue-options-api-demos/charts/shared/power-distribution-data.json b/vue-options-api-demos/charts/shared/power-distribution-data.json new file mode 100644 index 00000000..1e9bda0c --- /dev/null +++ b/vue-options-api-demos/charts/shared/power-distribution-data.json @@ -0,0 +1,13 @@ +[ { + "kind": "Hydroelectric", "share": 0.175 +}, { + "kind": "Nuclear", "share": 0.238 +}, { + "kind": "Coal", "share": 0.118 +}, { + "kind": "Solar", "share": 0.052 +}, { + "kind": "Wind", "share": 0.225 +}, { + "kind": "Other", "share": 0.192 +} ] diff --git a/vue-options-api-demos/charts/shared/radar-data.json b/vue-options-api-demos/charts/shared/radar-data.json new file mode 100644 index 00000000..11eba02c --- /dev/null +++ b/vue-options-api-demos/charts/shared/radar-data.json @@ -0,0 +1,16 @@ +[ + { "name": "JP Morgan", "pre": 116, "post": 64 }, + { "name": "HSBC", "pre": 165, "post": 85 }, + { "name": "Credit Suisse", "pre": 215, "post": 97 }, + { "name": "Goldman Sachs", "pre": 75, "post": 27 }, + { "name": "Morgan Stanley", "pre": 100, "post": 16 }, + { "name": "Societe Generale", "pre": 49, "post": 26 }, + { "name": "UBS", "pre": 80, "post": 35 }, + { "name": "BNP Paribas", "pre": 116, "post": 32 }, + { "name": "Unicredit", "pre": 108, "post": 26 }, + { "name": "Credit Agricole", "pre": 90, "post": 17 }, + { "name": "Deutsche Bank", "pre": 67, "post": 10 }, + { "name": "Barclays", "pre": 76, "post": 7 }, + { "name": "Citigroup", "pre": 91, "post": 19 }, + { "name": "RBS", "pre": 255, "post": 5 } +] diff --git a/vue-options-api-demos/charts/shared/range-data.json b/vue-options-api-demos/charts/shared/range-data.json new file mode 100644 index 00000000..0b21030d --- /dev/null +++ b/vue-options-api-demos/charts/shared/range-data.json @@ -0,0 +1,14 @@ +[ + { "month": "January", "min": 5, "max": 11 }, + { "month": "February", "min": 5, "max": 13 }, + { "month": "March", "min": 7, "max": 15 }, + { "month": "April", "min": 10, "max": 19 }, + { "month": "May", "min": 13, "max": 23 }, + { "month": "June", "min": 17, "max": 28 }, + { "month": "July", "min": 20, "max": 30 }, + { "month": "August", "min": 20, "max": 30 }, + { "month": "September", "min": 17, "max": 26 }, + { "month": "October", "min": 13, "max": 22 }, + { "month": "November", "min": 9, "max": 16 }, + { "month": "December", "min": 6, "max": 13 } +] diff --git a/vue-options-api-demos/charts/shared/sales-data.js b/vue-options-api-demos/charts/shared/sales-data.js new file mode 100644 index 00000000..c253bc6f --- /dev/null +++ b/vue-options-api-demos/charts/shared/sales-data.js @@ -0,0 +1,247 @@ +export const salesByQuarter = [ + { + period: '2010 Q1', + date: new Date(2010, 0, 1), + count: 4485.0 + }, + { + period: '2010 Q2', + date: new Date(2010, 3, 1), + count: 4409.0 + }, + { + period: '2010 Q3', + date: new Date(2010, 6, 1), + count: 4469.0 + }, + { + period: '2010 Q4', + date: new Date(2010, 9, 1), + count: 4682.0 + }, + { + period: '2011 Q1', + date: new Date(2011, 0, 1), + count: 5610.0 + }, + { + period: '2011 Q2', + date: new Date(2011, 3, 1), + count: 6580.0 + }, + { + period: '2011 Q3', + date: new Date(2011, 6, 1), + count: 7534.0 + }, + { + period: '2011 Q4', + date: new Date(2011, 9, 1), + count: 7894.0 + }, + { + period: '2012 Q1', + date: new Date(2012, 0, 1), + count: 8748.0 + }, + { + period: '2012 Q2', + date: new Date(2012, 3, 1), + count: 10223.0 + }, + { + period: '2012 Q3', + date: new Date(2012, 6, 1), + count: 10797.0 + }, + { + period: '2012 Q4', + date: new Date(2012, 9, 1), + count: 12295.0 + }, + { + period: '2013 Q1', + date: new Date(2013, 0, 1), + count: 13153.0 + }, + { + period: '2013 Q2', + date: new Date(2013, 3, 1), + count: 14628.0 + }, + { + period: '2013 Q3', + date: new Date(2013, 6, 1), + count: 16779.0 + }, + { + period: '2013 Q4', + date: new Date(2013, 9, 1), + count: 18710.0 + }, + { + period: '2014 Q1', + date: new Date(2014, 0, 1), + count: 22219.0 + }, + { + period: '2014 Q2', + date: new Date(2014, 3, 1), + count: 25886.0 + }, + { + period: '2014 Q3', + date: new Date(2014, 6, 1), + count: 31640.0 + }, + { + period: '2014 Q4', + date: new Date(2014, 9, 1), + count: 36846.0 + }, + { + period: '2015 Q1', + date: new Date(2015, 0, 1), + count: 43433.0 + }, + { + period: '2015 Q2', + date: new Date(2015, 3, 1), + count: 48575.0 + }, + { + period: '2015 Q3', + date: new Date(2015, 6, 1), + count: 54533.0 + }, + { + period: '2015 Q4', + date: new Date(2015, 9, 1), + count: 62388.0 + }, + { + period: '2016 Q1', + date: new Date(2016, 0, 1), + count: 70706.0 + }, + { + period: '2016 Q2', + date: new Date(2016, 3, 1), + count: 75439.0 + }, + { + period: '2016 Q3', + date: new Date(2016, 6, 1), + count: 83213.0 + }, + { + period: '2016 Q4', + date: new Date(2016, 9, 1), + count: 88527.0 + }, + { + period: '2017 Q1', + date: new Date(2017, 0, 1), + count: 99865.0 + }, + { + period: '2017 Q2', + date: new Date(2017, 3, 1), + count: 107388.0 + }, + { + period: '2017 Q3', + date: new Date(2017, 6, 1), + count: 117761.0 + }, + { + period: '2017 Q4', + date: new Date(2017, 9, 1), + count: 125263.0 + }, + { + period: '2018 Q1', + date: new Date(2018, 0, 1), + count: 135950.0 + }, + { + period: '2018 Q2', + date: new Date(2018, 3, 1), + count: 144737.0 + }, + { + period: '2018 Q3', + date: new Date(2018, 6, 1), + count: 155933.0 + }, + { + period: '2018 Q4', + date: new Date(2018, 9, 1), + count: 167960.0 + }, + { + period: '2019 Q1', + date: new Date(2019, 0, 1), + count: 182725.0 + }, + { + period: '2019 Q2', + date: new Date(2019, 3, 1), + count: 199079.0 + }, + { + period: '2019 Q3', + date: new Date(2019, 6, 1), + count: 234952.0 + }, + { + period: '2019 Q4', + date: new Date(2019, 9, 1), + count: 271298.0 + }, + { + period: '2020 Q1', + date: new Date(2020, 0, 1), + count: 323309.0 + }, + { + period: '2020 Q2', + date: new Date(2020, 3, 1), + count: 358145.0 + }, + { + period: '2020 Q3', + date: new Date(2020, 6, 1), + count: 460927.0 + }, + { + period: '2020 Q4', + date: new Date(2020, 9, 1), + count: 579568.0 + }, + { + period: '2021 Q1', + date: new Date(2021, 0, 1), + count: 669590.0 + }, + { + period: '2021 Q2', + date: new Date(2021, 3, 1), + count: 793564.0 + }, + { + period: '2021 Q3', + date: new Date(2021, 6, 1), + count: 941133.0 + }, + { + period: '2021 Q4', + date: new Date(2021, 9, 1), + count: 1133020.0 + }, + { + period: '2022 Q1', + date: new Date(2022, 0, 1), + count: 426324.0 + } +]; diff --git a/vue-options-api-demos/charts/shared/scatter-line-data.json b/vue-options-api-demos/charts/shared/scatter-line-data.json new file mode 100644 index 00000000..192fd058 --- /dev/null +++ b/vue-options-api-demos/charts/shared/scatter-line-data.json @@ -0,0 +1,31 @@ +[{ + "current": 0.8, + "stats": [ + { "time": 10, "charge": 10 }, + { "time": 15, "charge": 20 }, + { "time": 20, "charge": 25 }, + { "time": 32, "charge": 40 }, + { "time": 43, "charge": 50 }, + { "time": 55, "charge": 60 }, + { "time": 60, "charge": 70 }, + { "time": 70, "charge": 80 }, + { "time": 90, "charge": 100 } + ] + }, { + "current": 1.6, + "stats": [ + { "time": 10, "charge": 40 }, + { "time": 17, "charge": 50 }, + { "time": 18, "charge": 70 }, + { "time": 35, "charge": 90 }, + { "time": 47, "charge": 95 }, + { "time": 60, "charge": 100 } + ] + }, { + "current": 3.2, + "stats": [ + { "time": 10, "charge": 70 }, + { "time": 13, "charge": 90 }, + { "time": 25, "charge": 100 } + ] +}] diff --git a/vue-options-api-demos/charts/shared/scatter-line-style-data.json b/vue-options-api-demos/charts/shared/scatter-line-style-data.json new file mode 100644 index 00000000..e8fbf411 --- /dev/null +++ b/vue-options-api-demos/charts/shared/scatter-line-style-data.json @@ -0,0 +1,28 @@ +[ + [0, 20], + [1, 1], + [2, 18], + [3, 3], + [4, 15], + [5, 5], + [6, 10], + [7, 6], + [8, 9], + [9, 6], + [10, 10], + [11, 5], + [12, 13], + [13, 3], + [14, 16], + [15, 1], + [16, 19], + [17, 1], + [18, 20], + [19, 2], + [20, 18], + [21, 5], + [22, 12], + [23, 7], + [24, 10], + [25, 8] +] diff --git a/vue-options-api-demos/charts/shared/scatter-plot-data.json b/vue-options-api-demos/charts/shared/scatter-plot-data.json new file mode 100644 index 00000000..29adf915 --- /dev/null +++ b/vue-options-api-demos/charts/shared/scatter-plot-data.json @@ -0,0 +1,17 @@ +[ + { "windSpeed": 16.4, "rainfall": 5.4 }, + { "windSpeed": 21.7, "rainfall": 2 }, + { "windSpeed": 25.4, "rainfall": 3 }, + { "windSpeed": 19, "rainfall": 2 }, + { "windSpeed": 10.9, "rainfall": 1 }, + { "windSpeed": 13.6, "rainfall": 3.2 }, + { "windSpeed": 10.9, "rainfall": 7.4 }, + { "windSpeed": 10.9, "rainfall": 0 }, + { "windSpeed": 10.9, "rainfall": 8.2 }, + { "windSpeed": 16.4, "rainfall": 0 }, + { "windSpeed": 16.4, "rainfall": 1.8 }, + { "windSpeed": 13.6, "rainfall": 0.3 }, + { "windSpeed": 29.9, "rainfall": 0 }, + { "windSpeed": 27.1, "rainfall": 2.3 }, + { "windSpeed": 16.4, "rainfall": 0 } +] diff --git a/vue-options-api-demos/charts/shared/stock-data-sample.js b/vue-options-api-demos/charts/shared/stock-data-sample.js new file mode 100644 index 00000000..20018594 --- /dev/null +++ b/vue-options-api-demos/charts/shared/stock-data-sample.js @@ -0,0 +1,2075 @@ +export const stockDataSample = +[ + { + 'Date': '2010/01/01', + 'Open': 54.13, + 'High': 54.13, + 'Low': 54.13, + 'Close': 54.13, + 'Volume': 0 + }, + { + 'Date': '2010/01/04', + 'Open': 55.72, + 'High': 56.39, + 'Low': 54.8, + 'Close': 56.18, + 'Volume': 6187088 + }, + { + 'Date': '2010/01/05', + 'Open': 56.25, + 'High': 58.28, + 'Low': 56, + 'Close': 58.02, + 'Volume': 8872728 + }, + { + 'Date': '2010/01/06', + 'Open': 58.23, + 'High': 59.99, + 'Low': 57.88, + 'Close': 59.78, + 'Volume': 8838016 + }, + { + 'Date': '2010/01/07', + 'Open': 59.51, + 'High': 62.31, + 'Low': 59.02, + 'Close': 62.2, + 'Volume': 14380744 + }, + { + 'Date': '2010/01/08', + 'Open': 61.54, + 'High': 61.78, + 'Low': 60.86, + 'Close': 61.6, + 'Volume': 7147427 + }, + { + 'Date': '2010/01/11', + 'Open': 61.95, + 'High': 62.09, + 'Low': 60.51, + 'Close': 60.87, + 'Volume': 5627699 + }, + { + 'Date': '2010/01/12', + 'Open': 60.07, + 'High': 61.2, + 'Low': 59.91, + 'Close': 60.43, + 'Volume': 5273875 + }, + { + 'Date': '2010/01/13', + 'Open': 60.61, + 'High': 61.7, + 'Low': 60.35, + 'Close': 61.16, + 'Volume': 4950400 + }, + { + 'Date': '2010/01/14', + 'Open': 61.03, + 'High': 61.62, + 'Low': 60.78, + 'Close': 61.56, + 'Volume': 3000398 + }, + { + 'Date': '2010/01/15', + 'Open': 60.82, + 'High': 60.82, + 'Low': 60.82, + 'Close': 60.82, + 'Volume': 0 + }, + { + 'Date': '2010/01/18', + 'Open': 60.82, + 'High': 60.82, + 'Low': 60.82, + 'Close': 60.82, + 'Volume': 0 + }, + { + 'Date': '2010/01/19', + 'Open': 60.6, + 'High': 61.01, + 'Low': 59.96, + 'Close': 60.65, + 'Volume': 5428029 + }, + { + 'Date': '2010/01/20', + 'Open': 60.33, + 'High': 60.57, + 'Low': 58.53, + 'Close': 60.2, + 'Volume': 5374069 + }, + { + 'Date': '2010/01/21', + 'Open': 60.3, + 'High': 61.26, + 'Low': 58.9, + 'Close': 59.2, + 'Volume': 5401938 + }, + { + 'Date': '2010/01/22', + 'Open': 58.62, + 'High': 59.17, + 'Low': 57.7, + 'Close': 57.77, + 'Volume': 4745396 + }, + { + 'Date': '2010/01/25', + 'Open': 58.35, + 'High': 58.75, + 'Low': 57.5, + 'Close': 57.78, + 'Volume': 3489914 + }, + { + 'Date': '2010/01/26', + 'Open': 57.54, + 'High': 58.5, + 'Low': 57.23, + 'Close': 57.71, + 'Volume': 4552136 + }, + { + 'Date': '2010/01/27', + 'Open': 58.84, + 'High': 62.08, + 'Low': 58.83, + 'Close': 61.93, + 'Volume': 14760056 + }, + { + 'Date': '2010/01/28', + 'Open': 62.15, + 'High': 62.95, + 'Low': 61.31, + 'Close': 62.56, + 'Volume': 8865642 + }, + { + 'Date': '2010/01/29', + 'Open': 62.8, + 'High': 63.4, + 'Low': 60.32, + 'Close': 60.6, + 'Volume': 8726177 + }, + { + 'Date': '2010/02/01', + 'Open': 60.74, + 'High': 61.86, + 'Low': 60.72, + 'Close': 61.7, + 'Volume': 5929599 + }, + { + 'Date': '2010/02/02', + 'Open': 61.29, + 'High': 62, + 'Low': 61, + 'Close': 61.94, + 'Volume': 7862734 + }, + { + 'Date': '2010/02/03', + 'Open': 61.52, + 'High': 61.8, + 'Low': 60.85, + 'Close': 61.46, + 'Volume': 5480578 + }, + { + 'Date': '2010/02/04', + 'Open': 60.95, + 'High': 61.17, + 'Low': 59.25, + 'Close': 59.32, + 'Volume': 7491344 + }, + { + 'Date': '2010/02/05', + 'Open': 59.21, + 'High': 59.74, + 'Low': 57.14, + 'Close': 58.4, + 'Volume': 9676128 + }, + { + 'Date': '2010/02/08', + 'Open': 58.33, + 'High': 58.97, + 'Low': 57.78, + 'Close': 57.89, + 'Volume': 4724664 + }, + { + 'Date': '2010/02/09', + 'Open': 58.62, + 'High': 60.43, + 'Low': 58.39, + 'Close': 59.74, + 'Volume': 8250844 + }, + { + 'Date': '2010/02/10', + 'Open': 59.71, + 'High': 60.05, + 'Low': 58.94, + 'Close': 59.54, + 'Volume': 4237165 + }, + { + 'Date': '2010/02/11', + 'Open': 59.75, + 'High': 60.75, + 'Low': 58.94, + 'Close': 60.59, + 'Volume': 4395736 + }, + { + 'Date': '2010/02/12', + 'Open': 59.65, + 'High': 59.65, + 'Low': 59.65, + 'Close': 59.65, + 'Volume': 0 + }, + { + 'Date': '2010/02/15', + 'Open': 59.65, + 'High': 59.65, + 'Low': 59.65, + 'Close': 59.65, + 'Volume': 0 + }, + { + 'Date': '2010/02/16', + 'Open': 60.42, + 'High': 61.29, + 'Low': 59.9, + 'Close': 61.26, + 'Volume': 4268659 + }, + { + 'Date': '2010/02/17', + 'Open': 61.39, + 'High': 62, + 'Low': 61, + 'Close': 61.82, + 'Volume': 4116171 + }, + { + 'Date': '2010/02/18', + 'Open': 61.78, + 'High': 63.01, + 'Low': 61.72, + 'Close': 62.89, + 'Volume': 4391778 + }, + { + 'Date': '2010/02/19', + 'Open': 62.65, + 'High': 64.34, + 'Low': 62.65, + 'Close': 63.59, + 'Volume': 7371049 + }, + { + 'Date': '2010/02/22', + 'Open': 63.58, + 'High': 64.47, + 'Low': 63.19, + 'Close': 63.97, + 'Volume': 6034004 + }, + { + 'Date': '2010/02/23', + 'Open': 63.81, + 'High': 64.17, + 'Low': 62.25, + 'Close': 62.77, + 'Volume': 6484460 + }, + { + 'Date': '2010/02/24', + 'Open': 63, + 'High': 63.7, + 'Low': 62.64, + 'Close': 63.48, + 'Volume': 3400361 + }, + { + 'Date': '2010/02/25', + 'Open': 62.72, + 'High': 62.97, + 'Low': 62, + 'Close': 62.87, + 'Volume': 5043170 + }, + { + 'Date': '2010/02/26', + 'Open': 63.09, + 'High': 63.88, + 'Low': 63.03, + 'Close': 63.16, + 'Volume': 4415909 + }, + { + 'Date': '2010/03/01', + 'Open': 63.05, + 'High': 64.33, + 'Low': 63, + 'Close': 64, + 'Volume': 5265630 + }, + { + 'Date': '2010/03/02', + 'Open': 64.64, + 'High': 65.33, + 'Low': 64.36, + 'Close': 64.44, + 'Volume': 4383103 + }, + { + 'Date': '2010/03/03', + 'Open': 64.58, + 'High': 64.97, + 'Low': 64.05, + 'Close': 64.45, + 'Volume': 4289350 + }, + { + 'Date': '2010/03/04', + 'Open': 65.09, + 'High': 65.8, + 'Low': 64.85, + 'Close': 65.55, + 'Volume': 7718659 + }, + { + 'Date': '2010/03/05', + 'Open': 66.06, + 'High': 68.04, + 'Low': 66.03, + 'Close': 67.93, + 'Volume': 8506441 + }, + { + 'Date': '2010/03/08', + 'Open': 68.01, + 'High': 68.01, + 'Low': 67.13, + 'Close': 67.24, + 'Volume': 5077225 + }, + { + 'Date': '2010/03/09', + 'Open': 67.57, + 'High': 68.34, + 'Low': 67.35, + 'Close': 67.79, + 'Volume': 7655839 + }, + { + 'Date': '2010/03/10', + 'Open': 68.14, + 'High': 70.48, + 'Low': 68.03, + 'Close': 70.01, + 'Volume': 10616531 + }, + { + 'Date': '2010/03/11', + 'Open': 70.08, + 'High': 70.43, + 'Low': 69.15, + 'Close': 70.07, + 'Volume': 7293133 + }, + { + 'Date': '2010/03/12', + 'Open': 70.48, + 'High': 70.49, + 'Low': 69.25, + 'Close': 69.83, + 'Volume': 5302767 + }, + { + 'Date': '2010/03/15', + 'Open': 69.37, + 'High': 69.77, + 'Low': 68.52, + 'Close': 69.4, + 'Volume': 7709023 + }, + { + 'Date': '2010/03/16', + 'Open': 69.24, + 'High': 69.31, + 'Low': 68.3, + 'Close': 68.72, + 'Volume': 7495575 + }, + { + 'Date': '2010/03/17', + 'Open': 68.97, + 'High': 69.49, + 'Low': 68.29, + 'Close': 69.38, + 'Volume': 6004213 + }, + { + 'Date': '2010/03/18', + 'Open': 69.35, + 'High': 70.93, + 'Low': 69.19, + 'Close': 70.87, + 'Volume': 7435774 + }, + { + 'Date': '2010/03/19', + 'Open': 73.2, + 'High': 73.3, + 'Low': 70.72, + 'Close': 70.72, + 'Volume': 17722432 + }, + { + 'Date': '2010/03/22', + 'Open': 71.66, + 'High': 72.64, + 'Low': 71.51, + 'Close': 71.91, + 'Volume': 9014855 + }, + { + 'Date': '2010/03/23', + 'Open': 72.54, + 'High': 72.63, + 'Low': 71.51, + 'Close': 72.18, + 'Volume': 4986322 + }, + { + 'Date': '2010/03/24', + 'Open': 72.42, + 'High': 73.2, + 'Low': 71.78, + 'Close': 72.32, + 'Volume': 7699920 + }, + { + 'Date': '2010/03/25', + 'Open': 72.95, + 'High': 73.43, + 'Low': 72, + 'Close': 72.49, + 'Volume': 5431155 + }, + { + 'Date': '2010/03/26', + 'Open': 72.66, + 'High': 72.99, + 'Low': 72.35, + 'Close': 72.59, + 'Volume': 4933688 + }, + { + 'Date': '2010/03/29', + 'Open': 73.08, + 'High': 74.53, + 'Low': 73, + 'Close': 74.11, + 'Volume': 9064111 + }, + { + 'Date': '2010/03/30', + 'Open': 73.84, + 'High': 74.18, + 'Low': 72.7, + 'Close': 73.53, + 'Volume': 4381292 + }, + { + 'Date': '2010/03/31', + 'Open': 72.92, + 'High': 73.06, + 'Low': 71.95, + 'Close': 72.61, + 'Volume': 5884899 + }, + { + 'Date': '2010/04/01', + 'Open': 72.99, + 'High': 72.99, + 'Low': 72.99, + 'Close': 72.99, + 'Volume': 0 + }, + { + 'Date': '2010/04/02', + 'Open': 72.99, + 'High': 72.99, + 'Low': 72.99, + 'Close': 72.99, + 'Volume': 0 + }, + { + 'Date': '2010/04/05', + 'Open': 72.99, + 'High': 73.05, + 'Low': 70.95, + 'Close': 72.04, + 'Volume': 9326414 + }, + { + 'Date': '2010/04/06', + 'Open': 71.84, + 'High': 73.18, + 'Low': 71.77, + 'Close': 72.36, + 'Volume': 5194801 + }, + { + 'Date': '2010/04/07', + 'Open': 72.16, + 'High': 72.52, + 'Low': 71.47, + 'Close': 72.1, + 'Volume': 6717177 + }, + { + 'Date': '2010/04/08', + 'Open': 71.89, + 'High': 72.46, + 'Low': 71.21, + 'Close': 72.28, + 'Volume': 3743018 + }, + { + 'Date': '2010/04/09', + 'Open': 72.26, + 'High': 72.66, + 'Low': 71.81, + 'Close': 72.42, + 'Volume': 3345780 + }, + { + 'Date': '2010/04/12', + 'Open': 72.15, + 'High': 72.57, + 'Low': 71.8, + 'Close': 71.92, + 'Volume': 3666172 + }, + { + 'Date': '2010/04/13', + 'Open': 71.54, + 'High': 71.69, + 'Low': 70.5, + 'Close': 71.19, + 'Volume': 5079284 + }, + { + 'Date': '2010/04/14', + 'Open': 70.83, + 'High': 71.76, + 'Low': 70.81, + 'Close': 71.7, + 'Volume': 3496649 + }, + { + 'Date': '2010/04/15', + 'Open': 71.34, + 'High': 72.61, + 'Low': 71.34, + 'Close': 72.09, + 'Volume': 2943682 + }, + { + 'Date': '2010/04/16', + 'Open': 72.1, + 'High': 72.1, + 'Low': 69.88, + 'Close': 70.79, + 'Volume': 8075323 + }, + { + 'Date': '2010/04/19', + 'Open': 70.27, + 'High': 71.28, + 'Low': 70.16, + 'Close': 70.96, + 'Volume': 4203068 + }, + { + 'Date': '2010/04/20', + 'Open': 71.54, + 'High': 71.98, + 'Low': 70.95, + 'Close': 71.41, + 'Volume': 4760806 + }, + { + 'Date': '2010/04/21', + 'Open': 71.51, + 'High': 74.65, + 'Low': 71.51, + 'Close': 74.16, + 'Volume': 12037705 + }, + { + 'Date': '2010/04/22', + 'Open': 74.46, + 'High': 76, + 'Low': 73.68, + 'Close': 75.59, + 'Volume': 9088834 + }, + { + 'Date': '2010/04/23', + 'Open': 75.04, + 'High': 75.68, + 'Low': 74.55, + 'Close': 75.13, + 'Volume': 5198190 + }, + { + 'Date': '2010/04/26', + 'Open': 74.58, + 'High': 75.29, + 'Low': 74.14, + 'Close': 74.34, + 'Volume': 4024935 + }, + { + 'Date': '2010/04/27', + 'Open': 74.65, + 'High': 74.93, + 'Low': 72.23, + 'Close': 72.48, + 'Volume': 6054842 + }, + { + 'Date': '2010/04/28', + 'Open': 72.95, + 'High': 72.99, + 'Low': 71.34, + 'Close': 72.37, + 'Volume': 5699477 + }, + { + 'Date': '2010/04/29', + 'Open': 73, + 'High': 74, + 'Low': 72.67, + 'Close': 73.79, + 'Volume': 5203310 + }, + { + 'Date': '2010/04/30', + 'Open': 73.8, + 'High': 74.48, + 'Low': 72.26, + 'Close': 72.43, + 'Volume': 5601081 + }, + { + 'Date': '2010/05/03', + 'Open': 72.62, + 'High': 74.7, + 'Low': 72.46, + 'Close': 74.39, + 'Volume': 5407779 + }, + { + 'Date': '2010/05/04', + 'Open': 73.31, + 'High': 73.45, + 'Low': 72.23, + 'Close': 72.79, + 'Volume': 6230700 + }, + { + 'Date': '2010/05/05', + 'Open': 71.9, + 'High': 72.04, + 'Low': 70.44, + 'Close': 71, + 'Volume': 5509124 + }, + { + 'Date': '2010/05/06', + 'Open': 70.66, + 'High': 71.49, + 'Low': 62, + 'Close': 67.97, + 'Volume': 13771537 + }, + { + 'Date': '2010/05/07', + 'Open': 68.29, + 'High': 69.12, + 'Low': 65.8, + 'Close': 66.72, + 'Volume': 8927346 + }, + { + 'Date': '2010/05/10', + 'Open': 69.96, + 'High': 71.73, + 'Low': 69.8, + 'Close': 71, + 'Volume': 8841884 + }, + { + 'Date': '2010/05/11', + 'Open': 70.31, + 'High': 72.67, + 'Low': 70.14, + 'Close': 71.42, + 'Volume': 6551880 + }, + { + 'Date': '2010/05/12', + 'Open': 72.04, + 'High': 73.37, + 'Low': 72.04, + 'Close': 72.87, + 'Volume': 6331552 + }, + { + 'Date': '2010/05/13', + 'Open': 72.66, + 'High': 73.3, + 'Low': 71.56, + 'Close': 71.76, + 'Volume': 3953696 + }, + { + 'Date': '2010/05/14', + 'Open': 71.08, + 'High': 71.4, + 'Low': 68.98, + 'Close': 69.82, + 'Volume': 7954557 + }, + { + 'Date': '2010/05/17', + 'Open': 70.36, + 'High': 70.37, + 'Low': 67.62, + 'Close': 69.68, + 'Volume': 4814936 + }, + { + 'Date': '2010/05/18', + 'Open': 69.89, + 'High': 70.13, + 'Low': 67.3, + 'Close': 67.72, + 'Volume': 8882829 + }, + { + 'Date': '2010/05/19', + 'Open': 66.85, + 'High': 67.55, + 'Low': 65.28, + 'Close': 66.21, + 'Volume': 9974312 + }, + { + 'Date': '2010/05/20', + 'Open': 65, + 'High': 65.11, + 'Low': 62.8, + 'Close': 63, + 'Volume': 10904161 + }, + { + 'Date': '2010/05/21', + 'Open': 61.99, + 'High': 65, + 'Low': 61.39, + 'Close': 64.56, + 'Volume': 10882625 + }, + { + 'Date': '2010/05/24', + 'Open': 63.66, + 'High': 64.61, + 'Low': 63.06, + 'Close': 63.15, + 'Volume': 6168825 + }, + { + 'Date': '2010/05/25', + 'Open': 61, + 'High': 62.98, + 'Low': 60.61, + 'Close': 62.78, + 'Volume': 6903135 + }, + { + 'Date': '2010/05/26', + 'Open': 63.6, + 'High': 65.41, + 'Low': 63, + 'Close': 63.26, + 'Volume': 7386008 + }, + { + 'Date': '2010/05/27', + 'Open': 64.86, + 'High': 65.23, + 'Low': 63.91, + 'Close': 65.13, + 'Volume': 7444591 + }, + { + 'Date': '2010/05/28', + 'Open': 64.18, + 'High': 64.18, + 'Low': 64.18, + 'Close': 64.18, + 'Volume': 0 + }, + { + 'Date': '2010/05/31', + 'Open': 64.18, + 'High': 64.18, + 'Low': 64.18, + 'Close': 64.18, + 'Volume': 0 + }, + { + 'Date': '2010/06/01', + 'Open': 64.27, + 'High': 65.2, + 'Low': 62.86, + 'Close': 62.95, + 'Volume': 6318443 + }, + { + 'Date': '2010/06/02', + 'Open': 63.39, + 'High': 64.37, + 'Low': 62.06, + 'Close': 64.34, + 'Volume': 4588144 + }, + { + 'Date': '2010/06/03', + 'Open': 64.84, + 'High': 64.84, + 'Low': 63.51, + 'Close': 64.31, + 'Volume': 3775793 + }, + { + 'Date': '2010/06/04', + 'Open': 63.25, + 'High': 63.41, + 'Low': 60.93, + 'Close': 61.15, + 'Volume': 8228715 + }, + { + 'Date': '2010/06/07', + 'Open': 61.69, + 'High': 61.7, + 'Low': 60.07, + 'Close': 60.11, + 'Volume': 5918574 + }, + { + 'Date': '2010/06/08', + 'Open': 60.33, + 'High': 61.1, + 'Low': 59.84, + 'Close': 61.02, + 'Volume': 7192623 + }, + { + 'Date': '2010/06/09', + 'Open': 61.48, + 'High': 63.18, + 'Low': 61.17, + 'Close': 61.71, + 'Volume': 7729414 + }, + { + 'Date': '2010/06/10', + 'Open': 62.81, + 'High': 64.01, + 'Low': 62.3, + 'Close': 63.89, + 'Volume': 5682835 + }, + { + 'Date': '2010/06/11', + 'Open': 63.16, + 'High': 65.7, + 'Low': 63.15, + 'Close': 65.38, + 'Volume': 8462575 + }, + { + 'Date': '2010/06/14', + 'Open': 66.22, + 'High': 66.55, + 'Low': 64.71, + 'Close': 64.82, + 'Volume': 6000064 + }, + { + 'Date': '2010/06/15', + 'Open': 65.67, + 'High': 67.57, + 'Low': 65.47, + 'Close': 67.48, + 'Volume': 6400775 + }, + { + 'Date': '2010/06/16', + 'Open': 66.93, + 'High': 67.56, + 'Low': 66.6, + 'Close': 67.03, + 'Volume': 4452275 + }, + { + 'Date': '2010/06/17', + 'Open': 67.48, + 'High': 67.49, + 'Low': 65.88, + 'Close': 67.26, + 'Volume': 3637256 + }, + { + 'Date': '2010/06/18', + 'Open': 67.38, + 'High': 68.14, + 'Low': 67.16, + 'Close': 67.96, + 'Volume': 6216603 + }, + { + 'Date': '2010/06/21', + 'Open': 68.95, + 'High': 69.34, + 'Low': 67.57, + 'Close': 67.97, + 'Volume': 4109588 + }, + { + 'Date': '2010/06/22', + 'Open': 67.97, + 'High': 68.47, + 'Low': 66.15, + 'Close': 66.28, + 'Volume': 4188173 + }, + { + 'Date': '2010/06/23', + 'Open': 66.42, + 'High': 67.88, + 'Low': 65.65, + 'Close': 67.45, + 'Volume': 6098515 + }, + { + 'Date': '2010/06/24', + 'Open': 67.17, + 'High': 68.24, + 'Low': 67.14, + 'Close': 67.43, + 'Volume': 7782533 + }, + { + 'Date': '2010/06/25', + 'Open': 67.31, + 'High': 68.77, + 'Low': 66.67, + 'Close': 68.77, + 'Volume': 13325760 + }, + { + 'Date': '2010/06/28', + 'Open': 68.43, + 'High': 68.62, + 'Low': 67.26, + 'Close': 67.3, + 'Volume': 5517259 + }, + { + 'Date': '2010/06/29', + 'Open': 66.11, + 'High': 66.2, + 'Low': 62.56, + 'Close': 63.04, + 'Volume': 9212875 + }, + { + 'Date': '2010/06/30', + 'Open': 63.05, + 'High': 64.21, + 'Low': 62.58, + 'Close': 62.75, + 'Volume': 7102383 + }, + { + 'Date': '2010/07/01', + 'Open': 62.48, + 'High': 62.72, + 'Low': 61.31, + 'Close': 62.26, + 'Volume': 6465874 + }, + { + 'Date': '2010/07/02', + 'Open': 61.94, + 'High': 61.94, + 'Low': 61.94, + 'Close': 61.94, + 'Volume': 0 + }, + { + 'Date': '2010/07/05', + 'Open': 61.94, + 'High': 61.94, + 'Low': 61.94, + 'Close': 61.94, + 'Volume': 0 + }, + { + 'Date': '2010/07/06', + 'Open': 62.71, + 'High': 63.02, + 'Low': 60.65, + 'Close': 61.36, + 'Volume': 5444212 + }, + { + 'Date': '2010/07/07', + 'Open': 61.48, + 'High': 63.37, + 'Low': 61.03, + 'Close': 63.3, + 'Volume': 4785046 + }, + { + 'Date': '2010/07/08', + 'Open': 64.09, + 'High': 64.89, + 'Low': 63.55, + 'Close': 64.73, + 'Volume': 4489385 + }, + { + 'Date': '2010/07/09', + 'Open': 65.2, + 'High': 65.2, + 'Low': 64.01, + 'Close': 64.66, + 'Volume': 3145076 + }, + { + 'Date': '2010/07/12', + 'Open': 64.55, + 'High': 64.98, + 'Low': 64.01, + 'Close': 64.34, + 'Volume': 2299533 + }, + { + 'Date': '2010/07/13', + 'Open': 65.15, + 'High': 65.36, + 'Low': 64.18, + 'Close': 64.43, + 'Volume': 6208260 + }, + { + 'Date': '2010/07/14', + 'Open': 64.29, + 'High': 65.39, + 'Low': 64.05, + 'Close': 64.75, + 'Volume': 3822487 + }, + { + 'Date': '2010/07/15', + 'Open': 65.65, + 'High': 65.78, + 'Low': 63.36, + 'Close': 64.37, + 'Volume': 8069172 + }, + { + 'Date': '2010/07/16', + 'Open': 63.96, + 'High': 64.26, + 'Low': 61.68, + 'Close': 61.9, + 'Volume': 7016315 + }, + { + 'Date': '2010/07/19', + 'Open': 62.72, + 'High': 63.36, + 'Low': 62.04, + 'Close': 63.18, + 'Volume': 5031493 + }, + { + 'Date': '2010/07/20', + 'Open': 62.26, + 'High': 64, + 'Low': 61.83, + 'Close': 63.88, + 'Volume': 5069055 + }, + { + 'Date': '2010/07/21', + 'Open': 64.4, + 'High': 64.81, + 'Low': 62.66, + 'Close': 63.18, + 'Volume': 4459407 + }, + { + 'Date': '2010/07/22', + 'Open': 64.02, + 'High': 67.11, + 'Low': 64.02, + 'Close': 66.6, + 'Volume': 7574451 + }, + { + 'Date': '2010/07/23', + 'Open': 66.49, + 'High': 68.17, + 'Low': 66.36, + 'Close': 67.93, + 'Volume': 5029708 + }, + { + 'Date': '2010/07/26', + 'Open': 68.15, + 'High': 68.99, + 'Low': 68, + 'Close': 68.85, + 'Volume': 5836465 + }, + { + 'Date': '2010/07/27', + 'Open': 69.25, + 'High': 69.75, + 'Low': 68.4, + 'Close': 68.62, + 'Volume': 5687098 + }, + { + 'Date': '2010/07/28', + 'Open': 67.62, + 'High': 68, + 'Low': 66.9, + 'Close': 67.32, + 'Volume': 5540629 + }, + { + 'Date': '2010/07/29', + 'Open': 67.85, + 'High': 68.53, + 'Low': 66.69, + 'Close': 67.22, + 'Volume': 4460227 + }, + { + 'Date': '2010/07/30', + 'Open': 66.61, + 'High': 68.38, + 'Low': 66.47, + 'Close': 68.14, + 'Volume': 6032163 + }, + { + 'Date': '2010/08/02', + 'Open': 69.01, + 'High': 69.93, + 'Low': 68.5, + 'Close': 69.69, + 'Volume': 5430717 + }, + { + 'Date': '2010/08/03', + 'Open': 69.31, + 'High': 70, + 'Low': 68.93, + 'Close': 69.54, + 'Volume': 3778718 + }, + { + 'Date': '2010/08/04', + 'Open': 69.42, + 'High': 69.93, + 'Low': 69.16, + 'Close': 69.25, + 'Volume': 3861191 + }, + { + 'Date': '2010/08/05', + 'Open': 68.73, + 'High': 69.25, + 'Low': 68.33, + 'Close': 68.71, + 'Volume': 4318815 + }, + { + 'Date': '2010/08/06', + 'Open': 68.03, + 'High': 68.72, + 'Low': 67.36, + 'Close': 68.7, + 'Volume': 4498788 + }, + { + 'Date': '2010/08/09', + 'Open': 69.17, + 'High': 69.47, + 'Low': 68.45, + 'Close': 68.99, + 'Volume': 2907790 + }, + { + 'Date': '2010/08/10', + 'Open': 68.29, + 'High': 68.97, + 'Low': 67.54, + 'Close': 68.62, + 'Volume': 4127296 + }, + { + 'Date': '2010/08/11', + 'Open': 67.18, + 'High': 67.26, + 'Low': 64.92, + 'Close': 65.6, + 'Volume': 5230837 + }, + { + 'Date': '2010/08/12', + 'Open': 64.65, + 'High': 65.27, + 'Low': 64.44, + 'Close': 64.7, + 'Volume': 3847607 + }, + { + 'Date': '2010/08/13', + 'Open': 64.59, + 'High': 65.7, + 'Low': 64.54, + 'Close': 64.84, + 'Volume': 3667747 + }, + { + 'Date': '2010/08/16', + 'Open': 64.27, + 'High': 64.93, + 'Low': 63.65, + 'Close': 64.4, + 'Volume': 3042334 + }, + { + 'Date': '2010/08/17', + 'Open': 65.16, + 'High': 66.91, + 'Low': 64.65, + 'Close': 65.99, + 'Volume': 4303899 + }, + { + 'Date': '2010/08/18', + 'Open': 66.05, + 'High': 66.36, + 'Low': 64.99, + 'Close': 66, + 'Volume': 2816059 + }, + { + 'Date': '2010/08/19', + 'Open': 65.74, + 'High': 65.82, + 'Low': 64.15, + 'Close': 64.62, + 'Volume': 4201568 + }, + { + 'Date': '2010/08/20', + 'Open': 64.2, + 'High': 64.73, + 'Low': 63.59, + 'Close': 64.6, + 'Volume': 3865920 + }, + { + 'Date': '2010/08/23', + 'Open': 65.09, + 'High': 65.24, + 'Low': 63.21, + 'Close': 63.3, + 'Volume': 3888194 + }, + { + 'Date': '2010/08/24', + 'Open': 62.55, + 'High': 62.81, + 'Low': 60.53, + 'Close': 60.93, + 'Volume': 9983972 + }, + { + 'Date': '2010/08/25', + 'Open': 60.49, + 'High': 61.11, + 'Low': 59.48, + 'Close': 60.76, + 'Volume': 5144544 + }, + { + 'Date': '2010/08/26', + 'Open': 61.36, + 'High': 62.56, + 'Low': 61.07, + 'Close': 61.32, + 'Volume': 4889769 + }, + { + 'Date': '2010/08/27', + 'Open': 61.13, + 'High': 63.34, + 'Low': 60.57, + 'Close': 63.16, + 'Volume': 6851673 + }, + { + 'Date': '2010/08/30', + 'Open': 63, + 'High': 63.19, + 'Low': 62.1, + 'Close': 62.1, + 'Volume': 3279135 + }, + { + 'Date': '2010/08/31', + 'Open': 62, + 'High': 62.18, + 'Low': 60.8, + 'Close': 61.13, + 'Volume': 5309421 + }, + { + 'Date': '2010/09/01', + 'Open': 61.79, + 'High': 63.09, + 'Low': 61.66, + 'Close': 62.29, + 'Volume': 5688798 + }, + { + 'Date': '2010/09/02', + 'Open': 62.34, + 'High': 63.39, + 'Low': 62.2, + 'Close': 63.39, + 'Volume': 3465719 + }, + { + 'Date': '2010/09/03', + 'Open': 64.64, + 'High': 64.64, + 'Low': 64.64, + 'Close': 64.64, + 'Volume': 0 + }, + { + 'Date': '2010/09/06', + 'Open': 64.64, + 'High': 64.64, + 'Low': 64.64, + 'Close': 64.64, + 'Volume': 0 + }, + { + 'Date': '2010/09/07', + 'Open': 64.25, + 'High': 64.25, + 'Low': 63.29, + 'Close': 63.42, + 'Volume': 2529793 + }, + { + 'Date': '2010/09/08', + 'Open': 63.6, + 'High': 65, + 'Low': 63.58, + 'Close': 64.5, + 'Volume': 3747703 + }, + { + 'Date': '2010/09/09', + 'Open': 65.51, + 'High': 65.63, + 'Low': 62.95, + 'Close': 63.44, + 'Volume': 4190696 + }, + { + 'Date': '2010/09/10', + 'Open': 63.38, + 'High': 64.1, + 'Low': 62.96, + 'Close': 63.84, + 'Volume': 3214772 + }, + { + 'Date': '2010/09/13', + 'Open': 64.73, + 'High': 64.98, + 'Low': 63.92, + 'Close': 64.19, + 'Volume': 3126886 + }, + { + 'Date': '2010/09/14', + 'Open': 64.02, + 'High': 64.35, + 'Low': 62.43, + 'Close': 62.76, + 'Volume': 6025475 + }, + { + 'Date': '2010/09/15', + 'Open': 62.49, + 'High': 62.79, + 'Low': 61.89, + 'Close': 62.73, + 'Volume': 4929167 + }, + { + 'Date': '2010/09/16', + 'Open': 62.39, + 'High': 63.35, + 'Low': 62.2, + 'Close': 62.58, + 'Volume': 4681838 + }, + { + 'Date': '2010/09/17', + 'Open': 63.26, + 'High': 63.34, + 'Low': 62, + 'Close': 62.95, + 'Volume': 10702625 + }, + { + 'Date': '2010/09/20', + 'Open': 62.99, + 'High': 63.9, + 'Low': 62.53, + 'Close': 63.72, + 'Volume': 4187283 + }, + { + 'Date': '2010/09/21', + 'Open': 63.8, + 'High': 64.5, + 'Low': 63.39, + 'Close': 64.23, + 'Volume': 5361146 + }, + { + 'Date': '2010/09/22', + 'Open': 64.38, + 'High': 64.86, + 'Low': 63.63, + 'Close': 63.9, + 'Volume': 3635438 + }, + { + 'Date': '2010/09/23', + 'Open': 63.31, + 'High': 63.49, + 'Low': 62.56, + 'Close': 62.65, + 'Volume': 3656936 + }, + { + 'Date': '2010/09/24', + 'Open': 63.52, + 'High': 64.83, + 'Low': 63.33, + 'Close': 64.6, + 'Volume': 4626836 + }, + { + 'Date': '2010/09/27', + 'Open': 64.61, + 'High': 64.7, + 'Low': 63.8, + 'Close': 63.89, + 'Volume': 2762402 + }, + { + 'Date': '2010/09/28', + 'Open': 63.85, + 'High': 64.67, + 'Low': 62.94, + 'Close': 64.52, + 'Volume': 3583321 + }, + { + 'Date': '2010/09/29', + 'Open': 64.71, + 'High': 66.26, + 'Low': 64.44, + 'Close': 65.97, + 'Volume': 5874689 + }, + { + 'Date': '2010/09/30', + 'Open': 67.09, + 'High': 67.97, + 'Low': 66.05, + 'Close': 66.54, + 'Volume': 8214220 + }, + { + 'Date': '2010/10/01', + 'Open': 67.54, + 'High': 67.98, + 'Low': 66.67, + 'Close': 66.83, + 'Volume': 4489476 + }, + { + 'Date': '2010/10/04', + 'Open': 66.57, + 'High': 67.89, + 'Low': 65.86, + 'Close': 66.33, + 'Volume': 4073665 + }, + { + 'Date': '2010/10/05', + 'Open': 67.02, + 'High': 68.98, + 'Low': 67.02, + 'Close': 68.6, + 'Volume': 7517772 + }, + { + 'Date': '2010/10/06', + 'Open': 68.61, + 'High': 69.39, + 'Low': 68.41, + 'Close': 68.58, + 'Volume': 4719126 + }, + { + 'Date': '2010/10/07', + 'Open': 68.97, + 'High': 69.14, + 'Low': 67.8, + 'Close': 68.46, + 'Volume': 5506142 + }, + { + 'Date': '2010/10/08', + 'Open': 68.47, + 'High': 69.71, + 'Low': 68.15, + 'Close': 69.23, + 'Volume': 3335682 + }, + { + 'Date': '2010/10/11', + 'Open': 69.51, + 'High': 70.25, + 'Low': 69.23, + 'Close': 69.99, + 'Volume': 3469356 + }, + { + 'Date': '2010/10/12', + 'Open': 70.16, + 'High': 70.6, + 'Low': 68.91, + 'Close': 70.22, + 'Volume': 4381517 + }, + { + 'Date': '2010/10/13', + 'Open': 70.73, + 'High': 72.17, + 'Low': 70.66, + 'Close': 71.47, + 'Volume': 6038876 + }, + { + 'Date': '2010/10/14', + 'Open': 71.73, + 'High': 72, + 'Low': 70.85, + 'Close': 71.36, + 'Volume': 3841826 + }, + { + 'Date': '2010/10/15', + 'Open': 71.85, + 'High': 71.9, + 'Low': 70.05, + 'Close': 70.11, + 'Volume': 5641988 + }, + { + 'Date': '2010/10/18', + 'Open': 70.19, + 'High': 71.05, + 'Low': 70.03, + 'Close': 70.23, + 'Volume': 4832596 + }, + { + 'Date': '2010/10/19', + 'Open': 69.57, + 'High': 69.96, + 'Low': 68.35, + 'Close': 69.05, + 'Volume': 4493842 + }, + { + 'Date': '2010/10/20', + 'Open': 70, + 'High': 71.94, + 'Low': 69.57, + 'Close': 71.36, + 'Volume': 8067660 + }, + { + 'Date': '2010/10/21', + 'Open': 71.61, + 'High': 71.88, + 'Low': 70.57, + 'Close': 71.5, + 'Volume': 4630931 + }, + { + 'Date': '2010/10/22', + 'Open': 71.38, + 'High': 71.63, + 'Low': 70.61, + 'Close': 71.26, + 'Volume': 3062553 + }, + { + 'Date': '2010/10/25', + 'Open': 71.68, + 'High': 72.49, + 'Low': 71.47, + 'Close': 71.66, + 'Volume': 4802975 + }, + { + 'Date': '2010/10/26', + 'Open': 71.1, + 'High': 71.65, + 'Low': 70.73, + 'Close': 71.3, + 'Volume': 3547112 + }, + { + 'Date': '2010/10/27', + 'Open': 70.87, + 'High': 71.11, + 'Low': 69.71, + 'Close': 70.86, + 'Volume': 3818178 + }, + { + 'Date': '2010/10/28', + 'Open': 71.3, + 'High': 71.79, + 'Low': 70.35, + 'Close': 71.27, + 'Volume': 4128092 + }, + { + 'Date': '2010/10/29', + 'Open': 71.15, + 'High': 71.46, + 'Low': 70.36, + 'Close': 70.64, + 'Volume': 3202225 + }, + { + 'Date': '2010/11/01', + 'Open': 70.71, + 'High': 71.89, + 'Low': 69.91, + 'Close': 70.48, + 'Volume': 3324632 + }, + { + 'Date': '2010/11/02', + 'Open': 70.85, + 'High': 70.98, + 'Low': 68.8, + 'Close': 69.78, + 'Volume': 6340501 + }, + { + 'Date': '2010/11/03', + 'Open': 69.66, + 'High': 69.73, + 'Low': 68.04, + 'Close': 68.94, + 'Volume': 4676861 + }, + { + 'Date': '2010/11/04', + 'Open': 70, + 'High': 71.58, + 'Low': 69.78, + 'Close': 70.85, + 'Volume': 5758303 + }, + { + 'Date': '2010/11/05', + 'Open': 70.85, + 'High': 71.65, + 'Low': 70.5, + 'Close': 71.27, + 'Volume': 3625799 + }, + { + 'Date': '2010/11/08', + 'Open': 70.06, + 'High': 70.41, + 'Low': 69.75, + 'Close': 70.21, + 'Volume': 4171524 + }, + { + 'Date': '2010/11/09', + 'Open': 70.27, + 'High': 70.55, + 'Low': 68.83, + 'Close': 69.25, + 'Volume': 4587423 + }, + { + 'Date': '2010/11/10', + 'Open': 67.69, + 'High': 67.69, + 'Low': 66.79, + 'Close': 67.07, + 'Volume': 10494604 + }, + { + 'Date': '2010/11/11', + 'Open': 66.55, + 'High': 66.7, + 'Low': 65.04, + 'Close': 65.37, + 'Volume': 10033682 + }, + { + 'Date': '2010/11/12', + 'Open': 65.01, + 'High': 65.25, + 'Low': 63.01, + 'Close': 63.09, + 'Volume': 16721476 + }, + { + 'Date': '2010/11/15', + 'Open': 63.35, + 'High': 64.1, + 'Low': 62.62, + 'Close': 63.61, + 'Volume': 10968680 + }, + { + 'Date': '2010/11/16', + 'Open': 63.35, + 'High': 63.35, + 'Low': 61.84, + 'Close': 62.78, + 'Volume': 9636736 + }, + { + 'Date': '2010/11/17', + 'Open': 62.67, + 'High': 63.02, + 'Low': 62.17, + 'Close': 62.5, + 'Volume': 8173227 + }, + { + 'Date': '2010/11/18', + 'Open': 63.35, + 'High': 64.72, + 'Low': 62.72, + 'Close': 64.61, + 'Volume': 11579001 + }, + { + 'Date': '2010/11/19', + 'Open': 64.53, + 'High': 64.74, + 'Low': 63.39, + 'Close': 63.59, + 'Volume': 8824612 + }, + { + 'Date': '2010/11/22', + 'Open': 63.02, + 'High': 64.17, + 'Low': 62.8, + 'Close': 64.03, + 'Volume': 5917125 + }, + { + 'Date': '2010/11/23', + 'Open': 63.43, + 'High': 64.11, + 'Low': 63.1, + 'Close': 63.6, + 'Volume': 6567822 + }, + { + 'Date': '2010/11/24', + 'Open': 65.41, + 'High': 65.41, + 'Low': 65.41, + 'Close': 65.41, + 'Volume': 0 + }, + { + 'Date': '2010/11/26', + 'Open': 65.09, + 'High': 65.46, + 'Low': 64.67, + 'Close': 64.8, + 'Volume': 2280773 + }, + { + 'Date': '2010/11/29', + 'Open': 64.33, + 'High': 64.7, + 'Low': 63.44, + 'Close': 64.36, + 'Volume': 4385199 + }, + { + 'Date': '2010/11/30', + 'Open': 63.73, + 'High': 64.21, + 'Low': 63.47, + 'Close': 63.77, + 'Volume': 5819079 + }, + { + 'Date': '2010/12/01', + 'Open': 64.66, + 'High': 65.79, + 'Low': 64.52, + 'Close': 65.72, + 'Volume': 7515183 + }, + { + 'Date': '2010/12/02', + 'Open': 65.62, + 'High': 66.8, + 'Low': 65.55, + 'Close': 66.59, + 'Volume': 4768256 + }, + { + 'Date': '2010/12/03', + 'Open': 66.58, + 'High': 66.68, + 'Low': 65.95, + 'Close': 66.54, + 'Volume': 3357522 + }, + { + 'Date': '2010/12/06', + 'Open': 66.41, + 'High': 66.96, + 'Low': 65.97, + 'Close': 66.59, + 'Volume': 3455003 + }, + { + 'Date': '2010/12/07', + 'Open': 67.04, + 'High': 67.39, + 'Low': 66.01, + 'Close': 66.23, + 'Volume': 4739511 + }, + { + 'Date': '2010/12/08', + 'Open': 66.19, + 'High': 66.56, + 'Low': 64.92, + 'Close': 65.18, + 'Volume': 5230594 + }, + { + 'Date': '2010/12/09', + 'Open': 65.61, + 'High': 65.61, + 'Low': 64.4, + 'Close': 64.61, + 'Volume': 5188492 + }, + { + 'Date': '2010/12/10', + 'Open': 64.63, + 'High': 64.77, + 'Low': 63.96, + 'Close': 64.16, + 'Volume': 5501949 + }, + { + 'Date': '2010/12/13', + 'Open': 64.23, + 'High': 64.38, + 'Low': 63.63, + 'Close': 63.79, + 'Volume': 4823758 + }, + { + 'Date': '2010/12/14', + 'Open': 63.85, + 'High': 65.11, + 'Low': 63.68, + 'Close': 64.49, + 'Volume': 6304424 + }, + { + 'Date': '2010/12/15', + 'Open': 64.29, + 'High': 64.69, + 'Low': 64.09, + 'Close': 64.24, + 'Volume': 3439085 + }, + { + 'Date': '2010/12/16', + 'Open': 64.33, + 'High': 64.85, + 'Low': 63.71, + 'Close': 64.4, + 'Volume': 5169047 + }, + { + 'Date': '2010/12/17', + 'Open': 64.89, + 'High': 65.28, + 'Low': 64.35, + 'Close': 65.03, + 'Volume': 8884612 + }, + { + 'Date': '2010/12/20', + 'Open': 64.74, + 'High': 64.77, + 'Low': 62.82, + 'Close': 63.27, + 'Volume': 9710920 + }, + { + 'Date': '2010/12/21', + 'Open': 63.61, + 'High': 64.35, + 'Low': 63.28, + 'Close': 64.19, + 'Volume': 5092820 + }, + { + 'Date': '2010/12/22', + 'Open': 64.45, + 'High': 65.14, + 'Low': 64.01, + 'Close': 64.61, + 'Volume': 5255958 + }, + { + 'Date': '2010/12/23', + 'Open': 65.06, + 'High': 65.06, + 'Low': 65.06, + 'Close': 65.06, + 'Volume': 0 + }, + { + 'Date': '2010/12/27', + 'Open': 64.73, + 'High': 64.91, + 'Low': 64.33, + 'Close': 64.75, + 'Volume': 2549101 + }, + { + 'Date': '2010/12/28', + 'Open': 64.81, + 'High': 65, + 'Low': 64.33, + 'Close': 64.86, + 'Volume': 2643380 + }, + { + 'Date': '2010/12/29', + 'Open': 65, + 'High': 65.2, + 'Low': 64.62, + 'Close': 65.05, + 'Volume': 2505431 + }, + { + 'Date': '2010/12/30', + 'Open': 65.11, + 'High': 65.23, + 'Low': 64.73, + 'Close': 65.01, + 'Volume': 2343020 + }, + { + 'Date': '2010/12/31', + 'Open': 64.9, + 'High': 65.29, + 'Low': 64.62, + 'Close': 65.26, + 'Volume': 2137676 + } +]; diff --git a/vue-options-api-demos/charts/shared/stock-data.json b/vue-options-api-demos/charts/shared/stock-data.json new file mode 100644 index 00000000..895e31a8 --- /dev/null +++ b/vue-options-api-demos/charts/shared/stock-data.json @@ -0,0 +1,410 @@ +[ + { + "Date": "\/Date(1196467200000)\/", + "Close": 40.635, + "Volume": 1650185491, + "Open": 40.640, + "High": 40.680, + "Low": 39.090 + }, + { + "Date": "\/Date(1199145600000)\/", + "Close": 40.130, + "Volume": 1979918237, + "Open": 40.130, + "High": 40.292, + "Low": 36.460 + }, + { + "Date": "\/Date(1201824000000)\/", + "Close": 38.440, + "Volume": 1572505911, + "Open": 38.440, + "High": 38.480, + "Low": 36.697 + }, + { + "Date": "\/Date(1204329600000)\/", + "Close": 38.240, + "Volume": 1922276774, + "Open": 38.240, + "High": 38.290, + "Low": 35.940 + }, + { + "Date": "\/Date(1207008000000)\/", + "Close": 37.031, + "Volume": 2078426778, + "Open": 37.032, + "High": 37.070, + "Low": 34.350 + }, + { + "Date": "\/Date(1209600000000)\/", + "Close": 38.240, + "Volume": 1727585885, + "Open": 38.250, + "High": 38.270, + "Low": 34.886 + }, + { + "Date": "\/Date(1212278400000)\/", + "Close": 38.650, + "Volume": 1776948280, + "Open": 38.630, + "High": 38.680, + "Low": 36.700 + }, + { + "Date": "\/Date(1214870400000)\/", + "Close": 39.900, + "Volume": 1456330078, + "Open": 39.900, + "High": 39.921, + "Low": 36.550 + }, + { + "Date": "\/Date(1217548800000)\/", + "Close": 40.100, + "Volume": 1557166494, + "Open": 40.095, + "High": 40.140, + "Low": 38.260 + }, + { + "Date": "\/Date(1220227200000)\/", + "Close": 39.841, + "Volume": 1506305343, + "Open": 39.840, + "High": 39.910, + "Low": 38.240 + }, + { + "Date": "\/Date(1222819200000)\/", + "Close": 39.859, + "Volume": 2034928239, + "Open": 39.852, + "High": 39.880, + "Low": 37.330 + }, + { + "Date": "\/Date(1225497600000)\/", + "Close": 41.993, + "Volume": 1542204312, + "Open": 41.990, + "High": 42.020, + "Low": 38.710 + }, + { + "Date": "\/Date(1228089600000)\/", + "Close": 42.300, + "Volume": 1255678260, + "Open": 42.298, + "High": 42.310, + "Low": 40.360 + }, + { + "Date": "\/Date(1230768000000)\/", + "Close": 43.290, + "Volume": 1685490186, + "Open": 43.290, + "High": 43.310, + "Low": 40.160 + }, + { + "Date": "\/Date(1233446400000)\/", + "Close": 42.130, + "Volume": 1445458017, + "Open": 42.040, + "High": 42.170, + "Low": 40.260 + }, + { + "Date": "\/Date(1235865600000)\/", + "Close": 42.140, + "Volume": 1958550854, + "Open": 42.140, + "High": 42.300, + "Low": 40.190 + }, + { + "Date": "\/Date(1238544000000)\/", + "Close": 42.860, + "Volume": 1533883066, + "Open": 42.890, + "High": 43.050, + "Low": 41.390 + }, + { + "Date": "\/Date(1241136000000)\/", + "Close": 42.230, + "Volume": 2396221596, + "Open": 42.240, + "High": 42.280, + "Low": 38.230 + }, + { + "Date": "\/Date(1243814400000)\/", + "Close": 39.800, + "Volume": 2709886930, + "Open": 39.960, + "High": 40.000, + "Low": 37.160 + }, + { + "Date": "\/Date(1246406400000)\/", + "Close": 39.000, + "Volume": 2091835303, + "Open": 38.938, + "High": 39.000, + "Low": 35.540 + }, + { + "Date": "\/Date(1249084800000)\/", + "Close": 38.960, + "Volume": 1986978146, + "Open": 38.970, + "High": 39.030, + "Low": 36.260 + }, + { + "Date": "\/Date(1251763200000)\/", + "Close": 40.910, + "Volume": 1860762246, + "Open": 40.910, + "High": 40.950, + "Low": 38.320 + }, + { + "Date": "\/Date(1254355200000)\/", + "Close": 42.880, + "Volume": 1974572432, + "Open": 42.890, + "High": 42.920, + "Low": 39.880 + }, + { + "Date": "\/Date(1257033600000)\/", + "Close": 44.780, + "Volume": 1903112379, + "Open": 44.770, + "High": 44.860, + "Low": 41.610 + }, + { + "Date": "\/Date(1259625600000)\/", + "Close": 44.700, + "Volume": 1533161602, + "Open": 44.710, + "High": 44.760, + "Low": 42.880 + }, + { + "Date": "\/Date(1262304000000)\/", + "Close": 45.360, + "Volume": 1823989418, + "Open": 45.350, + "High": 45.400, + "Low": 42.530 + }, + { + "Date": "\/Date(1264982400000)\/", + "Close": 45.470, + "Volume": 1730644867, + "Open": 45.485, + "High": 45.550, + "Low": 42.930 + }, + { + "Date": "\/Date(1267401600000)\/", + "Close": 44.420, + "Volume": 1749294085, + "Open": 44.440, + "High": 44.440, + "Low": 42.060 + }, + { + "Date": "\/Date(1270080000000)\/", + "Close": 46.590, + "Volume": 1171507724, + "Open": 46.590, + "High": 46.650, + "Low": 43.300 + }, + { + "Date": "\/Date(1272672000000)\/", + "Close": 47.500, + "Volume": 1282648621, + "Open": 47.500, + "High": 47.520, + "Low": 45.660 + }, + { + "Date": "\/Date(1275350400000)\/", + "Close": 47.880, + "Volume": 1228561577, + "Open": 47.880, + "High": 47.920, + "Low": 46.160 + }, + { + "Date": "\/Date(1277942400000)\/", + "Close": 50.640, + "Volume": 992870269, + "Open": 50.640, + "High": 50.654, + "Low": 47.470 + }, + { + "Date": "\/Date(1280620800000)\/", + "Close": 49.020, + "Volume": 981208528, + "Open": 49.020, + "High": 49.060, + "Low": 44.390 + }, + { + "Date": "\/Date(1283299200000)\/", + "Close": 51.631, + "Volume": 573031521, + "Open": 51.630, + "High": 51.680, + "Low": 47.810 + }, + { + "Date": "\/Date(1285891200000)\/", + "Close": 55.010, + "Volume": 1103427032, + "Open": 54.959, + "High": 55.060, + "Low": 51.340 + }, + { + "Date": "\/Date(1288569600000)\/", + "Close": 54.680, + "Volume": 995365278, + "Open": 54.660, + "High": 54.770, + "Low": 48.660 + }, + { + "Date": "\/Date(1291161600000)\/", + "Close": 52.840, + "Volume": 577831801, + "Open": 52.840, + "High": 52.840, + "Low": 49.180 + }, + { + "Date": "\/Date(1293840000000)\/", + "Close": 51.370, + "Volume": 849837840, + "Open": 51.380, + "High": 51.460, + "Low": 41.630 + }, + { + "Date": "\/Date(1296518400000)\/", + "Close": 45.650, + "Volume": 569927484, + "Open": 45.650, + "High": 45.870, + "Low": 42.160 + }, + { + "Date": "\/Date(1298937600000)\/", + "Close": 45.020, + "Volume": 563447812, + "Open": 45.040, + "High": 45.070, + "Low": 41.050 + }, + { + "Date": "\/Date(1301616000000)\/", + "Close": 47.920, + "Volume": 579215682, + "Open": 47.930, + "High": 48.050, + "Low": 43.690 + }, + { + "Date": "\/Date(1304208000000)\/", + "Close": 50.450, + "Volume": 589335627, + "Open": 50.450, + "High": 50.469, + "Low": 47.220 + }, + { + "Date": "\/Date(1306886400000)\/", + "Close": 50.540, + "Volume": 633735895, + "Open": 50.480, + "High": 50.610, + "Low": 44.980 + }, + { + "Date": "\/Date(1309478400000)\/", + "Close": 46.060, + "Volume": 558670899, + "Open": 46.050, + "High": 46.120, + "Low": 43.300 + }, + { + "Date": "\/Date(1312156800000)\/", + "Close": 48.490, + "Volume": 629930051, + "Open": 48.480, + "High": 48.560, + "Low": 44.300 + }, + { + "Date": "\/Date(1314835200000)\/", + "Close": 46.930, + "Volume": 808574022, + "Open": 46.920, + "High": 47.070, + "Low": 37.180 + }, + { + "Date": "\/Date(1317427200000)\/", + "Close": 38.890, + "Volume": 799617379, + "Open": 38.860, + "High": 38.970, + "Low": 28.090 + }, + { + "Date": "\/Date(1320105600000)\/", + "Close": 33.920, + "Volume": 394335489, + "Open": 33.930, + "High": 34.010, + "Low": 25.060 + }, + { + "Date": "\/Date(1322697600000)\/", + "Close": 30.720, + "Volume": 715467389, + "Open": 30.730, + "High": 30.820, + "Low": 26.850 + }, + { + "Date": "\/Date(1325376000000)\/", + "Close": 31.590, + "Volume": 1176242873, + "Open": 31.590, + "High": 31.630, + "Low": 27.960 + }, + { + "Date": "\/Date(1328054400000)\/", + "Close": 31.650, + "Volume": 1194157236, + "Open": 31.650, + "High": 31.680, + "Low": 27.390 + } +] diff --git a/vue-options-api-demos/charts/shared/waterfall-data.json b/vue-options-api-demos/charts/shared/waterfall-data.json new file mode 100644 index 00000000..a60ac5dd --- /dev/null +++ b/vue-options-api-demos/charts/shared/waterfall-data.json @@ -0,0 +1,31 @@ +[{ + "period": "Beginning \n Balance", + "amount": 50000 + }, { + "period": "Jan", + "amount": 17000 + }, { + "period": "Feb", + "amount": 14000 + }, { + "period": "Mar", + "amount": -12000 + }, { + "period": "Q1", + "summary": "runningTotal" + }, { + "period": "Apr", + "amount": -22000 + }, { + "period": "May", + "amount": -18000 + }, { + "period": "Jun", + "amount": 10000 + }, { + "period": "Q2", + "summary": "runningTotal" + }, { + "period": "Ending \n Balance", + "summary": "total" + }] diff --git a/vue-options-api-demos/charts/shared/weather-data.js b/vue-options-api-demos/charts/shared/weather-data.js new file mode 100644 index 00000000..bf815e3d --- /dev/null +++ b/vue-options-api-demos/charts/shared/weather-data.js @@ -0,0 +1,220 @@ +const data = () => +[ + { + Timestamp: '2018-01-01T00:00:00.000', + TMax: 3.3, + TMin: -12, + Wind: 5.5, + Rain: 0 + }, + { + Timestamp: '2018-01-02T00:00:00.000', + TMax: 5.2, + TMin: -10, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-03T00:00:00.000', + TMax: 3.2, + TMin: -8, + Wind: 8.1, + Rain: 0 + }, + { + Timestamp: '2018-01-04T00:00:00.000', + TMax: 11, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-05T00:00:00.000', + TMax: 9, + TMin: 0, + Wind: 21.7, + Rain: 1.8 + }, + { + Timestamp: '2018-01-06T00:00:00.000', + TMax: 2, + TMin: -1, + Wind: 21.7, + Rain: 19.7 + }, + { + Timestamp: '2018-01-07T00:00:00.000', + TMax: 2, + TMin: -3, + Wind: 24.5, + Rain: 1.3 + }, + { + Timestamp: '2018-01-08T00:00:00.000', + TMax: 3, + TMin: -2, + Wind: 16.4, + Rain: 0.8 + }, + { + Timestamp: '2018-01-09T00:00:00.000', + TMax: 3, + TMin: -7, + Wind: 13.6, + Rain: 0.3 + }, + { + Timestamp: '2018-01-10T00:00:00.000', + TMax: 2.2, + TMin: -8, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-11T00:00:00.000', + TMax: 4, + TMin: -6, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-12T00:00:00.000', + TMax: 5.5, + TMin: -6, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-13T00:00:00.000', + TMax: 2.7, + TMin: -2, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-14T00:00:00.000', + TMax: 0, + TMin: -6, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-15T00:00:00.000', + TMax: -1, + TMin: -6, + Wind: 27.1, + Rain: 0 + }, + { + Timestamp: '2018-01-16T00:00:00.000', + TMax: 0, + TMin: -7, + Wind: 24.5, + Rain: 0 + }, + { + Timestamp: '2018-01-17T00:00:00.000', + TMax: 1, + TMin: -7, + Wind: 21.7, + Rain: 0 + }, + { + Timestamp: '2018-01-18T00:00:00.000', + TMax: 5, + TMin: -6, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-19T00:00:00.000', + TMax: 6, + TMin: -3, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-20T00:00:00.000', + TMax: 3, + TMin: -3, + Wind: 29.9, + Rain: 7.2 + }, + { + Timestamp: '2018-01-21T00:00:00.000', + TMax: 2.2, + TMin: -7, + Wind: 19, + Rain: 1.5 + }, + { + Timestamp: '2018-01-22T00:00:00.000', + TMax: 6.2, + TMin: -8, + Wind: 8.1, + Rain: 0.3 + }, + { + Timestamp: '2018-01-23T00:00:00.000', + TMax: 6, + TMin: -2, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-24T00:00:00.000', + TMax: 2.4, + TMin: -2, + Wind: 16.4, + Rain: 5.1 + }, + { + Timestamp: '2018-01-25T00:00:00.000', + TMax: -1.4, + TMin: -9, + Wind: 16.4, + Rain: 17.2 + }, + { + Timestamp: '2018-01-26T00:00:00.000', + TMax: 0, + TMin: -8, + Wind: 10.9, + Rain: 5.9 + }, + { + Timestamp: '2018-01-27T00:00:00.000', + TMax: -2.7, + TMin: -9, + Wind: 16.4, + Rain: 0 + }, + { + Timestamp: '2018-01-28T00:00:00.000', + TMax: -2.4, + TMin: -14, + Wind: 19, + Rain: 0 + }, + { + Timestamp: '2018-01-29T00:00:00.000', + TMax: -5, + TMin: -20, + Wind: 13.6, + Rain: 0 + }, + { + Timestamp: '2018-01-30T00:00:00.000', + TMax: -5.4, + TMin: -22, + Wind: 5.5, + Rain: 0 + } +]; + +export const mockData = () => + data().map(p => { + p.Date = new Date(p.Timestamp); + return p; + } +); diff --git a/vue-options-api-demos/charts/sparkline/main.js b/vue-options-api-demos/charts/sparkline/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/sparkline/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/sparkline/main.vue b/vue-options-api-demos/charts/sparkline/main.vue new file mode 100644 index 00000000..5156349a --- /dev/null +++ b/vue-options-api-demos/charts/sparkline/main.vue @@ -0,0 +1,81 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/stock-chart/default/main.js b/vue-options-api-demos/charts/stock-chart/default/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/default/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/stock-chart/default/main.vue b/vue-options-api-demos/charts/stock-chart/default/main.vue new file mode 100644 index 00000000..5bb46dca --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/default/main.vue @@ -0,0 +1,75 @@ + + diff --git a/vue-options-api-demos/charts/stock-chart/default/stock-data.json b/vue-options-api-demos/charts/stock-chart/default/stock-data.json new file mode 100644 index 00000000..895e31a8 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/default/stock-data.json @@ -0,0 +1,410 @@ +[ + { + "Date": "\/Date(1196467200000)\/", + "Close": 40.635, + "Volume": 1650185491, + "Open": 40.640, + "High": 40.680, + "Low": 39.090 + }, + { + "Date": "\/Date(1199145600000)\/", + "Close": 40.130, + "Volume": 1979918237, + "Open": 40.130, + "High": 40.292, + "Low": 36.460 + }, + { + "Date": "\/Date(1201824000000)\/", + "Close": 38.440, + "Volume": 1572505911, + "Open": 38.440, + "High": 38.480, + "Low": 36.697 + }, + { + "Date": "\/Date(1204329600000)\/", + "Close": 38.240, + "Volume": 1922276774, + "Open": 38.240, + "High": 38.290, + "Low": 35.940 + }, + { + "Date": "\/Date(1207008000000)\/", + "Close": 37.031, + "Volume": 2078426778, + "Open": 37.032, + "High": 37.070, + "Low": 34.350 + }, + { + "Date": "\/Date(1209600000000)\/", + "Close": 38.240, + "Volume": 1727585885, + "Open": 38.250, + "High": 38.270, + "Low": 34.886 + }, + { + "Date": "\/Date(1212278400000)\/", + "Close": 38.650, + "Volume": 1776948280, + "Open": 38.630, + "High": 38.680, + "Low": 36.700 + }, + { + "Date": "\/Date(1214870400000)\/", + "Close": 39.900, + "Volume": 1456330078, + "Open": 39.900, + "High": 39.921, + "Low": 36.550 + }, + { + "Date": "\/Date(1217548800000)\/", + "Close": 40.100, + "Volume": 1557166494, + "Open": 40.095, + "High": 40.140, + "Low": 38.260 + }, + { + "Date": "\/Date(1220227200000)\/", + "Close": 39.841, + "Volume": 1506305343, + "Open": 39.840, + "High": 39.910, + "Low": 38.240 + }, + { + "Date": "\/Date(1222819200000)\/", + "Close": 39.859, + "Volume": 2034928239, + "Open": 39.852, + "High": 39.880, + "Low": 37.330 + }, + { + "Date": "\/Date(1225497600000)\/", + "Close": 41.993, + "Volume": 1542204312, + "Open": 41.990, + "High": 42.020, + "Low": 38.710 + }, + { + "Date": "\/Date(1228089600000)\/", + "Close": 42.300, + "Volume": 1255678260, + "Open": 42.298, + "High": 42.310, + "Low": 40.360 + }, + { + "Date": "\/Date(1230768000000)\/", + "Close": 43.290, + "Volume": 1685490186, + "Open": 43.290, + "High": 43.310, + "Low": 40.160 + }, + { + "Date": "\/Date(1233446400000)\/", + "Close": 42.130, + "Volume": 1445458017, + "Open": 42.040, + "High": 42.170, + "Low": 40.260 + }, + { + "Date": "\/Date(1235865600000)\/", + "Close": 42.140, + "Volume": 1958550854, + "Open": 42.140, + "High": 42.300, + "Low": 40.190 + }, + { + "Date": "\/Date(1238544000000)\/", + "Close": 42.860, + "Volume": 1533883066, + "Open": 42.890, + "High": 43.050, + "Low": 41.390 + }, + { + "Date": "\/Date(1241136000000)\/", + "Close": 42.230, + "Volume": 2396221596, + "Open": 42.240, + "High": 42.280, + "Low": 38.230 + }, + { + "Date": "\/Date(1243814400000)\/", + "Close": 39.800, + "Volume": 2709886930, + "Open": 39.960, + "High": 40.000, + "Low": 37.160 + }, + { + "Date": "\/Date(1246406400000)\/", + "Close": 39.000, + "Volume": 2091835303, + "Open": 38.938, + "High": 39.000, + "Low": 35.540 + }, + { + "Date": "\/Date(1249084800000)\/", + "Close": 38.960, + "Volume": 1986978146, + "Open": 38.970, + "High": 39.030, + "Low": 36.260 + }, + { + "Date": "\/Date(1251763200000)\/", + "Close": 40.910, + "Volume": 1860762246, + "Open": 40.910, + "High": 40.950, + "Low": 38.320 + }, + { + "Date": "\/Date(1254355200000)\/", + "Close": 42.880, + "Volume": 1974572432, + "Open": 42.890, + "High": 42.920, + "Low": 39.880 + }, + { + "Date": "\/Date(1257033600000)\/", + "Close": 44.780, + "Volume": 1903112379, + "Open": 44.770, + "High": 44.860, + "Low": 41.610 + }, + { + "Date": "\/Date(1259625600000)\/", + "Close": 44.700, + "Volume": 1533161602, + "Open": 44.710, + "High": 44.760, + "Low": 42.880 + }, + { + "Date": "\/Date(1262304000000)\/", + "Close": 45.360, + "Volume": 1823989418, + "Open": 45.350, + "High": 45.400, + "Low": 42.530 + }, + { + "Date": "\/Date(1264982400000)\/", + "Close": 45.470, + "Volume": 1730644867, + "Open": 45.485, + "High": 45.550, + "Low": 42.930 + }, + { + "Date": "\/Date(1267401600000)\/", + "Close": 44.420, + "Volume": 1749294085, + "Open": 44.440, + "High": 44.440, + "Low": 42.060 + }, + { + "Date": "\/Date(1270080000000)\/", + "Close": 46.590, + "Volume": 1171507724, + "Open": 46.590, + "High": 46.650, + "Low": 43.300 + }, + { + "Date": "\/Date(1272672000000)\/", + "Close": 47.500, + "Volume": 1282648621, + "Open": 47.500, + "High": 47.520, + "Low": 45.660 + }, + { + "Date": "\/Date(1275350400000)\/", + "Close": 47.880, + "Volume": 1228561577, + "Open": 47.880, + "High": 47.920, + "Low": 46.160 + }, + { + "Date": "\/Date(1277942400000)\/", + "Close": 50.640, + "Volume": 992870269, + "Open": 50.640, + "High": 50.654, + "Low": 47.470 + }, + { + "Date": "\/Date(1280620800000)\/", + "Close": 49.020, + "Volume": 981208528, + "Open": 49.020, + "High": 49.060, + "Low": 44.390 + }, + { + "Date": "\/Date(1283299200000)\/", + "Close": 51.631, + "Volume": 573031521, + "Open": 51.630, + "High": 51.680, + "Low": 47.810 + }, + { + "Date": "\/Date(1285891200000)\/", + "Close": 55.010, + "Volume": 1103427032, + "Open": 54.959, + "High": 55.060, + "Low": 51.340 + }, + { + "Date": "\/Date(1288569600000)\/", + "Close": 54.680, + "Volume": 995365278, + "Open": 54.660, + "High": 54.770, + "Low": 48.660 + }, + { + "Date": "\/Date(1291161600000)\/", + "Close": 52.840, + "Volume": 577831801, + "Open": 52.840, + "High": 52.840, + "Low": 49.180 + }, + { + "Date": "\/Date(1293840000000)\/", + "Close": 51.370, + "Volume": 849837840, + "Open": 51.380, + "High": 51.460, + "Low": 41.630 + }, + { + "Date": "\/Date(1296518400000)\/", + "Close": 45.650, + "Volume": 569927484, + "Open": 45.650, + "High": 45.870, + "Low": 42.160 + }, + { + "Date": "\/Date(1298937600000)\/", + "Close": 45.020, + "Volume": 563447812, + "Open": 45.040, + "High": 45.070, + "Low": 41.050 + }, + { + "Date": "\/Date(1301616000000)\/", + "Close": 47.920, + "Volume": 579215682, + "Open": 47.930, + "High": 48.050, + "Low": 43.690 + }, + { + "Date": "\/Date(1304208000000)\/", + "Close": 50.450, + "Volume": 589335627, + "Open": 50.450, + "High": 50.469, + "Low": 47.220 + }, + { + "Date": "\/Date(1306886400000)\/", + "Close": 50.540, + "Volume": 633735895, + "Open": 50.480, + "High": 50.610, + "Low": 44.980 + }, + { + "Date": "\/Date(1309478400000)\/", + "Close": 46.060, + "Volume": 558670899, + "Open": 46.050, + "High": 46.120, + "Low": 43.300 + }, + { + "Date": "\/Date(1312156800000)\/", + "Close": 48.490, + "Volume": 629930051, + "Open": 48.480, + "High": 48.560, + "Low": 44.300 + }, + { + "Date": "\/Date(1314835200000)\/", + "Close": 46.930, + "Volume": 808574022, + "Open": 46.920, + "High": 47.070, + "Low": 37.180 + }, + { + "Date": "\/Date(1317427200000)\/", + "Close": 38.890, + "Volume": 799617379, + "Open": 38.860, + "High": 38.970, + "Low": 28.090 + }, + { + "Date": "\/Date(1320105600000)\/", + "Close": 33.920, + "Volume": 394335489, + "Open": 33.930, + "High": 34.010, + "Low": 25.060 + }, + { + "Date": "\/Date(1322697600000)\/", + "Close": 30.720, + "Volume": 715467389, + "Open": 30.730, + "High": 30.820, + "Low": 26.850 + }, + { + "Date": "\/Date(1325376000000)\/", + "Close": 31.590, + "Volume": 1176242873, + "Open": 31.590, + "High": 31.630, + "Low": 27.960 + }, + { + "Date": "\/Date(1328054400000)\/", + "Close": 31.650, + "Volume": 1194157236, + "Open": 31.650, + "High": 31.680, + "Low": 27.390 + } +] diff --git a/vue-options-api-demos/charts/stock-chart/filter-data/main.js b/vue-options-api-demos/charts/stock-chart/filter-data/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/filter-data/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/stock-chart/filter-data/main.vue b/vue-options-api-demos/charts/stock-chart/filter-data/main.vue new file mode 100644 index 00000000..64addd69 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/filter-data/main.vue @@ -0,0 +1,75 @@ + + diff --git a/vue-options-api-demos/charts/stock-chart/filter-data/stock-data.json b/vue-options-api-demos/charts/stock-chart/filter-data/stock-data.json new file mode 100644 index 00000000..895e31a8 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/filter-data/stock-data.json @@ -0,0 +1,410 @@ +[ + { + "Date": "\/Date(1196467200000)\/", + "Close": 40.635, + "Volume": 1650185491, + "Open": 40.640, + "High": 40.680, + "Low": 39.090 + }, + { + "Date": "\/Date(1199145600000)\/", + "Close": 40.130, + "Volume": 1979918237, + "Open": 40.130, + "High": 40.292, + "Low": 36.460 + }, + { + "Date": "\/Date(1201824000000)\/", + "Close": 38.440, + "Volume": 1572505911, + "Open": 38.440, + "High": 38.480, + "Low": 36.697 + }, + { + "Date": "\/Date(1204329600000)\/", + "Close": 38.240, + "Volume": 1922276774, + "Open": 38.240, + "High": 38.290, + "Low": 35.940 + }, + { + "Date": "\/Date(1207008000000)\/", + "Close": 37.031, + "Volume": 2078426778, + "Open": 37.032, + "High": 37.070, + "Low": 34.350 + }, + { + "Date": "\/Date(1209600000000)\/", + "Close": 38.240, + "Volume": 1727585885, + "Open": 38.250, + "High": 38.270, + "Low": 34.886 + }, + { + "Date": "\/Date(1212278400000)\/", + "Close": 38.650, + "Volume": 1776948280, + "Open": 38.630, + "High": 38.680, + "Low": 36.700 + }, + { + "Date": "\/Date(1214870400000)\/", + "Close": 39.900, + "Volume": 1456330078, + "Open": 39.900, + "High": 39.921, + "Low": 36.550 + }, + { + "Date": "\/Date(1217548800000)\/", + "Close": 40.100, + "Volume": 1557166494, + "Open": 40.095, + "High": 40.140, + "Low": 38.260 + }, + { + "Date": "\/Date(1220227200000)\/", + "Close": 39.841, + "Volume": 1506305343, + "Open": 39.840, + "High": 39.910, + "Low": 38.240 + }, + { + "Date": "\/Date(1222819200000)\/", + "Close": 39.859, + "Volume": 2034928239, + "Open": 39.852, + "High": 39.880, + "Low": 37.330 + }, + { + "Date": "\/Date(1225497600000)\/", + "Close": 41.993, + "Volume": 1542204312, + "Open": 41.990, + "High": 42.020, + "Low": 38.710 + }, + { + "Date": "\/Date(1228089600000)\/", + "Close": 42.300, + "Volume": 1255678260, + "Open": 42.298, + "High": 42.310, + "Low": 40.360 + }, + { + "Date": "\/Date(1230768000000)\/", + "Close": 43.290, + "Volume": 1685490186, + "Open": 43.290, + "High": 43.310, + "Low": 40.160 + }, + { + "Date": "\/Date(1233446400000)\/", + "Close": 42.130, + "Volume": 1445458017, + "Open": 42.040, + "High": 42.170, + "Low": 40.260 + }, + { + "Date": "\/Date(1235865600000)\/", + "Close": 42.140, + "Volume": 1958550854, + "Open": 42.140, + "High": 42.300, + "Low": 40.190 + }, + { + "Date": "\/Date(1238544000000)\/", + "Close": 42.860, + "Volume": 1533883066, + "Open": 42.890, + "High": 43.050, + "Low": 41.390 + }, + { + "Date": "\/Date(1241136000000)\/", + "Close": 42.230, + "Volume": 2396221596, + "Open": 42.240, + "High": 42.280, + "Low": 38.230 + }, + { + "Date": "\/Date(1243814400000)\/", + "Close": 39.800, + "Volume": 2709886930, + "Open": 39.960, + "High": 40.000, + "Low": 37.160 + }, + { + "Date": "\/Date(1246406400000)\/", + "Close": 39.000, + "Volume": 2091835303, + "Open": 38.938, + "High": 39.000, + "Low": 35.540 + }, + { + "Date": "\/Date(1249084800000)\/", + "Close": 38.960, + "Volume": 1986978146, + "Open": 38.970, + "High": 39.030, + "Low": 36.260 + }, + { + "Date": "\/Date(1251763200000)\/", + "Close": 40.910, + "Volume": 1860762246, + "Open": 40.910, + "High": 40.950, + "Low": 38.320 + }, + { + "Date": "\/Date(1254355200000)\/", + "Close": 42.880, + "Volume": 1974572432, + "Open": 42.890, + "High": 42.920, + "Low": 39.880 + }, + { + "Date": "\/Date(1257033600000)\/", + "Close": 44.780, + "Volume": 1903112379, + "Open": 44.770, + "High": 44.860, + "Low": 41.610 + }, + { + "Date": "\/Date(1259625600000)\/", + "Close": 44.700, + "Volume": 1533161602, + "Open": 44.710, + "High": 44.760, + "Low": 42.880 + }, + { + "Date": "\/Date(1262304000000)\/", + "Close": 45.360, + "Volume": 1823989418, + "Open": 45.350, + "High": 45.400, + "Low": 42.530 + }, + { + "Date": "\/Date(1264982400000)\/", + "Close": 45.470, + "Volume": 1730644867, + "Open": 45.485, + "High": 45.550, + "Low": 42.930 + }, + { + "Date": "\/Date(1267401600000)\/", + "Close": 44.420, + "Volume": 1749294085, + "Open": 44.440, + "High": 44.440, + "Low": 42.060 + }, + { + "Date": "\/Date(1270080000000)\/", + "Close": 46.590, + "Volume": 1171507724, + "Open": 46.590, + "High": 46.650, + "Low": 43.300 + }, + { + "Date": "\/Date(1272672000000)\/", + "Close": 47.500, + "Volume": 1282648621, + "Open": 47.500, + "High": 47.520, + "Low": 45.660 + }, + { + "Date": "\/Date(1275350400000)\/", + "Close": 47.880, + "Volume": 1228561577, + "Open": 47.880, + "High": 47.920, + "Low": 46.160 + }, + { + "Date": "\/Date(1277942400000)\/", + "Close": 50.640, + "Volume": 992870269, + "Open": 50.640, + "High": 50.654, + "Low": 47.470 + }, + { + "Date": "\/Date(1280620800000)\/", + "Close": 49.020, + "Volume": 981208528, + "Open": 49.020, + "High": 49.060, + "Low": 44.390 + }, + { + "Date": "\/Date(1283299200000)\/", + "Close": 51.631, + "Volume": 573031521, + "Open": 51.630, + "High": 51.680, + "Low": 47.810 + }, + { + "Date": "\/Date(1285891200000)\/", + "Close": 55.010, + "Volume": 1103427032, + "Open": 54.959, + "High": 55.060, + "Low": 51.340 + }, + { + "Date": "\/Date(1288569600000)\/", + "Close": 54.680, + "Volume": 995365278, + "Open": 54.660, + "High": 54.770, + "Low": 48.660 + }, + { + "Date": "\/Date(1291161600000)\/", + "Close": 52.840, + "Volume": 577831801, + "Open": 52.840, + "High": 52.840, + "Low": 49.180 + }, + { + "Date": "\/Date(1293840000000)\/", + "Close": 51.370, + "Volume": 849837840, + "Open": 51.380, + "High": 51.460, + "Low": 41.630 + }, + { + "Date": "\/Date(1296518400000)\/", + "Close": 45.650, + "Volume": 569927484, + "Open": 45.650, + "High": 45.870, + "Low": 42.160 + }, + { + "Date": "\/Date(1298937600000)\/", + "Close": 45.020, + "Volume": 563447812, + "Open": 45.040, + "High": 45.070, + "Low": 41.050 + }, + { + "Date": "\/Date(1301616000000)\/", + "Close": 47.920, + "Volume": 579215682, + "Open": 47.930, + "High": 48.050, + "Low": 43.690 + }, + { + "Date": "\/Date(1304208000000)\/", + "Close": 50.450, + "Volume": 589335627, + "Open": 50.450, + "High": 50.469, + "Low": 47.220 + }, + { + "Date": "\/Date(1306886400000)\/", + "Close": 50.540, + "Volume": 633735895, + "Open": 50.480, + "High": 50.610, + "Low": 44.980 + }, + { + "Date": "\/Date(1309478400000)\/", + "Close": 46.060, + "Volume": 558670899, + "Open": 46.050, + "High": 46.120, + "Low": 43.300 + }, + { + "Date": "\/Date(1312156800000)\/", + "Close": 48.490, + "Volume": 629930051, + "Open": 48.480, + "High": 48.560, + "Low": 44.300 + }, + { + "Date": "\/Date(1314835200000)\/", + "Close": 46.930, + "Volume": 808574022, + "Open": 46.920, + "High": 47.070, + "Low": 37.180 + }, + { + "Date": "\/Date(1317427200000)\/", + "Close": 38.890, + "Volume": 799617379, + "Open": 38.860, + "High": 38.970, + "Low": 28.090 + }, + { + "Date": "\/Date(1320105600000)\/", + "Close": 33.920, + "Volume": 394335489, + "Open": 33.930, + "High": 34.010, + "Low": 25.060 + }, + { + "Date": "\/Date(1322697600000)\/", + "Close": 30.720, + "Volume": 715467389, + "Open": 30.730, + "High": 30.820, + "Low": 26.850 + }, + { + "Date": "\/Date(1325376000000)\/", + "Close": 31.590, + "Volume": 1176242873, + "Open": 31.590, + "High": 31.630, + "Low": 27.960 + }, + { + "Date": "\/Date(1328054400000)\/", + "Close": 31.650, + "Volume": 1194157236, + "Open": 31.650, + "High": 31.680, + "Low": 27.390 + } +] diff --git a/vue-options-api-demos/charts/stock-chart/multiple-panes/main.js b/vue-options-api-demos/charts/stock-chart/multiple-panes/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/multiple-panes/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/stock-chart/multiple-panes/main.vue b/vue-options-api-demos/charts/stock-chart/multiple-panes/main.vue new file mode 100644 index 00000000..ccddccf1 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/multiple-panes/main.vue @@ -0,0 +1,106 @@ + + diff --git a/vue-options-api-demos/charts/stock-chart/multiple-panes/stock-data.json b/vue-options-api-demos/charts/stock-chart/multiple-panes/stock-data.json new file mode 100644 index 00000000..895e31a8 --- /dev/null +++ b/vue-options-api-demos/charts/stock-chart/multiple-panes/stock-data.json @@ -0,0 +1,410 @@ +[ + { + "Date": "\/Date(1196467200000)\/", + "Close": 40.635, + "Volume": 1650185491, + "Open": 40.640, + "High": 40.680, + "Low": 39.090 + }, + { + "Date": "\/Date(1199145600000)\/", + "Close": 40.130, + "Volume": 1979918237, + "Open": 40.130, + "High": 40.292, + "Low": 36.460 + }, + { + "Date": "\/Date(1201824000000)\/", + "Close": 38.440, + "Volume": 1572505911, + "Open": 38.440, + "High": 38.480, + "Low": 36.697 + }, + { + "Date": "\/Date(1204329600000)\/", + "Close": 38.240, + "Volume": 1922276774, + "Open": 38.240, + "High": 38.290, + "Low": 35.940 + }, + { + "Date": "\/Date(1207008000000)\/", + "Close": 37.031, + "Volume": 2078426778, + "Open": 37.032, + "High": 37.070, + "Low": 34.350 + }, + { + "Date": "\/Date(1209600000000)\/", + "Close": 38.240, + "Volume": 1727585885, + "Open": 38.250, + "High": 38.270, + "Low": 34.886 + }, + { + "Date": "\/Date(1212278400000)\/", + "Close": 38.650, + "Volume": 1776948280, + "Open": 38.630, + "High": 38.680, + "Low": 36.700 + }, + { + "Date": "\/Date(1214870400000)\/", + "Close": 39.900, + "Volume": 1456330078, + "Open": 39.900, + "High": 39.921, + "Low": 36.550 + }, + { + "Date": "\/Date(1217548800000)\/", + "Close": 40.100, + "Volume": 1557166494, + "Open": 40.095, + "High": 40.140, + "Low": 38.260 + }, + { + "Date": "\/Date(1220227200000)\/", + "Close": 39.841, + "Volume": 1506305343, + "Open": 39.840, + "High": 39.910, + "Low": 38.240 + }, + { + "Date": "\/Date(1222819200000)\/", + "Close": 39.859, + "Volume": 2034928239, + "Open": 39.852, + "High": 39.880, + "Low": 37.330 + }, + { + "Date": "\/Date(1225497600000)\/", + "Close": 41.993, + "Volume": 1542204312, + "Open": 41.990, + "High": 42.020, + "Low": 38.710 + }, + { + "Date": "\/Date(1228089600000)\/", + "Close": 42.300, + "Volume": 1255678260, + "Open": 42.298, + "High": 42.310, + "Low": 40.360 + }, + { + "Date": "\/Date(1230768000000)\/", + "Close": 43.290, + "Volume": 1685490186, + "Open": 43.290, + "High": 43.310, + "Low": 40.160 + }, + { + "Date": "\/Date(1233446400000)\/", + "Close": 42.130, + "Volume": 1445458017, + "Open": 42.040, + "High": 42.170, + "Low": 40.260 + }, + { + "Date": "\/Date(1235865600000)\/", + "Close": 42.140, + "Volume": 1958550854, + "Open": 42.140, + "High": 42.300, + "Low": 40.190 + }, + { + "Date": "\/Date(1238544000000)\/", + "Close": 42.860, + "Volume": 1533883066, + "Open": 42.890, + "High": 43.050, + "Low": 41.390 + }, + { + "Date": "\/Date(1241136000000)\/", + "Close": 42.230, + "Volume": 2396221596, + "Open": 42.240, + "High": 42.280, + "Low": 38.230 + }, + { + "Date": "\/Date(1243814400000)\/", + "Close": 39.800, + "Volume": 2709886930, + "Open": 39.960, + "High": 40.000, + "Low": 37.160 + }, + { + "Date": "\/Date(1246406400000)\/", + "Close": 39.000, + "Volume": 2091835303, + "Open": 38.938, + "High": 39.000, + "Low": 35.540 + }, + { + "Date": "\/Date(1249084800000)\/", + "Close": 38.960, + "Volume": 1986978146, + "Open": 38.970, + "High": 39.030, + "Low": 36.260 + }, + { + "Date": "\/Date(1251763200000)\/", + "Close": 40.910, + "Volume": 1860762246, + "Open": 40.910, + "High": 40.950, + "Low": 38.320 + }, + { + "Date": "\/Date(1254355200000)\/", + "Close": 42.880, + "Volume": 1974572432, + "Open": 42.890, + "High": 42.920, + "Low": 39.880 + }, + { + "Date": "\/Date(1257033600000)\/", + "Close": 44.780, + "Volume": 1903112379, + "Open": 44.770, + "High": 44.860, + "Low": 41.610 + }, + { + "Date": "\/Date(1259625600000)\/", + "Close": 44.700, + "Volume": 1533161602, + "Open": 44.710, + "High": 44.760, + "Low": 42.880 + }, + { + "Date": "\/Date(1262304000000)\/", + "Close": 45.360, + "Volume": 1823989418, + "Open": 45.350, + "High": 45.400, + "Low": 42.530 + }, + { + "Date": "\/Date(1264982400000)\/", + "Close": 45.470, + "Volume": 1730644867, + "Open": 45.485, + "High": 45.550, + "Low": 42.930 + }, + { + "Date": "\/Date(1267401600000)\/", + "Close": 44.420, + "Volume": 1749294085, + "Open": 44.440, + "High": 44.440, + "Low": 42.060 + }, + { + "Date": "\/Date(1270080000000)\/", + "Close": 46.590, + "Volume": 1171507724, + "Open": 46.590, + "High": 46.650, + "Low": 43.300 + }, + { + "Date": "\/Date(1272672000000)\/", + "Close": 47.500, + "Volume": 1282648621, + "Open": 47.500, + "High": 47.520, + "Low": 45.660 + }, + { + "Date": "\/Date(1275350400000)\/", + "Close": 47.880, + "Volume": 1228561577, + "Open": 47.880, + "High": 47.920, + "Low": 46.160 + }, + { + "Date": "\/Date(1277942400000)\/", + "Close": 50.640, + "Volume": 992870269, + "Open": 50.640, + "High": 50.654, + "Low": 47.470 + }, + { + "Date": "\/Date(1280620800000)\/", + "Close": 49.020, + "Volume": 981208528, + "Open": 49.020, + "High": 49.060, + "Low": 44.390 + }, + { + "Date": "\/Date(1283299200000)\/", + "Close": 51.631, + "Volume": 573031521, + "Open": 51.630, + "High": 51.680, + "Low": 47.810 + }, + { + "Date": "\/Date(1285891200000)\/", + "Close": 55.010, + "Volume": 1103427032, + "Open": 54.959, + "High": 55.060, + "Low": 51.340 + }, + { + "Date": "\/Date(1288569600000)\/", + "Close": 54.680, + "Volume": 995365278, + "Open": 54.660, + "High": 54.770, + "Low": 48.660 + }, + { + "Date": "\/Date(1291161600000)\/", + "Close": 52.840, + "Volume": 577831801, + "Open": 52.840, + "High": 52.840, + "Low": 49.180 + }, + { + "Date": "\/Date(1293840000000)\/", + "Close": 51.370, + "Volume": 849837840, + "Open": 51.380, + "High": 51.460, + "Low": 41.630 + }, + { + "Date": "\/Date(1296518400000)\/", + "Close": 45.650, + "Volume": 569927484, + "Open": 45.650, + "High": 45.870, + "Low": 42.160 + }, + { + "Date": "\/Date(1298937600000)\/", + "Close": 45.020, + "Volume": 563447812, + "Open": 45.040, + "High": 45.070, + "Low": 41.050 + }, + { + "Date": "\/Date(1301616000000)\/", + "Close": 47.920, + "Volume": 579215682, + "Open": 47.930, + "High": 48.050, + "Low": 43.690 + }, + { + "Date": "\/Date(1304208000000)\/", + "Close": 50.450, + "Volume": 589335627, + "Open": 50.450, + "High": 50.469, + "Low": 47.220 + }, + { + "Date": "\/Date(1306886400000)\/", + "Close": 50.540, + "Volume": 633735895, + "Open": 50.480, + "High": 50.610, + "Low": 44.980 + }, + { + "Date": "\/Date(1309478400000)\/", + "Close": 46.060, + "Volume": 558670899, + "Open": 46.050, + "High": 46.120, + "Low": 43.300 + }, + { + "Date": "\/Date(1312156800000)\/", + "Close": 48.490, + "Volume": 629930051, + "Open": 48.480, + "High": 48.560, + "Low": 44.300 + }, + { + "Date": "\/Date(1314835200000)\/", + "Close": 46.930, + "Volume": 808574022, + "Open": 46.920, + "High": 47.070, + "Low": 37.180 + }, + { + "Date": "\/Date(1317427200000)\/", + "Close": 38.890, + "Volume": 799617379, + "Open": 38.860, + "High": 38.970, + "Low": 28.090 + }, + { + "Date": "\/Date(1320105600000)\/", + "Close": 33.920, + "Volume": 394335489, + "Open": 33.930, + "High": 34.010, + "Low": 25.060 + }, + { + "Date": "\/Date(1322697600000)\/", + "Close": 30.720, + "Volume": 715467389, + "Open": 30.730, + "High": 30.820, + "Low": 26.850 + }, + { + "Date": "\/Date(1325376000000)\/", + "Close": 31.590, + "Volume": 1176242873, + "Open": 31.590, + "High": 31.630, + "Low": 27.960 + }, + { + "Date": "\/Date(1328054400000)\/", + "Close": 31.650, + "Volume": 1194157236, + "Open": 31.650, + "High": 31.680, + "Low": 27.390 + } +] diff --git a/vue-options-api-demos/charts/styling/dimensions/main.js b/vue-options-api-demos/charts/styling/dimensions/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/styling/dimensions/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/styling/dimensions/main.vue b/vue-options-api-demos/charts/styling/dimensions/main.vue new file mode 100644 index 00000000..8ce5b5c4 --- /dev/null +++ b/vue-options-api-demos/charts/styling/dimensions/main.vue @@ -0,0 +1,60 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/charts/styling/pattern-fills/main.js b/vue-options-api-demos/charts/styling/pattern-fills/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/styling/pattern-fills/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/styling/pattern-fills/main.vue b/vue-options-api-demos/charts/styling/pattern-fills/main.vue new file mode 100644 index 00000000..025a9a52 --- /dev/null +++ b/vue-options-api-demos/charts/styling/pattern-fills/main.vue @@ -0,0 +1,104 @@ + + + diff --git a/vue-options-api-demos/charts/styling/range/main.js b/vue-options-api-demos/charts/styling/range/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/charts/styling/range/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/charts/styling/range/main.vue b/vue-options-api-demos/charts/styling/range/main.vue new file mode 100644 index 00000000..d6e3b020 --- /dev/null +++ b/vue-options-api-demos/charts/styling/range/main.vue @@ -0,0 +1,79 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/common/adaptive-mode/main.js b/vue-options-api-demos/common/adaptive-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/common/adaptive-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/common/adaptive-mode/main.vue b/vue-options-api-demos/common/adaptive-mode/main.vue new file mode 100644 index 00000000..9ff9e1aa --- /dev/null +++ b/vue-options-api-demos/common/adaptive-mode/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/commands/main.js b/vue-options-api-demos/conversational-ui/ai-prompt/commands/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/commands/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/commands/main.vue b/vue-options-api-demos/conversational-ui/ai-prompt/commands/main.vue new file mode 100644 index 00000000..9ebe5a38 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/commands/main.vue @@ -0,0 +1,111 @@ + + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.js b/vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.vue b/vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.vue new file mode 100644 index 00000000..cfa0b279 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/custom-template/main.vue @@ -0,0 +1,156 @@ + + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/ai-data.js b/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/ai-data.js new file mode 100644 index 00000000..99cd4af6 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/ai-data.js @@ -0,0 +1,535 @@ +import { + brushIcon, + editToolsIcon, + minWidthIcon, + arrowsLeftRightIcon, +} from "@progress/kendo-svg-icons"; + +/* eslint-disable max-len */ + +export const unknownRequest = + "The request cannot be processed at this time. Please excuse us for the inconvenience."; + +export const promptCommands = [ + { + id: "1", + text: "Change Formality", + svgIcon: brushIcon, + children: [ + { + id: "1_1", + text: "Casual", + }, + { + id: "1_2", + text: "Neutral", + }, + { + id: "1_3", + text: "Formal", + }, + ], + }, + { + id: "2", + text: "Translate", + svgIcon: editToolsIcon, + children: [ + { + id: "2_1", + text: "German", + }, + { + id: "2_2", + text: "Spanish", + }, + ], + }, + { + id: "3", + text: "Simplify", + svgIcon: minWidthIcon, + }, + { + id: "4", + text: "Expand", + svgIcon: arrowsLeftRightIcon, + }, +]; + +const outOfOffice = "Generate an Out of Office email."; + +const linkedInPost = + "Write a LinkedIn post for the importance of work/life balance."; + +export const suggestionsList = [outOfOffice, linkedInPost]; + +export const suggestionsResponse = [ + { + suggestion: outOfOffice, + response: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am currently out of the office until [Return Date] and won't have access to email. For urgent matters, please contact [Colleague's Name] at [Colleague's Email]. I'll respond to your email upon my return. + +Thank you, +[Your Name]`, + commands: { + Simplify: `Subject: Out of Office Until [Return Date] + +I'm out of the office with limited email access. For urgent issues, contact [Colleague's Name] at [Colleague's Email]. Back on [Return Date]. + +Thanks, +[Your Name]`, + Expand: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I hope this email finds you well. I am writing to inform you that I will be out of the office from [Start Date] and will not be returning until [Return Date]. During this period, I will have limited access to my email and will not be able to respond promptly. + +For any immediate concerns or assistance, please do not hesitate to reach out to my colleague, [Colleague's Name], at [Colleague's Email Address]. They are well-informed about my projects and can provide the necessary support during my absence. + +I appreciate your understanding and apologize for any inconvenience my absence may cause. Rest assured that I will attend to all pending emails and follow up on any outstanding matters as soon as I return to the office. + +Thank you for your cooperation and patience. I look forward to connecting with you once I am back. + +Warm regards, + +[Your Name] +[Your Position] +[Your Company] +[Your Contact Information]`, + German: `Subject: Abwesenheitsnotiz: [Ihr Name] + +Sehr geehrte/r [Empfängername], + +ich bin bis zum [Rückkehrdatum] außer Haus und habe keinen Zugriff auf meine E-Mails. Bei dringenden Angelegenheiten kontaktieren Sie bitte [Name des Kollegen] unter [E-Mail-Adresse des Kollegen]. Ich werde Ihre E-Mail nach meiner Rückkehr beantworten. + +Danke, +[Ihr Name]`, + Spanish: `Asunto: Fuera de la Oficina: [Tu Nombre] + +Estimado/a [Nombre del Destinatario], + +Actualmente estoy fuera de la oficina hasta el [Fecha de Regreso] y no tendré acceso al correo electrónico. Para asuntos urgentes, por favor contacta a [Nombre del Colega] en [Correo Electrónico del Colega]. Responderé a tu correo a mi regreso. + +Gracias, +[Tu Nombre]`, + Formal: `Subject: Out of Office Notification: [Your Name] + +Dear [Recipient's Name], + +Please be informed that I will be absent from the office from [Start Date] and shall return on [Return Date]. During this interval, I shall not be accessible via email. + +For urgent inquiries, kindly direct your correspondence to [Colleague's Name] at [Colleague's Email Address]. I assure you that upon my return, I will attend to all pending communications with the utmost promptness. + +Thank you for your understanding. + +Sincerely, + +[Your Name] +[Your Position] +[Your Company] +[Contact Information]`, + Casual: `Subject: Stepping Out for a Bit - [Your Name] + +Hey [Recipient's Name], + +Just a heads-up, I'm out of the office until [Return Date] and won’t be checking emails. If something urgent comes up, reach out to [Colleague's Name] at [Colleague's Email]. I’ll catch up on all emails when I'm back! + +Cheers, +[Your Name]`, + Neutral: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am out of the office until [Return Date] and will not have access to email. For urgent issues, please contact [Colleague's Name] at [Colleague's Email]. Your email will be addressed upon my return. + +Regards, +[Your Name]`, + }, + }, + { + suggestion: outOfOffice + "retry", + response: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am currently out of the office until [Return Date] and have limited email access. For urgent matters, please call me at [Your Phone Number]. Otherwise, I will respond to your email upon my return. + +Thank you for your understanding. + +Best, +[Your Name]`, + commands: { + Simplify: `Subject: Out of Office: [Your Name] + +I'm out of the office until [Return Date]. For urgent issues, call [Your Phone Number]. Will respond to emails on my return. + +Thanks, +[Your Name]`, + Expand: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +Thank you for reaching out. Please note that I am currently out of the office and will not be available until [Return Date]. During this period, my access to email will be limited. + +For urgent matters, feel free to contact me directly at [Your Phone Number]. I will do my best to respond promptly. For all other inquiries or immediate assistance, please contact [Colleague's Name] at [Colleague's Email Address], who will be available to provide support in my absence. + +I appreciate your understanding and patience during this time. Rest assured, I will address all emails and pending matters as soon as I return to the office. + +Warm regards, + +[Your Name] +[Your Position] +[Your Company] +[Your Contact Information]`, + German: `Subject: Abwesenheitsnotiz: [Ihr Name] + +Sehr geehrte/r [Empfängername], + +ich bin bis zum [Rückkehrdatum] nicht im Büro und habe eingeschränkten Zugang zu meinen E-Mails. Bei dringenden Angelegenheiten rufen Sie mich bitte unter [Ihre Telefonnummer] an. Andernfalls werde ich nach meiner Rückkehr auf Ihre E-Mail antworten. + +Vielen Dank für Ihr Verständnis. + +Mit freundlichen Grüßen, +[Ihr Name]`, + Spanish: `Asunto: Fuera de la Oficina: [Tu Nombre] + +Estimado/a [Nombre del Destinatario], + +Actualmente estoy fuera de la oficina hasta el [Fecha de Regreso] y tengo acceso limitado al correo electrónico. Para asuntos urgentes, por favor llámame al [Tu Número de Teléfono]. De lo contrario, responderé a tu correo electrónico a mi regreso. + +Gracias por tu comprensión. + +Saludos, +[Tu Nombre]`, + Formal: `Subject: Temporary Absence from Office: [Your Name] + +Dear [Recipient's Name], + +I trust this message finds you in good health. Please be advised that I am currently out of the office and will not return until [Return Date]. During this period, my access to email will be significantly restricted. + +In cases of urgent matters, I kindly request that you contact me directly via telephone at [Your Phone Number]. For all other inquiries, I assure you they will be addressed promptly upon my return. + +I appreciate your understanding and apologize for any inconvenience this may cause. + +Yours sincerely, + +[Your Name] +[Your Position] +[Your Company] +[Contact Information]`, + Casual: `Subject: Stepping Out for a Bit - [Your Name] + +Hey [Recipient's Name], + +Just a quick heads up – I'm out of the office until [Return Date] and might not be checking emails much. If something urgent pops up, just give me a ring at [Your Phone Number]. Otherwise, I'll catch up on emails when I'm back. + +Thanks for understanding! + +Cheers, +[Your Name]`, + Neutral: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am out of the office until [Return Date] with limited email access. For urgent matters, please call [Your Phone Number]. I will respond to your email upon my return. + +Regards, +[Your Name]`, + }, + }, + { + suggestion: linkedInPost, + response: `🌟 Embracing Work/Life Balance for Success 🌟 + +Hello LinkedIn network! 👋 Today, let's talk about a key to our well-being: work/life balance. 🌐⚖️ + +In our fast-paced world, balancing professional and personal life is not just a luxury, it's a necessity for health and productivity. 📈🌿 + +✨ Key Points ✨ + +Enhances Productivity: Less burnout, more motivation. 🚀 +Boosts Creativity: New experiences = fresh ideas. 💡 +Improves Health: Mental and physical benefits. 🧘‍♂️ +Strengthens Relationships: Quality time matters. 🤝 +Let's champion a culture where success and well-being go hand in hand. Share your work/life balance tips below! 👇 + +#WorkLifeBalance #Productivity #WellBeing`, + commands: { + Simplify: `🌟 Prioritize Work/Life Balance 🌟 + +Hey LinkedIn! Let's talk about balancing work and life. 🕒🌿 + +Key Points: + +More Balance = More Productivity 📈 +Breaks Boost Creativity 💡 +Good for Health and Relationships 🧘‍♂️🤝 +Let's create a culture where productivity and well-being go hand in hand. 🚀 + +Your strategies for balance? Comment below! 👇 + +#WorkLifeBalance #Productivity #WellBeing`, + Expand: `🌟 Navigating the Tightrope of Work/Life Balance 🌟 + +Greetings, LinkedIn community! 👋 In the midst of our bustling professional lives, there's a silent chord that often goes unnoticed: the delicate balance between work and personal life. Today, let's explore why nurturing this balance is not just beneficial, but essential. 🌐⚖️ + +The digital age has dissolved traditional boundaries, making it challenging to separate 'office hours' from 'personal time'. But here's why finding that equilibrium is crucial: + +Enhances Productivity: It’s a myth that more hours equal more productivity. Studies show that well-rested, balanced individuals are more efficient and driven. Reducing burnout isn’t just good for employees; it’s smart business. 📊 + +Fuels Creativity and Innovation: Ever noticed how your best ideas often come during downtime? A mind at ease is a breeding ground for creativity and innovation. Diverse experiences and restful breaks can lead to breakthroughs in problem-solving and creativity. 🎨 + +Improves Physical and Mental Health: Chronic stress, a byproduct of overwork, can lead to serious health issues. Balancing work and life is crucial for mental clarity, emotional well-being, and physical health. It's about working smarter, not harder. 🌿 + +Strengthens Personal Relationships: Our relationships define us. Spending quality time with family and friends rejuvenates our spirits and gives us a sense of belonging and support. Remember, no one on their deathbed ever wished they'd spent more time at the office. 👪 + +Enhances Job Satisfaction: Employees who feel they have a good balance between their work and personal lives often feel more satisfied with their jobs and less likely to leave. This reduces turnover and builds a more loyal and content workforce. 💼 + +As professionals, entrepreneurs, or leaders, it's crucial to model and encourage a culture that values this balance. Let's cultivate environments where productivity thrives alongside personal well-being. 🚀 + +I'd love to hear from you! How do you maintain a healthy work/life balance? What strategies have you found effective? Let's share and learn from each other. Your insights are valuable! Comment below! 👇 + +#WorkLifeBalance #MentalHealth #Leadership #Productivity #HealthyLiving`, + German: `🌟 Die Bedeutung von Arbeit/Lebens-Balance 🌟 + +Hallo LinkedIn-Welt! 👋 Lasst uns heute über etwas Wichtiges sprechen: die Balance zwischen Arbeit und Leben. 🕒🌿 + +In unserer schnelllebigen Welt ist es entscheidend, unser Berufs- und Privatleben auszugleichen. Es geht nicht nur darum, Zeit zu managen, sondern auch um die Pflege unserer geistigen und körperlichen Gesundheit. ⚖️ + +Warum ist diese Balance so wichtig? + +Steigert die Produktivität: Weniger Burnout, mehr Motivation. 📈 +Fördert die Kreativität: Neue Erfahrungen wecken innovative Ideen. 💡 +Fördert die Gesundheit: Reduziert Stress für besseres Wohlbefinden. 🧘‍♂️ +Stärkt Beziehungen: Qualität der Zeit ist wichtig. 🤝 +Lasst uns eine Kultur fördern, in der wir Produktivität und persönliches Wohlbefinden gleichermaßen wertschätzen. 🚀 + +Wie erreicht ihr ein harmonisches Gleichgewicht zwischen Arbeit und Leben? Teilt eure Gedanken unten! 👇 + +#ArbeitsLebensBalance #Produktivität #Gesundheit #Führung`, + Spanish: `🌟 Abrazando el Equilibrio entre Trabajo y Vida Personal 🌟 + +¡Hola, mundo de LinkedIn! 👋 Hoy hablemos de algo vital: el equilibrio entre trabajo y vida personal. 🕒🌿 + +En nuestro mundo de ritmo acelerado, equilibrar nuestras vidas profesionales y personales es clave. No se trata solo de gestionar el tiempo, sino también de cuidar nuestra salud mental y física. ⚖️ + +¿Por qué es esencial este equilibrio? + +Impulsa la Productividad: Menos agotamiento, más motivación. 📈 +Alimenta la Creatividad: Nuevas experiencias despiertan ideas innovadoras. 💡 +Promueve la Salud: Reduce el estrés para un mejor bienestar general. 🧘‍♂️ +Fortalece las Relaciones: El tiempo de calidad importa. 🤝 +Fomentemos una cultura donde valoremos la productividad y el bienestar personal por igual. 🚀 + +¿Cómo logras armonía entre trabajo y vida personal? ¡Comparte tus pensamientos abajo! 👇 + +#EquilibrioTrabajoVida #Productividad #Salud #Liderazgo`, + Formal: `The Imperative of Work/Life Balance in Professional Excellence + +Greetings, Esteemed LinkedIn Colleagues, + +In our rapidly evolving professional landscape, I wish to highlight an increasingly crucial aspect: the work/life balance. This equilibrium is not merely a concept but a fundamental practice that significantly impacts our productivity, creativity, health, and interpersonal relationships. + +Key Points to Consider: + +Enhanced Productivity: Studies reveal that well-balanced professionals demonstrate higher efficiency and motivation. +Stimulation of Creativity: Diverse experiences outside of work foster innovative thinking and problem-solving skills. +Health and Well-being: A balanced approach to work and life is instrumental in reducing stress-related ailments, thereby promoting both mental and physical health. +Robust Relationships: Allocating time for personal relationships is critical for emotional support and overall life satisfaction. +It is incumbent upon us as leaders and professionals to advocate for and implement policies that support work/life balance. This practice is not only beneficial for individual employees but is also conducive to the long-term success of our organizations. + +I invite you to share your insights and strategies on achieving an optimal work/life balance. + +Best Regards, + +[Your Name] + +#WorkLifeBalance #ProfessionalDevelopment #Leadership #WellBeing`, + Casual: `🌟 Let's Talk Work-Life Balance 🌟 + +Hey LinkedIn fam! 👋 Quick chat: how's your work-life balance doing? 🤔 + +Here's the deal: balancing work and play isn't just nice, it's necessary! 🎯 + +Why, you ask? + +Work Smarter, Not Harder: Too much work = burnout. Taking breaks = getting more done. 🚀 +Hello, Creativity: Ever get great ideas while chilling? That's what I'm talking about! 💡 +Stay Healthy: All work and no play makes us stressed and tired. Who wants that? 🏋️‍♂️ +Family and Friends Time: Remember them? Yeah, they're important. 🤗 +So, let's make work-life balance cool again! What's your secret to keeping things chill? Drop a comment! ⬇️ + +#RealTalk #WorkLifeChill #BalanceIsKey #StayCool`, + Neutral: `Understanding the Importance of Work/Life Balance + +In the professional realm, it's important to acknowledge the significance of work/life balance. This concept isn't just about dividing time between work and personal life; it's about achieving an equilibrium that supports both professional responsibilities and personal well-being. + +Key Points: + +Productivity: A balanced approach often leads to sustained productivity levels. +Creativity: Diverse experiences outside of work can enhance problem-solving and innovation. +Health: Managing work stress is crucial for maintaining both mental and physical health. +Relationships: Allocating time for personal relationships is essential for a well-rounded life. +Creating a work environment that values balance can contribute to both employee satisfaction and organizational success. + +Thoughts on maintaining work/life balance are welcome in the comments. + +#WorkLifeBalance #ProfessionalDevelopment #EmployeeWellbeing`, + }, + }, + { + suggestion: linkedInPost + "retry", + response: `🌟 Embracing Work-Life Balance: Key to Well-Being 🌟 + +In today's fast-paced world, maintaining a work-life balance is crucial. It's not just beneficial – it's essential. + +🚀 Why Important? + +Boosts Productivity: Rest leads to higher creativity and problem-solving. +Enhances Well-being: Prevents burnout, promoting physical and mental health. +Improves Relationships: Ensures time for family and friends. +👩‍💻 Achieving It: + +Set Boundaries: Define work hours to separate professional and personal life. +Prioritize Tasks: Focus on what's urgent to manage time effectively. +Take Breaks: Essential for mental refreshment and perspective. +Embrace Flexibility: Use flexible working options for a balanced day. +Let's strive for balance to ensure sustained success and happiness. + +#WorkLifeBalance #Productivity #MentalHealth`, + commands: { + Simplify: `🌟 Prioritize Work-Life Balance 🌟 + +Balancing work and life is key to success and well-being. + +👍 Benefits: + +Boosts Productivity: Rest enhances creativity. +Improves Well-being: Prevents burnout. +Strengthens Relationships: Ensures time for loved ones. +🛠️ Tips: + +Set Boundaries: Keep work and personal life separate. +Prioritize & Take Breaks: Manage time well, recharge often. +Flexibility: Adapt work schedules for balance. +Balance leads to happiness and success! + +#WorkLifeBalance #Productivity #WellBeing`, + Expand: `🌟 Prioritize Work-Life Balance 🌟 + +Balancing work and life is key to success and well-being. + +👍 Benefits: + +Boosts Productivity: Rest enhances creativity. +Improves Well-being: Prevents burnout. +Strengthens Relationships: Ensures time for loved ones. +🛠️ Tips: + +Set Boundaries: Keep work and personal life separate. +Prioritize & Take Breaks: Manage time well, recharge often. +Flexibility: Adapt work schedules for balance. +Balance leads to happiness and success! + +#WorkLifeBalance #Productivity #WellBeing`, + German: `🌟 Die Bedeutung von Work-Life-Balance: Schlüssel zum Wohlbefinden 🌟 + +In unserer schnelllebigen Welt ist die Aufrechterhaltung einer Work-Life-Balance entscheidend. Sie ist nicht nur vorteilhaft – sie ist essentiell. + +🚀 Warum ist sie wichtig? + +Steigert die Produktivität: Ruhe führt zu höherer Kreativität und Problemlösungsfähigkeit. +Verbessert das Wohlbefinden: Beugt Burnout vor und fördert die physische und psychische Gesundheit. +Verbessert Beziehungen: Garantiert Zeit für Familie und Freunde. +👩‍💻 Erreichen: + +Grenzen setzen: Arbeitszeiten definieren, um Berufs- und Privatleben zu trennen. +Aufgaben priorisieren: Konzentration auf das Dringende, um Zeit effektiv zu verwalten. +Pausen nehmen: Wesentlich für geistige Erfrischung und Perspektive. +Flexibilität nutzen: Flexible Arbeitsmöglichkeiten für einen ausgeglichenen Tag nutzen. +Lasst uns für ein Gleichgewicht streben, um nachhaltigen Erfolg und Glück zu sichern. + +#WorkLifeBalance #Produktivität #MentalHealth`, + Spanish: `🌟 Abrazando el Equilibrio Entre Trabajo y Vida Personal: Clave para el Bienestar 🌟 + +En el mundo acelerado de hoy, mantener un equilibrio entre trabajo y vida personal es crucial. No solo es beneficioso, es esencial. + +🚀 ¿Por Qué es Importante? + +Aumenta la Productividad: El descanso conduce a una mayor creatividad y resolución de problemas. +Mejora el Bienestar: Previene el agotamiento, promoviendo la salud física y mental. +Mejora las Relaciones: Asegura tiempo para la familia y amigos. +👩‍💻 Cómo Lograrlo: + +Establecer Límites: Definir horas de trabajo para separar la vida profesional y personal. +Priorizar Tareas: Enfocarse en lo urgente para gestionar el tiempo de manera efectiva. +Tomar Descansos: Esencial para el refresco mental y la perspectiva. +Abrazar la Flexibilidad: Utilizar opciones de trabajo flexible para un día equilibrado. +Esforcémonos por el equilibrio para asegurar el éxito y la felicidad sostenidos. + +#EquilibrioTrabajoVida #Productividad #SaludMental`, + Formal: `The Imperative of Work-Life Balance for Professional Success and Personal Well-being + +In the realm of modern professional endeavors, the significance of maintaining an equilibrium between work and personal life cannot be overstated. This balance is not merely a luxury but an essential component for long-term success and well-being. + +Key Reasons for Emphasizing Work-Life Balance: + +Enhanced Productivity: Adequate rest and detachment from work-related tasks catalyze creativity and effective problem-solving capabilities. +Improved Health and Well-being: A well-balanced lifestyle is instrumental in preventing occupational burnout, thereby safeguarding both mental and physical health. +Strengthened Personal Relationships: Allocating time for personal relationships is crucial for emotional support and overall life satisfaction. +Strategies for Cultivating Balance: + +Implementing Clear Boundaries: Establishing definitive work hours is essential to distinguish professional responsibilities from personal time. +Effective Prioritization of Tasks: Identifying and addressing urgent tasks efficiently is key to managing workload and reducing stress. +Incorporating Regular Breaks: Breaks are fundamental for mental rejuvenation, offering new perspectives, particularly in challenging situations. +Utilizing Flexible Work Arrangements: Flexibility in work schedules can significantly contribute to a harmonious daily routine, accommodating both career and personal commitments. +In conclusion, work-life balance is a pivotal factor in achieving sustained professional success and personal fulfillment. It requires conscious and continual efforts to integrate effectively into our daily lives. + +#ProfessionalDevelopment #WorkLifeBalance #EmployeeWellbeing #CareerSuccess + + `, + Casual: `Hey everyone 👋, + +Just wanted to drop a quick note about something I've been thinking a lot about lately: work-life balance. 🌈 + +Let's face it, we're often caught up in the hustle, but have you noticed how taking a step back actually makes you more productive? Yep, it's true! 🚀 A little break can spark some serious creativity. + +Here's the deal: + +Work Smart: It's not about working non-stop, it's about working efficiently. 🧠 +Health is Wealth: Avoid burnout, folks! Your mind and body will thank you. 💪 +Family & Friends Time: Because life's too short to miss out on fun moments. 🥳 +Tips to keep it balanced: + +Draw the Line: Work time is work time, chill time is chill time. 🕒 +What's Important?: Not everything is urgent. Prioritize! ✅ +Breaks are Bae: Short walks, coffee breaks, vacations - they all count. 🏖️ +Flexi is Sexy: Flexi-hours or work-from-home can be a game-changer. 💻 +So, let's keep it balanced and rock our work and personal lives! 🎸 + +#WorkLifeBalance #StayProductive #StayHealthy`, + Neutral: `Maintaining Work-Life Balance: Essential for Sustainable Success + +In the current professional landscape, achieving a work-life balance is increasingly recognized as a key factor for long-term success and well-being. + +Why Work-Life Balance Matters? + +Enhances Productivity: Regular breaks and downtime can lead to improved focus and efficiency. +Supports Health: Balancing work and personal life helps prevent burnout and promotes overall well-being. +Strengthens Personal Relationships: Allocating time outside work nurtures important personal connections. +Strategies for Achieving Balance: + +Set Clear Boundaries: Establish specific work hours to ensure personal time remains undisturbed. +Prioritize Effectively: Distinguish between urgent and less critical tasks to manage workload efficiently. +Regular Breaks: Incorporating short breaks and vacation time is vital for mental and physical rejuvenation. +Flexible Working Arrangements: Where possible, utilize flexibility in work schedules to accommodate personal needs. +Work-life balance is a continuous, individual process and is crucial for maintaining long-term professional and personal health. + +#WorkLifeBalance #ProfessionalDevelopment #HealthAndWellness`, + }, + }, +]; diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.js b/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.vue b/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.vue new file mode 100644 index 00000000..fabb178f --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/custom-toolbar/main.vue @@ -0,0 +1,180 @@ + + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/events/Logger.vue b/vue-options-api-demos/conversational-ui/ai-prompt/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/events/main.js b/vue-options-api-demos/conversational-ui/ai-prompt/events/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/events/main.vue b/vue-options-api-demos/conversational-ui/ai-prompt/events/main.vue new file mode 100644 index 00000000..ce49ba75 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/events/main.vue @@ -0,0 +1,133 @@ + + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.js b/vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.vue b/vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.vue new file mode 100644 index 00000000..bedaad16 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/globalization/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/overview/ai-data.js b/vue-options-api-demos/conversational-ui/ai-prompt/overview/ai-data.js new file mode 100644 index 00000000..99cd4af6 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/overview/ai-data.js @@ -0,0 +1,535 @@ +import { + brushIcon, + editToolsIcon, + minWidthIcon, + arrowsLeftRightIcon, +} from "@progress/kendo-svg-icons"; + +/* eslint-disable max-len */ + +export const unknownRequest = + "The request cannot be processed at this time. Please excuse us for the inconvenience."; + +export const promptCommands = [ + { + id: "1", + text: "Change Formality", + svgIcon: brushIcon, + children: [ + { + id: "1_1", + text: "Casual", + }, + { + id: "1_2", + text: "Neutral", + }, + { + id: "1_3", + text: "Formal", + }, + ], + }, + { + id: "2", + text: "Translate", + svgIcon: editToolsIcon, + children: [ + { + id: "2_1", + text: "German", + }, + { + id: "2_2", + text: "Spanish", + }, + ], + }, + { + id: "3", + text: "Simplify", + svgIcon: minWidthIcon, + }, + { + id: "4", + text: "Expand", + svgIcon: arrowsLeftRightIcon, + }, +]; + +const outOfOffice = "Generate an Out of Office email."; + +const linkedInPost = + "Write a LinkedIn post for the importance of work/life balance."; + +export const suggestionsList = [outOfOffice, linkedInPost]; + +export const suggestionsResponse = [ + { + suggestion: outOfOffice, + response: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am currently out of the office until [Return Date] and won't have access to email. For urgent matters, please contact [Colleague's Name] at [Colleague's Email]. I'll respond to your email upon my return. + +Thank you, +[Your Name]`, + commands: { + Simplify: `Subject: Out of Office Until [Return Date] + +I'm out of the office with limited email access. For urgent issues, contact [Colleague's Name] at [Colleague's Email]. Back on [Return Date]. + +Thanks, +[Your Name]`, + Expand: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I hope this email finds you well. I am writing to inform you that I will be out of the office from [Start Date] and will not be returning until [Return Date]. During this period, I will have limited access to my email and will not be able to respond promptly. + +For any immediate concerns or assistance, please do not hesitate to reach out to my colleague, [Colleague's Name], at [Colleague's Email Address]. They are well-informed about my projects and can provide the necessary support during my absence. + +I appreciate your understanding and apologize for any inconvenience my absence may cause. Rest assured that I will attend to all pending emails and follow up on any outstanding matters as soon as I return to the office. + +Thank you for your cooperation and patience. I look forward to connecting with you once I am back. + +Warm regards, + +[Your Name] +[Your Position] +[Your Company] +[Your Contact Information]`, + German: `Subject: Abwesenheitsnotiz: [Ihr Name] + +Sehr geehrte/r [Empfängername], + +ich bin bis zum [Rückkehrdatum] außer Haus und habe keinen Zugriff auf meine E-Mails. Bei dringenden Angelegenheiten kontaktieren Sie bitte [Name des Kollegen] unter [E-Mail-Adresse des Kollegen]. Ich werde Ihre E-Mail nach meiner Rückkehr beantworten. + +Danke, +[Ihr Name]`, + Spanish: `Asunto: Fuera de la Oficina: [Tu Nombre] + +Estimado/a [Nombre del Destinatario], + +Actualmente estoy fuera de la oficina hasta el [Fecha de Regreso] y no tendré acceso al correo electrónico. Para asuntos urgentes, por favor contacta a [Nombre del Colega] en [Correo Electrónico del Colega]. Responderé a tu correo a mi regreso. + +Gracias, +[Tu Nombre]`, + Formal: `Subject: Out of Office Notification: [Your Name] + +Dear [Recipient's Name], + +Please be informed that I will be absent from the office from [Start Date] and shall return on [Return Date]. During this interval, I shall not be accessible via email. + +For urgent inquiries, kindly direct your correspondence to [Colleague's Name] at [Colleague's Email Address]. I assure you that upon my return, I will attend to all pending communications with the utmost promptness. + +Thank you for your understanding. + +Sincerely, + +[Your Name] +[Your Position] +[Your Company] +[Contact Information]`, + Casual: `Subject: Stepping Out for a Bit - [Your Name] + +Hey [Recipient's Name], + +Just a heads-up, I'm out of the office until [Return Date] and won’t be checking emails. If something urgent comes up, reach out to [Colleague's Name] at [Colleague's Email]. I’ll catch up on all emails when I'm back! + +Cheers, +[Your Name]`, + Neutral: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am out of the office until [Return Date] and will not have access to email. For urgent issues, please contact [Colleague's Name] at [Colleague's Email]. Your email will be addressed upon my return. + +Regards, +[Your Name]`, + }, + }, + { + suggestion: outOfOffice + "retry", + response: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am currently out of the office until [Return Date] and have limited email access. For urgent matters, please call me at [Your Phone Number]. Otherwise, I will respond to your email upon my return. + +Thank you for your understanding. + +Best, +[Your Name]`, + commands: { + Simplify: `Subject: Out of Office: [Your Name] + +I'm out of the office until [Return Date]. For urgent issues, call [Your Phone Number]. Will respond to emails on my return. + +Thanks, +[Your Name]`, + Expand: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +Thank you for reaching out. Please note that I am currently out of the office and will not be available until [Return Date]. During this period, my access to email will be limited. + +For urgent matters, feel free to contact me directly at [Your Phone Number]. I will do my best to respond promptly. For all other inquiries or immediate assistance, please contact [Colleague's Name] at [Colleague's Email Address], who will be available to provide support in my absence. + +I appreciate your understanding and patience during this time. Rest assured, I will address all emails and pending matters as soon as I return to the office. + +Warm regards, + +[Your Name] +[Your Position] +[Your Company] +[Your Contact Information]`, + German: `Subject: Abwesenheitsnotiz: [Ihr Name] + +Sehr geehrte/r [Empfängername], + +ich bin bis zum [Rückkehrdatum] nicht im Büro und habe eingeschränkten Zugang zu meinen E-Mails. Bei dringenden Angelegenheiten rufen Sie mich bitte unter [Ihre Telefonnummer] an. Andernfalls werde ich nach meiner Rückkehr auf Ihre E-Mail antworten. + +Vielen Dank für Ihr Verständnis. + +Mit freundlichen Grüßen, +[Ihr Name]`, + Spanish: `Asunto: Fuera de la Oficina: [Tu Nombre] + +Estimado/a [Nombre del Destinatario], + +Actualmente estoy fuera de la oficina hasta el [Fecha de Regreso] y tengo acceso limitado al correo electrónico. Para asuntos urgentes, por favor llámame al [Tu Número de Teléfono]. De lo contrario, responderé a tu correo electrónico a mi regreso. + +Gracias por tu comprensión. + +Saludos, +[Tu Nombre]`, + Formal: `Subject: Temporary Absence from Office: [Your Name] + +Dear [Recipient's Name], + +I trust this message finds you in good health. Please be advised that I am currently out of the office and will not return until [Return Date]. During this period, my access to email will be significantly restricted. + +In cases of urgent matters, I kindly request that you contact me directly via telephone at [Your Phone Number]. For all other inquiries, I assure you they will be addressed promptly upon my return. + +I appreciate your understanding and apologize for any inconvenience this may cause. + +Yours sincerely, + +[Your Name] +[Your Position] +[Your Company] +[Contact Information]`, + Casual: `Subject: Stepping Out for a Bit - [Your Name] + +Hey [Recipient's Name], + +Just a quick heads up – I'm out of the office until [Return Date] and might not be checking emails much. If something urgent pops up, just give me a ring at [Your Phone Number]. Otherwise, I'll catch up on emails when I'm back. + +Thanks for understanding! + +Cheers, +[Your Name]`, + Neutral: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am out of the office until [Return Date] with limited email access. For urgent matters, please call [Your Phone Number]. I will respond to your email upon my return. + +Regards, +[Your Name]`, + }, + }, + { + suggestion: linkedInPost, + response: `🌟 Embracing Work/Life Balance for Success 🌟 + +Hello LinkedIn network! 👋 Today, let's talk about a key to our well-being: work/life balance. 🌐⚖️ + +In our fast-paced world, balancing professional and personal life is not just a luxury, it's a necessity for health and productivity. 📈🌿 + +✨ Key Points ✨ + +Enhances Productivity: Less burnout, more motivation. 🚀 +Boosts Creativity: New experiences = fresh ideas. 💡 +Improves Health: Mental and physical benefits. 🧘‍♂️ +Strengthens Relationships: Quality time matters. 🤝 +Let's champion a culture where success and well-being go hand in hand. Share your work/life balance tips below! 👇 + +#WorkLifeBalance #Productivity #WellBeing`, + commands: { + Simplify: `🌟 Prioritize Work/Life Balance 🌟 + +Hey LinkedIn! Let's talk about balancing work and life. 🕒🌿 + +Key Points: + +More Balance = More Productivity 📈 +Breaks Boost Creativity 💡 +Good for Health and Relationships 🧘‍♂️🤝 +Let's create a culture where productivity and well-being go hand in hand. 🚀 + +Your strategies for balance? Comment below! 👇 + +#WorkLifeBalance #Productivity #WellBeing`, + Expand: `🌟 Navigating the Tightrope of Work/Life Balance 🌟 + +Greetings, LinkedIn community! 👋 In the midst of our bustling professional lives, there's a silent chord that often goes unnoticed: the delicate balance between work and personal life. Today, let's explore why nurturing this balance is not just beneficial, but essential. 🌐⚖️ + +The digital age has dissolved traditional boundaries, making it challenging to separate 'office hours' from 'personal time'. But here's why finding that equilibrium is crucial: + +Enhances Productivity: It’s a myth that more hours equal more productivity. Studies show that well-rested, balanced individuals are more efficient and driven. Reducing burnout isn’t just good for employees; it’s smart business. 📊 + +Fuels Creativity and Innovation: Ever noticed how your best ideas often come during downtime? A mind at ease is a breeding ground for creativity and innovation. Diverse experiences and restful breaks can lead to breakthroughs in problem-solving and creativity. 🎨 + +Improves Physical and Mental Health: Chronic stress, a byproduct of overwork, can lead to serious health issues. Balancing work and life is crucial for mental clarity, emotional well-being, and physical health. It's about working smarter, not harder. 🌿 + +Strengthens Personal Relationships: Our relationships define us. Spending quality time with family and friends rejuvenates our spirits and gives us a sense of belonging and support. Remember, no one on their deathbed ever wished they'd spent more time at the office. 👪 + +Enhances Job Satisfaction: Employees who feel they have a good balance between their work and personal lives often feel more satisfied with their jobs and less likely to leave. This reduces turnover and builds a more loyal and content workforce. 💼 + +As professionals, entrepreneurs, or leaders, it's crucial to model and encourage a culture that values this balance. Let's cultivate environments where productivity thrives alongside personal well-being. 🚀 + +I'd love to hear from you! How do you maintain a healthy work/life balance? What strategies have you found effective? Let's share and learn from each other. Your insights are valuable! Comment below! 👇 + +#WorkLifeBalance #MentalHealth #Leadership #Productivity #HealthyLiving`, + German: `🌟 Die Bedeutung von Arbeit/Lebens-Balance 🌟 + +Hallo LinkedIn-Welt! 👋 Lasst uns heute über etwas Wichtiges sprechen: die Balance zwischen Arbeit und Leben. 🕒🌿 + +In unserer schnelllebigen Welt ist es entscheidend, unser Berufs- und Privatleben auszugleichen. Es geht nicht nur darum, Zeit zu managen, sondern auch um die Pflege unserer geistigen und körperlichen Gesundheit. ⚖️ + +Warum ist diese Balance so wichtig? + +Steigert die Produktivität: Weniger Burnout, mehr Motivation. 📈 +Fördert die Kreativität: Neue Erfahrungen wecken innovative Ideen. 💡 +Fördert die Gesundheit: Reduziert Stress für besseres Wohlbefinden. 🧘‍♂️ +Stärkt Beziehungen: Qualität der Zeit ist wichtig. 🤝 +Lasst uns eine Kultur fördern, in der wir Produktivität und persönliches Wohlbefinden gleichermaßen wertschätzen. 🚀 + +Wie erreicht ihr ein harmonisches Gleichgewicht zwischen Arbeit und Leben? Teilt eure Gedanken unten! 👇 + +#ArbeitsLebensBalance #Produktivität #Gesundheit #Führung`, + Spanish: `🌟 Abrazando el Equilibrio entre Trabajo y Vida Personal 🌟 + +¡Hola, mundo de LinkedIn! 👋 Hoy hablemos de algo vital: el equilibrio entre trabajo y vida personal. 🕒🌿 + +En nuestro mundo de ritmo acelerado, equilibrar nuestras vidas profesionales y personales es clave. No se trata solo de gestionar el tiempo, sino también de cuidar nuestra salud mental y física. ⚖️ + +¿Por qué es esencial este equilibrio? + +Impulsa la Productividad: Menos agotamiento, más motivación. 📈 +Alimenta la Creatividad: Nuevas experiencias despiertan ideas innovadoras. 💡 +Promueve la Salud: Reduce el estrés para un mejor bienestar general. 🧘‍♂️ +Fortalece las Relaciones: El tiempo de calidad importa. 🤝 +Fomentemos una cultura donde valoremos la productividad y el bienestar personal por igual. 🚀 + +¿Cómo logras armonía entre trabajo y vida personal? ¡Comparte tus pensamientos abajo! 👇 + +#EquilibrioTrabajoVida #Productividad #Salud #Liderazgo`, + Formal: `The Imperative of Work/Life Balance in Professional Excellence + +Greetings, Esteemed LinkedIn Colleagues, + +In our rapidly evolving professional landscape, I wish to highlight an increasingly crucial aspect: the work/life balance. This equilibrium is not merely a concept but a fundamental practice that significantly impacts our productivity, creativity, health, and interpersonal relationships. + +Key Points to Consider: + +Enhanced Productivity: Studies reveal that well-balanced professionals demonstrate higher efficiency and motivation. +Stimulation of Creativity: Diverse experiences outside of work foster innovative thinking and problem-solving skills. +Health and Well-being: A balanced approach to work and life is instrumental in reducing stress-related ailments, thereby promoting both mental and physical health. +Robust Relationships: Allocating time for personal relationships is critical for emotional support and overall life satisfaction. +It is incumbent upon us as leaders and professionals to advocate for and implement policies that support work/life balance. This practice is not only beneficial for individual employees but is also conducive to the long-term success of our organizations. + +I invite you to share your insights and strategies on achieving an optimal work/life balance. + +Best Regards, + +[Your Name] + +#WorkLifeBalance #ProfessionalDevelopment #Leadership #WellBeing`, + Casual: `🌟 Let's Talk Work-Life Balance 🌟 + +Hey LinkedIn fam! 👋 Quick chat: how's your work-life balance doing? 🤔 + +Here's the deal: balancing work and play isn't just nice, it's necessary! 🎯 + +Why, you ask? + +Work Smarter, Not Harder: Too much work = burnout. Taking breaks = getting more done. 🚀 +Hello, Creativity: Ever get great ideas while chilling? That's what I'm talking about! 💡 +Stay Healthy: All work and no play makes us stressed and tired. Who wants that? 🏋️‍♂️ +Family and Friends Time: Remember them? Yeah, they're important. 🤗 +So, let's make work-life balance cool again! What's your secret to keeping things chill? Drop a comment! ⬇️ + +#RealTalk #WorkLifeChill #BalanceIsKey #StayCool`, + Neutral: `Understanding the Importance of Work/Life Balance + +In the professional realm, it's important to acknowledge the significance of work/life balance. This concept isn't just about dividing time between work and personal life; it's about achieving an equilibrium that supports both professional responsibilities and personal well-being. + +Key Points: + +Productivity: A balanced approach often leads to sustained productivity levels. +Creativity: Diverse experiences outside of work can enhance problem-solving and innovation. +Health: Managing work stress is crucial for maintaining both mental and physical health. +Relationships: Allocating time for personal relationships is essential for a well-rounded life. +Creating a work environment that values balance can contribute to both employee satisfaction and organizational success. + +Thoughts on maintaining work/life balance are welcome in the comments. + +#WorkLifeBalance #ProfessionalDevelopment #EmployeeWellbeing`, + }, + }, + { + suggestion: linkedInPost + "retry", + response: `🌟 Embracing Work-Life Balance: Key to Well-Being 🌟 + +In today's fast-paced world, maintaining a work-life balance is crucial. It's not just beneficial – it's essential. + +🚀 Why Important? + +Boosts Productivity: Rest leads to higher creativity and problem-solving. +Enhances Well-being: Prevents burnout, promoting physical and mental health. +Improves Relationships: Ensures time for family and friends. +👩‍💻 Achieving It: + +Set Boundaries: Define work hours to separate professional and personal life. +Prioritize Tasks: Focus on what's urgent to manage time effectively. +Take Breaks: Essential for mental refreshment and perspective. +Embrace Flexibility: Use flexible working options for a balanced day. +Let's strive for balance to ensure sustained success and happiness. + +#WorkLifeBalance #Productivity #MentalHealth`, + commands: { + Simplify: `🌟 Prioritize Work-Life Balance 🌟 + +Balancing work and life is key to success and well-being. + +👍 Benefits: + +Boosts Productivity: Rest enhances creativity. +Improves Well-being: Prevents burnout. +Strengthens Relationships: Ensures time for loved ones. +🛠️ Tips: + +Set Boundaries: Keep work and personal life separate. +Prioritize & Take Breaks: Manage time well, recharge often. +Flexibility: Adapt work schedules for balance. +Balance leads to happiness and success! + +#WorkLifeBalance #Productivity #WellBeing`, + Expand: `🌟 Prioritize Work-Life Balance 🌟 + +Balancing work and life is key to success and well-being. + +👍 Benefits: + +Boosts Productivity: Rest enhances creativity. +Improves Well-being: Prevents burnout. +Strengthens Relationships: Ensures time for loved ones. +🛠️ Tips: + +Set Boundaries: Keep work and personal life separate. +Prioritize & Take Breaks: Manage time well, recharge often. +Flexibility: Adapt work schedules for balance. +Balance leads to happiness and success! + +#WorkLifeBalance #Productivity #WellBeing`, + German: `🌟 Die Bedeutung von Work-Life-Balance: Schlüssel zum Wohlbefinden 🌟 + +In unserer schnelllebigen Welt ist die Aufrechterhaltung einer Work-Life-Balance entscheidend. Sie ist nicht nur vorteilhaft – sie ist essentiell. + +🚀 Warum ist sie wichtig? + +Steigert die Produktivität: Ruhe führt zu höherer Kreativität und Problemlösungsfähigkeit. +Verbessert das Wohlbefinden: Beugt Burnout vor und fördert die physische und psychische Gesundheit. +Verbessert Beziehungen: Garantiert Zeit für Familie und Freunde. +👩‍💻 Erreichen: + +Grenzen setzen: Arbeitszeiten definieren, um Berufs- und Privatleben zu trennen. +Aufgaben priorisieren: Konzentration auf das Dringende, um Zeit effektiv zu verwalten. +Pausen nehmen: Wesentlich für geistige Erfrischung und Perspektive. +Flexibilität nutzen: Flexible Arbeitsmöglichkeiten für einen ausgeglichenen Tag nutzen. +Lasst uns für ein Gleichgewicht streben, um nachhaltigen Erfolg und Glück zu sichern. + +#WorkLifeBalance #Produktivität #MentalHealth`, + Spanish: `🌟 Abrazando el Equilibrio Entre Trabajo y Vida Personal: Clave para el Bienestar 🌟 + +En el mundo acelerado de hoy, mantener un equilibrio entre trabajo y vida personal es crucial. No solo es beneficioso, es esencial. + +🚀 ¿Por Qué es Importante? + +Aumenta la Productividad: El descanso conduce a una mayor creatividad y resolución de problemas. +Mejora el Bienestar: Previene el agotamiento, promoviendo la salud física y mental. +Mejora las Relaciones: Asegura tiempo para la familia y amigos. +👩‍💻 Cómo Lograrlo: + +Establecer Límites: Definir horas de trabajo para separar la vida profesional y personal. +Priorizar Tareas: Enfocarse en lo urgente para gestionar el tiempo de manera efectiva. +Tomar Descansos: Esencial para el refresco mental y la perspectiva. +Abrazar la Flexibilidad: Utilizar opciones de trabajo flexible para un día equilibrado. +Esforcémonos por el equilibrio para asegurar el éxito y la felicidad sostenidos. + +#EquilibrioTrabajoVida #Productividad #SaludMental`, + Formal: `The Imperative of Work-Life Balance for Professional Success and Personal Well-being + +In the realm of modern professional endeavors, the significance of maintaining an equilibrium between work and personal life cannot be overstated. This balance is not merely a luxury but an essential component for long-term success and well-being. + +Key Reasons for Emphasizing Work-Life Balance: + +Enhanced Productivity: Adequate rest and detachment from work-related tasks catalyze creativity and effective problem-solving capabilities. +Improved Health and Well-being: A well-balanced lifestyle is instrumental in preventing occupational burnout, thereby safeguarding both mental and physical health. +Strengthened Personal Relationships: Allocating time for personal relationships is crucial for emotional support and overall life satisfaction. +Strategies for Cultivating Balance: + +Implementing Clear Boundaries: Establishing definitive work hours is essential to distinguish professional responsibilities from personal time. +Effective Prioritization of Tasks: Identifying and addressing urgent tasks efficiently is key to managing workload and reducing stress. +Incorporating Regular Breaks: Breaks are fundamental for mental rejuvenation, offering new perspectives, particularly in challenging situations. +Utilizing Flexible Work Arrangements: Flexibility in work schedules can significantly contribute to a harmonious daily routine, accommodating both career and personal commitments. +In conclusion, work-life balance is a pivotal factor in achieving sustained professional success and personal fulfillment. It requires conscious and continual efforts to integrate effectively into our daily lives. + +#ProfessionalDevelopment #WorkLifeBalance #EmployeeWellbeing #CareerSuccess + + `, + Casual: `Hey everyone 👋, + +Just wanted to drop a quick note about something I've been thinking a lot about lately: work-life balance. 🌈 + +Let's face it, we're often caught up in the hustle, but have you noticed how taking a step back actually makes you more productive? Yep, it's true! 🚀 A little break can spark some serious creativity. + +Here's the deal: + +Work Smart: It's not about working non-stop, it's about working efficiently. 🧠 +Health is Wealth: Avoid burnout, folks! Your mind and body will thank you. 💪 +Family & Friends Time: Because life's too short to miss out on fun moments. 🥳 +Tips to keep it balanced: + +Draw the Line: Work time is work time, chill time is chill time. 🕒 +What's Important?: Not everything is urgent. Prioritize! ✅ +Breaks are Bae: Short walks, coffee breaks, vacations - they all count. 🏖️ +Flexi is Sexy: Flexi-hours or work-from-home can be a game-changer. 💻 +So, let's keep it balanced and rock our work and personal lives! 🎸 + +#WorkLifeBalance #StayProductive #StayHealthy`, + Neutral: `Maintaining Work-Life Balance: Essential for Sustainable Success + +In the current professional landscape, achieving a work-life balance is increasingly recognized as a key factor for long-term success and well-being. + +Why Work-Life Balance Matters? + +Enhances Productivity: Regular breaks and downtime can lead to improved focus and efficiency. +Supports Health: Balancing work and personal life helps prevent burnout and promotes overall well-being. +Strengthens Personal Relationships: Allocating time outside work nurtures important personal connections. +Strategies for Achieving Balance: + +Set Clear Boundaries: Establish specific work hours to ensure personal time remains undisturbed. +Prioritize Effectively: Distinguish between urgent and less critical tasks to manage workload efficiently. +Regular Breaks: Incorporating short breaks and vacation time is vital for mental and physical rejuvenation. +Flexible Working Arrangements: Where possible, utilize flexibility in work schedules to accommodate personal needs. +Work-life balance is a continuous, individual process and is crucial for maintaining long-term professional and personal health. + +#WorkLifeBalance #ProfessionalDevelopment #HealthAndWellness`, + }, + }, +]; diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/overview/main.js b/vue-options-api-demos/conversational-ui/ai-prompt/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/overview/main.vue b/vue-options-api-demos/conversational-ui/ai-prompt/overview/main.vue new file mode 100644 index 00000000..d1b73ef2 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/overview/main.vue @@ -0,0 +1,188 @@ + + diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/overview/overview-styles.css b/vue-options-api-demos/conversational-ui/ai-prompt/overview/overview-styles.css new file mode 100644 index 00000000..4f8394d4 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/overview/overview-styles.css @@ -0,0 +1,159 @@ +.profile-demo.card-container { + margin-top: 20px; + display: flex; + justify-content: center; + } + + .profile-demo .custom-card { + padding: 32px; + width: 780px; + height: 490px; + gap: 32px; + border-radius: 4px 4px 0 0; + box-shadow: 0 0 12px 4px rgba(0, 0, 0, 0.08); + } + + .profile-demo .card-row { + display: flex; + gap: 32px; + } + + .profile-demo .card-column { + flex: 1; + } + + .profile-demo .no-flex { + flex: 0; + } + + .profile-demo .sidebar-container, + .profile-demo .description-container { + display: flex; + flex-direction: column; + align-items: center; + } + + .profile-demo .sidebar-container { + padding: 30px 20px; + width: 180px; + height: 425px; + gap: 50px; + } + + .profile-demo .description-container { + width: 100%; + gap: 15px; + } + + .profile-demo .k-skeleton { + border-radius: 4px; + opacity: 0.4; + } + + .profile-demo .sidebar-container .k-skeleton { + opacity: 0.8; + } + + .profile-demo .skeleton-avatar { + width: 72px; + height: 72px; + border-radius: 50%; + } + + .profile-demo .skeleton-text { + width: 104px; + height: 15px; + } + + .profile-demo .skeleton-small-text { + width: 100%; + height: 10px; + } + + .profile-demo .skeleton-box-small { + width: 124px; + height: 15px; + } + + .profile-demo .skeleton-box-large { + width: 100%; + height: 30px; + } + + .profile-demo .skeleton-container { + display: flex; + flex-direction: column; + gap: 5px; + } + + .profile-demo .avatar-title-container { + margin-bottom: 14px; + display: flex; + align-items: center; + gap: 12px; + } + + .profile-demo .avatar-title-container .skeleton-avatar { + width: 48px; + height: 48px; + display: none; + } + + .profile-demo .top { + margin-bottom: 15px; + } + + .profile-demo .k-h4 { + margin-bottom: 0; + opacity: 0.2; + } + + @media only screen and (max-width: 559px) { + .profile-demo .card-column.no-flex { + display: none !important; + } + + .profile-demo .avatar-title-container .skeleton-avatar { + display: block; + } + + .profile-demo .custom-card { + width: 360px; + gap: 48px; + } + } + + @media only screen and (max-width: 359px) { + .profile-demo .custom-card { + padding: 24px; + } + + .profile-demo .k-h4 { + font-size: 20px; + } + + .profile-demo .avatar-title-container .skeleton-avatar { + width: 32px; + height: 32px; + } + } + + .k-prompt { + width: 330px; + max-height: 470px; + } + + .k-popup .k-prompt .k-card-subtitle { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .k-input-suffix .k-button { + margin: 0px 10px 10px; + } + + .k-popup .k-prompt .k-card-body { + white-space: pre-line; + } + \ No newline at end of file diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/ai-data.js b/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/ai-data.js new file mode 100644 index 00000000..99cd4af6 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/ai-data.js @@ -0,0 +1,535 @@ +import { + brushIcon, + editToolsIcon, + minWidthIcon, + arrowsLeftRightIcon, +} from "@progress/kendo-svg-icons"; + +/* eslint-disable max-len */ + +export const unknownRequest = + "The request cannot be processed at this time. Please excuse us for the inconvenience."; + +export const promptCommands = [ + { + id: "1", + text: "Change Formality", + svgIcon: brushIcon, + children: [ + { + id: "1_1", + text: "Casual", + }, + { + id: "1_2", + text: "Neutral", + }, + { + id: "1_3", + text: "Formal", + }, + ], + }, + { + id: "2", + text: "Translate", + svgIcon: editToolsIcon, + children: [ + { + id: "2_1", + text: "German", + }, + { + id: "2_2", + text: "Spanish", + }, + ], + }, + { + id: "3", + text: "Simplify", + svgIcon: minWidthIcon, + }, + { + id: "4", + text: "Expand", + svgIcon: arrowsLeftRightIcon, + }, +]; + +const outOfOffice = "Generate an Out of Office email."; + +const linkedInPost = + "Write a LinkedIn post for the importance of work/life balance."; + +export const suggestionsList = [outOfOffice, linkedInPost]; + +export const suggestionsResponse = [ + { + suggestion: outOfOffice, + response: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am currently out of the office until [Return Date] and won't have access to email. For urgent matters, please contact [Colleague's Name] at [Colleague's Email]. I'll respond to your email upon my return. + +Thank you, +[Your Name]`, + commands: { + Simplify: `Subject: Out of Office Until [Return Date] + +I'm out of the office with limited email access. For urgent issues, contact [Colleague's Name] at [Colleague's Email]. Back on [Return Date]. + +Thanks, +[Your Name]`, + Expand: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I hope this email finds you well. I am writing to inform you that I will be out of the office from [Start Date] and will not be returning until [Return Date]. During this period, I will have limited access to my email and will not be able to respond promptly. + +For any immediate concerns or assistance, please do not hesitate to reach out to my colleague, [Colleague's Name], at [Colleague's Email Address]. They are well-informed about my projects and can provide the necessary support during my absence. + +I appreciate your understanding and apologize for any inconvenience my absence may cause. Rest assured that I will attend to all pending emails and follow up on any outstanding matters as soon as I return to the office. + +Thank you for your cooperation and patience. I look forward to connecting with you once I am back. + +Warm regards, + +[Your Name] +[Your Position] +[Your Company] +[Your Contact Information]`, + German: `Subject: Abwesenheitsnotiz: [Ihr Name] + +Sehr geehrte/r [Empfängername], + +ich bin bis zum [Rückkehrdatum] außer Haus und habe keinen Zugriff auf meine E-Mails. Bei dringenden Angelegenheiten kontaktieren Sie bitte [Name des Kollegen] unter [E-Mail-Adresse des Kollegen]. Ich werde Ihre E-Mail nach meiner Rückkehr beantworten. + +Danke, +[Ihr Name]`, + Spanish: `Asunto: Fuera de la Oficina: [Tu Nombre] + +Estimado/a [Nombre del Destinatario], + +Actualmente estoy fuera de la oficina hasta el [Fecha de Regreso] y no tendré acceso al correo electrónico. Para asuntos urgentes, por favor contacta a [Nombre del Colega] en [Correo Electrónico del Colega]. Responderé a tu correo a mi regreso. + +Gracias, +[Tu Nombre]`, + Formal: `Subject: Out of Office Notification: [Your Name] + +Dear [Recipient's Name], + +Please be informed that I will be absent from the office from [Start Date] and shall return on [Return Date]. During this interval, I shall not be accessible via email. + +For urgent inquiries, kindly direct your correspondence to [Colleague's Name] at [Colleague's Email Address]. I assure you that upon my return, I will attend to all pending communications with the utmost promptness. + +Thank you for your understanding. + +Sincerely, + +[Your Name] +[Your Position] +[Your Company] +[Contact Information]`, + Casual: `Subject: Stepping Out for a Bit - [Your Name] + +Hey [Recipient's Name], + +Just a heads-up, I'm out of the office until [Return Date] and won’t be checking emails. If something urgent comes up, reach out to [Colleague's Name] at [Colleague's Email]. I’ll catch up on all emails when I'm back! + +Cheers, +[Your Name]`, + Neutral: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am out of the office until [Return Date] and will not have access to email. For urgent issues, please contact [Colleague's Name] at [Colleague's Email]. Your email will be addressed upon my return. + +Regards, +[Your Name]`, + }, + }, + { + suggestion: outOfOffice + "retry", + response: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am currently out of the office until [Return Date] and have limited email access. For urgent matters, please call me at [Your Phone Number]. Otherwise, I will respond to your email upon my return. + +Thank you for your understanding. + +Best, +[Your Name]`, + commands: { + Simplify: `Subject: Out of Office: [Your Name] + +I'm out of the office until [Return Date]. For urgent issues, call [Your Phone Number]. Will respond to emails on my return. + +Thanks, +[Your Name]`, + Expand: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +Thank you for reaching out. Please note that I am currently out of the office and will not be available until [Return Date]. During this period, my access to email will be limited. + +For urgent matters, feel free to contact me directly at [Your Phone Number]. I will do my best to respond promptly. For all other inquiries or immediate assistance, please contact [Colleague's Name] at [Colleague's Email Address], who will be available to provide support in my absence. + +I appreciate your understanding and patience during this time. Rest assured, I will address all emails and pending matters as soon as I return to the office. + +Warm regards, + +[Your Name] +[Your Position] +[Your Company] +[Your Contact Information]`, + German: `Subject: Abwesenheitsnotiz: [Ihr Name] + +Sehr geehrte/r [Empfängername], + +ich bin bis zum [Rückkehrdatum] nicht im Büro und habe eingeschränkten Zugang zu meinen E-Mails. Bei dringenden Angelegenheiten rufen Sie mich bitte unter [Ihre Telefonnummer] an. Andernfalls werde ich nach meiner Rückkehr auf Ihre E-Mail antworten. + +Vielen Dank für Ihr Verständnis. + +Mit freundlichen Grüßen, +[Ihr Name]`, + Spanish: `Asunto: Fuera de la Oficina: [Tu Nombre] + +Estimado/a [Nombre del Destinatario], + +Actualmente estoy fuera de la oficina hasta el [Fecha de Regreso] y tengo acceso limitado al correo electrónico. Para asuntos urgentes, por favor llámame al [Tu Número de Teléfono]. De lo contrario, responderé a tu correo electrónico a mi regreso. + +Gracias por tu comprensión. + +Saludos, +[Tu Nombre]`, + Formal: `Subject: Temporary Absence from Office: [Your Name] + +Dear [Recipient's Name], + +I trust this message finds you in good health. Please be advised that I am currently out of the office and will not return until [Return Date]. During this period, my access to email will be significantly restricted. + +In cases of urgent matters, I kindly request that you contact me directly via telephone at [Your Phone Number]. For all other inquiries, I assure you they will be addressed promptly upon my return. + +I appreciate your understanding and apologize for any inconvenience this may cause. + +Yours sincerely, + +[Your Name] +[Your Position] +[Your Company] +[Contact Information]`, + Casual: `Subject: Stepping Out for a Bit - [Your Name] + +Hey [Recipient's Name], + +Just a quick heads up – I'm out of the office until [Return Date] and might not be checking emails much. If something urgent pops up, just give me a ring at [Your Phone Number]. Otherwise, I'll catch up on emails when I'm back. + +Thanks for understanding! + +Cheers, +[Your Name]`, + Neutral: `Subject: Out of Office: [Your Name] + +Dear [Recipient's Name], + +I am out of the office until [Return Date] with limited email access. For urgent matters, please call [Your Phone Number]. I will respond to your email upon my return. + +Regards, +[Your Name]`, + }, + }, + { + suggestion: linkedInPost, + response: `🌟 Embracing Work/Life Balance for Success 🌟 + +Hello LinkedIn network! 👋 Today, let's talk about a key to our well-being: work/life balance. 🌐⚖️ + +In our fast-paced world, balancing professional and personal life is not just a luxury, it's a necessity for health and productivity. 📈🌿 + +✨ Key Points ✨ + +Enhances Productivity: Less burnout, more motivation. 🚀 +Boosts Creativity: New experiences = fresh ideas. 💡 +Improves Health: Mental and physical benefits. 🧘‍♂️ +Strengthens Relationships: Quality time matters. 🤝 +Let's champion a culture where success and well-being go hand in hand. Share your work/life balance tips below! 👇 + +#WorkLifeBalance #Productivity #WellBeing`, + commands: { + Simplify: `🌟 Prioritize Work/Life Balance 🌟 + +Hey LinkedIn! Let's talk about balancing work and life. 🕒🌿 + +Key Points: + +More Balance = More Productivity 📈 +Breaks Boost Creativity 💡 +Good for Health and Relationships 🧘‍♂️🤝 +Let's create a culture where productivity and well-being go hand in hand. 🚀 + +Your strategies for balance? Comment below! 👇 + +#WorkLifeBalance #Productivity #WellBeing`, + Expand: `🌟 Navigating the Tightrope of Work/Life Balance 🌟 + +Greetings, LinkedIn community! 👋 In the midst of our bustling professional lives, there's a silent chord that often goes unnoticed: the delicate balance between work and personal life. Today, let's explore why nurturing this balance is not just beneficial, but essential. 🌐⚖️ + +The digital age has dissolved traditional boundaries, making it challenging to separate 'office hours' from 'personal time'. But here's why finding that equilibrium is crucial: + +Enhances Productivity: It’s a myth that more hours equal more productivity. Studies show that well-rested, balanced individuals are more efficient and driven. Reducing burnout isn’t just good for employees; it’s smart business. 📊 + +Fuels Creativity and Innovation: Ever noticed how your best ideas often come during downtime? A mind at ease is a breeding ground for creativity and innovation. Diverse experiences and restful breaks can lead to breakthroughs in problem-solving and creativity. 🎨 + +Improves Physical and Mental Health: Chronic stress, a byproduct of overwork, can lead to serious health issues. Balancing work and life is crucial for mental clarity, emotional well-being, and physical health. It's about working smarter, not harder. 🌿 + +Strengthens Personal Relationships: Our relationships define us. Spending quality time with family and friends rejuvenates our spirits and gives us a sense of belonging and support. Remember, no one on their deathbed ever wished they'd spent more time at the office. 👪 + +Enhances Job Satisfaction: Employees who feel they have a good balance between their work and personal lives often feel more satisfied with their jobs and less likely to leave. This reduces turnover and builds a more loyal and content workforce. 💼 + +As professionals, entrepreneurs, or leaders, it's crucial to model and encourage a culture that values this balance. Let's cultivate environments where productivity thrives alongside personal well-being. 🚀 + +I'd love to hear from you! How do you maintain a healthy work/life balance? What strategies have you found effective? Let's share and learn from each other. Your insights are valuable! Comment below! 👇 + +#WorkLifeBalance #MentalHealth #Leadership #Productivity #HealthyLiving`, + German: `🌟 Die Bedeutung von Arbeit/Lebens-Balance 🌟 + +Hallo LinkedIn-Welt! 👋 Lasst uns heute über etwas Wichtiges sprechen: die Balance zwischen Arbeit und Leben. 🕒🌿 + +In unserer schnelllebigen Welt ist es entscheidend, unser Berufs- und Privatleben auszugleichen. Es geht nicht nur darum, Zeit zu managen, sondern auch um die Pflege unserer geistigen und körperlichen Gesundheit. ⚖️ + +Warum ist diese Balance so wichtig? + +Steigert die Produktivität: Weniger Burnout, mehr Motivation. 📈 +Fördert die Kreativität: Neue Erfahrungen wecken innovative Ideen. 💡 +Fördert die Gesundheit: Reduziert Stress für besseres Wohlbefinden. 🧘‍♂️ +Stärkt Beziehungen: Qualität der Zeit ist wichtig. 🤝 +Lasst uns eine Kultur fördern, in der wir Produktivität und persönliches Wohlbefinden gleichermaßen wertschätzen. 🚀 + +Wie erreicht ihr ein harmonisches Gleichgewicht zwischen Arbeit und Leben? Teilt eure Gedanken unten! 👇 + +#ArbeitsLebensBalance #Produktivität #Gesundheit #Führung`, + Spanish: `🌟 Abrazando el Equilibrio entre Trabajo y Vida Personal 🌟 + +¡Hola, mundo de LinkedIn! 👋 Hoy hablemos de algo vital: el equilibrio entre trabajo y vida personal. 🕒🌿 + +En nuestro mundo de ritmo acelerado, equilibrar nuestras vidas profesionales y personales es clave. No se trata solo de gestionar el tiempo, sino también de cuidar nuestra salud mental y física. ⚖️ + +¿Por qué es esencial este equilibrio? + +Impulsa la Productividad: Menos agotamiento, más motivación. 📈 +Alimenta la Creatividad: Nuevas experiencias despiertan ideas innovadoras. 💡 +Promueve la Salud: Reduce el estrés para un mejor bienestar general. 🧘‍♂️ +Fortalece las Relaciones: El tiempo de calidad importa. 🤝 +Fomentemos una cultura donde valoremos la productividad y el bienestar personal por igual. 🚀 + +¿Cómo logras armonía entre trabajo y vida personal? ¡Comparte tus pensamientos abajo! 👇 + +#EquilibrioTrabajoVida #Productividad #Salud #Liderazgo`, + Formal: `The Imperative of Work/Life Balance in Professional Excellence + +Greetings, Esteemed LinkedIn Colleagues, + +In our rapidly evolving professional landscape, I wish to highlight an increasingly crucial aspect: the work/life balance. This equilibrium is not merely a concept but a fundamental practice that significantly impacts our productivity, creativity, health, and interpersonal relationships. + +Key Points to Consider: + +Enhanced Productivity: Studies reveal that well-balanced professionals demonstrate higher efficiency and motivation. +Stimulation of Creativity: Diverse experiences outside of work foster innovative thinking and problem-solving skills. +Health and Well-being: A balanced approach to work and life is instrumental in reducing stress-related ailments, thereby promoting both mental and physical health. +Robust Relationships: Allocating time for personal relationships is critical for emotional support and overall life satisfaction. +It is incumbent upon us as leaders and professionals to advocate for and implement policies that support work/life balance. This practice is not only beneficial for individual employees but is also conducive to the long-term success of our organizations. + +I invite you to share your insights and strategies on achieving an optimal work/life balance. + +Best Regards, + +[Your Name] + +#WorkLifeBalance #ProfessionalDevelopment #Leadership #WellBeing`, + Casual: `🌟 Let's Talk Work-Life Balance 🌟 + +Hey LinkedIn fam! 👋 Quick chat: how's your work-life balance doing? 🤔 + +Here's the deal: balancing work and play isn't just nice, it's necessary! 🎯 + +Why, you ask? + +Work Smarter, Not Harder: Too much work = burnout. Taking breaks = getting more done. 🚀 +Hello, Creativity: Ever get great ideas while chilling? That's what I'm talking about! 💡 +Stay Healthy: All work and no play makes us stressed and tired. Who wants that? 🏋️‍♂️ +Family and Friends Time: Remember them? Yeah, they're important. 🤗 +So, let's make work-life balance cool again! What's your secret to keeping things chill? Drop a comment! ⬇️ + +#RealTalk #WorkLifeChill #BalanceIsKey #StayCool`, + Neutral: `Understanding the Importance of Work/Life Balance + +In the professional realm, it's important to acknowledge the significance of work/life balance. This concept isn't just about dividing time between work and personal life; it's about achieving an equilibrium that supports both professional responsibilities and personal well-being. + +Key Points: + +Productivity: A balanced approach often leads to sustained productivity levels. +Creativity: Diverse experiences outside of work can enhance problem-solving and innovation. +Health: Managing work stress is crucial for maintaining both mental and physical health. +Relationships: Allocating time for personal relationships is essential for a well-rounded life. +Creating a work environment that values balance can contribute to both employee satisfaction and organizational success. + +Thoughts on maintaining work/life balance are welcome in the comments. + +#WorkLifeBalance #ProfessionalDevelopment #EmployeeWellbeing`, + }, + }, + { + suggestion: linkedInPost + "retry", + response: `🌟 Embracing Work-Life Balance: Key to Well-Being 🌟 + +In today's fast-paced world, maintaining a work-life balance is crucial. It's not just beneficial – it's essential. + +🚀 Why Important? + +Boosts Productivity: Rest leads to higher creativity and problem-solving. +Enhances Well-being: Prevents burnout, promoting physical and mental health. +Improves Relationships: Ensures time for family and friends. +👩‍💻 Achieving It: + +Set Boundaries: Define work hours to separate professional and personal life. +Prioritize Tasks: Focus on what's urgent to manage time effectively. +Take Breaks: Essential for mental refreshment and perspective. +Embrace Flexibility: Use flexible working options for a balanced day. +Let's strive for balance to ensure sustained success and happiness. + +#WorkLifeBalance #Productivity #MentalHealth`, + commands: { + Simplify: `🌟 Prioritize Work-Life Balance 🌟 + +Balancing work and life is key to success and well-being. + +👍 Benefits: + +Boosts Productivity: Rest enhances creativity. +Improves Well-being: Prevents burnout. +Strengthens Relationships: Ensures time for loved ones. +🛠️ Tips: + +Set Boundaries: Keep work and personal life separate. +Prioritize & Take Breaks: Manage time well, recharge often. +Flexibility: Adapt work schedules for balance. +Balance leads to happiness and success! + +#WorkLifeBalance #Productivity #WellBeing`, + Expand: `🌟 Prioritize Work-Life Balance 🌟 + +Balancing work and life is key to success and well-being. + +👍 Benefits: + +Boosts Productivity: Rest enhances creativity. +Improves Well-being: Prevents burnout. +Strengthens Relationships: Ensures time for loved ones. +🛠️ Tips: + +Set Boundaries: Keep work and personal life separate. +Prioritize & Take Breaks: Manage time well, recharge often. +Flexibility: Adapt work schedules for balance. +Balance leads to happiness and success! + +#WorkLifeBalance #Productivity #WellBeing`, + German: `🌟 Die Bedeutung von Work-Life-Balance: Schlüssel zum Wohlbefinden 🌟 + +In unserer schnelllebigen Welt ist die Aufrechterhaltung einer Work-Life-Balance entscheidend. Sie ist nicht nur vorteilhaft – sie ist essentiell. + +🚀 Warum ist sie wichtig? + +Steigert die Produktivität: Ruhe führt zu höherer Kreativität und Problemlösungsfähigkeit. +Verbessert das Wohlbefinden: Beugt Burnout vor und fördert die physische und psychische Gesundheit. +Verbessert Beziehungen: Garantiert Zeit für Familie und Freunde. +👩‍💻 Erreichen: + +Grenzen setzen: Arbeitszeiten definieren, um Berufs- und Privatleben zu trennen. +Aufgaben priorisieren: Konzentration auf das Dringende, um Zeit effektiv zu verwalten. +Pausen nehmen: Wesentlich für geistige Erfrischung und Perspektive. +Flexibilität nutzen: Flexible Arbeitsmöglichkeiten für einen ausgeglichenen Tag nutzen. +Lasst uns für ein Gleichgewicht streben, um nachhaltigen Erfolg und Glück zu sichern. + +#WorkLifeBalance #Produktivität #MentalHealth`, + Spanish: `🌟 Abrazando el Equilibrio Entre Trabajo y Vida Personal: Clave para el Bienestar 🌟 + +En el mundo acelerado de hoy, mantener un equilibrio entre trabajo y vida personal es crucial. No solo es beneficioso, es esencial. + +🚀 ¿Por Qué es Importante? + +Aumenta la Productividad: El descanso conduce a una mayor creatividad y resolución de problemas. +Mejora el Bienestar: Previene el agotamiento, promoviendo la salud física y mental. +Mejora las Relaciones: Asegura tiempo para la familia y amigos. +👩‍💻 Cómo Lograrlo: + +Establecer Límites: Definir horas de trabajo para separar la vida profesional y personal. +Priorizar Tareas: Enfocarse en lo urgente para gestionar el tiempo de manera efectiva. +Tomar Descansos: Esencial para el refresco mental y la perspectiva. +Abrazar la Flexibilidad: Utilizar opciones de trabajo flexible para un día equilibrado. +Esforcémonos por el equilibrio para asegurar el éxito y la felicidad sostenidos. + +#EquilibrioTrabajoVida #Productividad #SaludMental`, + Formal: `The Imperative of Work-Life Balance for Professional Success and Personal Well-being + +In the realm of modern professional endeavors, the significance of maintaining an equilibrium between work and personal life cannot be overstated. This balance is not merely a luxury but an essential component for long-term success and well-being. + +Key Reasons for Emphasizing Work-Life Balance: + +Enhanced Productivity: Adequate rest and detachment from work-related tasks catalyze creativity and effective problem-solving capabilities. +Improved Health and Well-being: A well-balanced lifestyle is instrumental in preventing occupational burnout, thereby safeguarding both mental and physical health. +Strengthened Personal Relationships: Allocating time for personal relationships is crucial for emotional support and overall life satisfaction. +Strategies for Cultivating Balance: + +Implementing Clear Boundaries: Establishing definitive work hours is essential to distinguish professional responsibilities from personal time. +Effective Prioritization of Tasks: Identifying and addressing urgent tasks efficiently is key to managing workload and reducing stress. +Incorporating Regular Breaks: Breaks are fundamental for mental rejuvenation, offering new perspectives, particularly in challenging situations. +Utilizing Flexible Work Arrangements: Flexibility in work schedules can significantly contribute to a harmonious daily routine, accommodating both career and personal commitments. +In conclusion, work-life balance is a pivotal factor in achieving sustained professional success and personal fulfillment. It requires conscious and continual efforts to integrate effectively into our daily lives. + +#ProfessionalDevelopment #WorkLifeBalance #EmployeeWellbeing #CareerSuccess + + `, + Casual: `Hey everyone 👋, + +Just wanted to drop a quick note about something I've been thinking a lot about lately: work-life balance. 🌈 + +Let's face it, we're often caught up in the hustle, but have you noticed how taking a step back actually makes you more productive? Yep, it's true! 🚀 A little break can spark some serious creativity. + +Here's the deal: + +Work Smart: It's not about working non-stop, it's about working efficiently. 🧠 +Health is Wealth: Avoid burnout, folks! Your mind and body will thank you. 💪 +Family & Friends Time: Because life's too short to miss out on fun moments. 🥳 +Tips to keep it balanced: + +Draw the Line: Work time is work time, chill time is chill time. 🕒 +What's Important?: Not everything is urgent. Prioritize! ✅ +Breaks are Bae: Short walks, coffee breaks, vacations - they all count. 🏖️ +Flexi is Sexy: Flexi-hours or work-from-home can be a game-changer. 💻 +So, let's keep it balanced and rock our work and personal lives! 🎸 + +#WorkLifeBalance #StayProductive #StayHealthy`, + Neutral: `Maintaining Work-Life Balance: Essential for Sustainable Success + +In the current professional landscape, achieving a work-life balance is increasingly recognized as a key factor for long-term success and well-being. + +Why Work-Life Balance Matters? + +Enhances Productivity: Regular breaks and downtime can lead to improved focus and efficiency. +Supports Health: Balancing work and personal life helps prevent burnout and promotes overall well-being. +Strengthens Personal Relationships: Allocating time outside work nurtures important personal connections. +Strategies for Achieving Balance: + +Set Clear Boundaries: Establish specific work hours to ensure personal time remains undisturbed. +Prioritize Effectively: Distinguish between urgent and less critical tasks to manage workload efficiently. +Regular Breaks: Incorporating short breaks and vacation time is vital for mental and physical rejuvenation. +Flexible Working Arrangements: Where possible, utilize flexibility in work schedules to accommodate personal needs. +Work-life balance is a continuous, individual process and is crucial for maintaining long-term professional and personal health. + +#WorkLifeBalance #ProfessionalDevelopment #HealthAndWellness`, + }, + }, +]; diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.js b/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.vue b/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.vue new file mode 100644 index 00000000..ad90140f --- /dev/null +++ b/vue-options-api-demos/conversational-ui/ai-prompt/suggestions/main.vue @@ -0,0 +1,116 @@ + + diff --git a/vue-options-api-demos/conversational-ui/getting-started/main.js b/vue-options-api-demos/conversational-ui/getting-started/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/getting-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/getting-started/main.vue b/vue-options-api-demos/conversational-ui/getting-started/main.vue new file mode 100644 index 00000000..d70b5e55 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/getting-started/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/conversational-ui/overview/main.js b/vue-options-api-demos/conversational-ui/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/conversational-ui/overview/main.vue b/vue-options-api-demos/conversational-ui/overview/main.vue new file mode 100644 index 00000000..d70b5e55 --- /dev/null +++ b/vue-options-api-demos/conversational-ui/overview/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/datatools/filter/basic-usage/main.js b/vue-options-api-demos/datatools/filter/basic-usage/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/basic-usage/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/filter/basic-usage/main.vue b/vue-options-api-demos/datatools/filter/basic-usage/main.vue new file mode 100644 index 00000000..f4870737 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/basic-usage/main.vue @@ -0,0 +1,114 @@ + + + diff --git a/vue-options-api-demos/datatools/filter/basic-usage/products.js b/vue-options-api-demos/datatools/filter/basic-usage/products.js new file mode 100644 index 00000000..d9bc9855 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/basic-usage/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + ProductID: 1, + ProductName: "Chai", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "10 boxes x 20 bags", + UnitPrice: 18, + UnitsInStock: 39, + UnitsOnOrder: 0, + ReorderLevel: 10, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 8, 20) + }, + { + ProductID: 2, + ProductName: "Chang", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "24 - 12 oz bottles", + UnitPrice: 19, + UnitsInStock: 17, + UnitsOnOrder: 40, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 7, 12) + }, + { + ProductID: 3, + ProductName: "Aniseed Syrup", + SupplierID: 1, + CategoryID: 2, + QuantityPerUnit: "12 - 550 ml bottles", + UnitPrice: 10, + UnitsInStock: 13, + UnitsOnOrder: 70, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 8, 26) + }, + { + ProductID: 4, + ProductName: "Chef Anton's Cajun Seasoning", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "48 - 6 oz jars", + UnitPrice: 22, + UnitsInStock: 53, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 9, 19) + }, + { + ProductID: 5, + ProductName: "Chef Anton's Gumbo Mix", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "36 boxes", + UnitPrice: 21.35, + UnitsInStock: 0, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: true, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 7, 17) + }, + { + ProductID: 6, + ProductName: "Grandma's Boysenberry Spread", + SupplierID: 3, + CategoryID: 2, + QuantityPerUnit: "12 - 8 oz jars", + UnitPrice: 25, + UnitsInStock: 120, + UnitsOnOrder: 0, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 9, 19) + }, + { + ProductID: 7, + ProductName: "Uncle Bob's Organic Dried Pears", + SupplierID: 3, + CategoryID: 7, + QuantityPerUnit: "12 - 1 lb pkgs.", + UnitPrice: 30, + UnitsInStock: 15, + UnitsOnOrder: 0, + ReorderLevel: 10, + Discontinued: false, + Category: { + CategoryID: 7, + CategoryName: "Produce", + Description: "Dried fruit and bean curd" + }, + FirstOrderedOn: new Date(1996, 7, 22) + }, + { + ProductID: 8, + ProductName: "Northwoods Cranberry Sauce", + SupplierID: 3, + CategoryID: 2, + QuantityPerUnit: "12 - 12 oz jars", + UnitPrice: 40, + UnitsInStock: 6, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 11, 1) + }, + { + ProductID: 9, + ProductName: "Mishi Kobe Niku", + SupplierID: 4, + CategoryID: 6, + QuantityPerUnit: "18 - 500 g pkgs.", + UnitPrice: 97, + UnitsInStock: 29, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: true, + Category: { + CategoryID: 6, + CategoryName: "Meat/Poultry", + Description: "Prepared meats" + }, + FirstOrderedOn: new Date(1997, 1, 21) + }, + { + ProductID: 10, + ProductName: "Ikura", + SupplierID: 4, + CategoryID: 8, + QuantityPerUnit: "12 - 200 ml jars", + UnitPrice: 31, + UnitsInStock: 31, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 8, + CategoryName: "Seafood", + Description: "Seaweed and fish" + }, + FirstOrderedOn: new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/datatools/filter/custom-editors/built-in/CustomEnumFilter.vue b/vue-options-api-demos/datatools/filter/custom-editors/built-in/CustomEnumFilter.vue new file mode 100644 index 00000000..a2219cc7 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/built-in/CustomEnumFilter.vue @@ -0,0 +1,34 @@ + + + + diff --git a/vue-options-api-demos/datatools/filter/custom-editors/built-in/main.js b/vue-options-api-demos/datatools/filter/custom-editors/built-in/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/built-in/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/filter/custom-editors/built-in/main.vue b/vue-options-api-demos/datatools/filter/custom-editors/built-in/main.vue new file mode 100644 index 00000000..d519f38b --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/built-in/main.vue @@ -0,0 +1,97 @@ + + + diff --git a/vue-options-api-demos/datatools/filter/custom-editors/built-in/products.js b/vue-options-api-demos/datatools/filter/custom-editors/built-in/products.js new file mode 100644 index 00000000..962910df --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/built-in/products.js @@ -0,0 +1,94 @@ +const sampleProducts = [ + { + ProductID: 1, + ProductName: "Chai", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "10 boxes x 20 bags", + UnitPrice: 18, + UnitsInStock: 39, + UnitsOnOrder: 0, + ReorderLevel: 10, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 8, 20) + }, + { + ProductID: 2, + ProductName: "Chang", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "24 - 12 oz bottles", + UnitPrice: 19, + UnitsInStock: 17, + UnitsOnOrder: 40, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 7, 12) + }, + { + ProductID: 3, + ProductName: "Aniseed Syrup", + SupplierID: 1, + CategoryID: 2, + QuantityPerUnit: "12 - 550 ml bottles", + UnitPrice: 10, + UnitsInStock: 13, + UnitsOnOrder: 70, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 8, 26) + }, + { + ProductID: 4, + ProductName: "Chef Anton's Cajun Seasoning", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "48 - 6 oz jars", + UnitPrice: 22, + UnitsInStock: 53, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 9, 19) + }, + { + ProductID: 5, + ProductName: "Chef Anton's Gumbo Mix", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "36 boxes", + UnitPrice: 21.35, + UnitsInStock: 0, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: true, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 7, 17) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomComboBoxFilter.vue b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomComboBoxFilter.vue new file mode 100644 index 00000000..71d83eee --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomComboBoxFilter.vue @@ -0,0 +1,53 @@ + + diff --git a/vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomDropDownListFilter.vue b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomDropDownListFilter.vue new file mode 100644 index 00000000..0a601c44 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/CustomDropDownListFilter.vue @@ -0,0 +1,32 @@ + + + diff --git a/vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.js b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.vue b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.vue new file mode 100644 index 00000000..7f0a40d0 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/main.vue @@ -0,0 +1,121 @@ + + + diff --git a/vue-options-api-demos/datatools/filter/custom-editors/custom-component/products.js b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/products.js new file mode 100644 index 00000000..962910df --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-editors/custom-component/products.js @@ -0,0 +1,94 @@ +const sampleProducts = [ + { + ProductID: 1, + ProductName: "Chai", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "10 boxes x 20 bags", + UnitPrice: 18, + UnitsInStock: 39, + UnitsOnOrder: 0, + ReorderLevel: 10, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 8, 20) + }, + { + ProductID: 2, + ProductName: "Chang", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "24 - 12 oz bottles", + UnitPrice: 19, + UnitsInStock: 17, + UnitsOnOrder: 40, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 7, 12) + }, + { + ProductID: 3, + ProductName: "Aniseed Syrup", + SupplierID: 1, + CategoryID: 2, + QuantityPerUnit: "12 - 550 ml bottles", + UnitPrice: 10, + UnitsInStock: 13, + UnitsOnOrder: 70, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 8, 26) + }, + { + ProductID: 4, + ProductName: "Chef Anton's Cajun Seasoning", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "48 - 6 oz jars", + UnitPrice: 22, + UnitsInStock: 53, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 9, 19) + }, + { + ProductID: 5, + ProductName: "Chef Anton's Gumbo Mix", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "36 boxes", + UnitPrice: 21.35, + UnitsInStock: 0, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: true, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 7, 17) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/datatools/filter/custom-operators/main.js b/vue-options-api-demos/datatools/filter/custom-operators/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-operators/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/filter/custom-operators/main.vue b/vue-options-api-demos/datatools/filter/custom-operators/main.vue new file mode 100644 index 00000000..44b0a0ed --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-operators/main.vue @@ -0,0 +1,98 @@ + + + diff --git a/vue-options-api-demos/datatools/filter/custom-operators/products.js b/vue-options-api-demos/datatools/filter/custom-operators/products.js new file mode 100644 index 00000000..962910df --- /dev/null +++ b/vue-options-api-demos/datatools/filter/custom-operators/products.js @@ -0,0 +1,94 @@ +const sampleProducts = [ + { + ProductID: 1, + ProductName: "Chai", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "10 boxes x 20 bags", + UnitPrice: 18, + UnitsInStock: 39, + UnitsOnOrder: 0, + ReorderLevel: 10, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 8, 20) + }, + { + ProductID: 2, + ProductName: "Chang", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "24 - 12 oz bottles", + UnitPrice: 19, + UnitsInStock: 17, + UnitsOnOrder: 40, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 7, 12) + }, + { + ProductID: 3, + ProductName: "Aniseed Syrup", + SupplierID: 1, + CategoryID: 2, + QuantityPerUnit: "12 - 550 ml bottles", + UnitPrice: 10, + UnitsInStock: 13, + UnitsOnOrder: 70, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 8, 26) + }, + { + ProductID: 4, + ProductName: "Chef Anton's Cajun Seasoning", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "48 - 6 oz jars", + UnitPrice: 22, + UnitsInStock: 53, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 9, 19) + }, + { + ProductID: 5, + ProductName: "Chef Anton's Gumbo Mix", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "36 boxes", + UnitPrice: 21.35, + UnitsInStock: 0, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: true, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 7, 17) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/datatools/filter/events/Logger.vue b/vue-options-api-demos/datatools/filter/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/datatools/filter/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/datatools/filter/events/main.js b/vue-options-api-demos/datatools/filter/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/filter/events/main.vue b/vue-options-api-demos/datatools/filter/events/main.vue new file mode 100644 index 00000000..41dcf1f3 --- /dev/null +++ b/vue-options-api-demos/datatools/filter/events/main.vue @@ -0,0 +1,92 @@ + + + diff --git a/vue-options-api-demos/datatools/globalization/basic-usage/es.json b/vue-options-api-demos/datatools/globalization/basic-usage/es.json new file mode 100644 index 00000000..1ee0a7d6 --- /dev/null +++ b/vue-options-api-demos/datatools/globalization/basic-usage/es.json @@ -0,0 +1,53 @@ +{ + "pager": { + "firstPage": "Ir a la primera página", + "previousPage": "Ir a la página anterior", + "nextPage": "Ir a la página siguiente", + "lastPage": "Ir a la última página", + "page": "Página", + "of": "de", + "info": "{0} - {1} de {2} ítems", + "itemsPerPage": "ítems por página" + }, + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "numerictextbox": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "filter": { + "eqOperator": "Es igual a", + "notEqOperator": "No es igual a", + "isNullOperator": "Es nulo", + "isNotNullOperator": "No es nulo", + "isEmptyOperator": "Está vacío", + "isNotEmptyOperator": "No está vacío", + "startsWithOperator": "Comienza con", + "containsOperator": "Contiene", + "notContainsOperator": "No contiene", + "endsWithOperator": "Termina en", + "gteOperator": "Es mayor o igual que", + "gtOperator": "Es mayor que", + "lteOperator": "Es menor o igual que", + "ltOperator": "Es menor o igual que", + "isTrue": "Sí", + "isFalse": "No", + "afterOrEqualOperator": "Es posterior o igual a", + "afterOperator": "Es posterior", + "beforeOperator": "Es anterior", + "beforeOrEqualOperator": "Es anterior o igual a", + "andLogic": "Y", + "orLogic": "O", + "addExpression": "Agregar expresión", + "addGroup": "Añadir grupo", + "close": "Cerca" + } + } \ No newline at end of file diff --git a/vue-options-api-demos/datatools/globalization/basic-usage/main.js b/vue-options-api-demos/datatools/globalization/basic-usage/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/globalization/basic-usage/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/globalization/basic-usage/main.vue b/vue-options-api-demos/datatools/globalization/basic-usage/main.vue new file mode 100644 index 00000000..1e815e0b --- /dev/null +++ b/vue-options-api-demos/datatools/globalization/basic-usage/main.vue @@ -0,0 +1,165 @@ + + + diff --git a/vue-options-api-demos/datatools/globalization/rtl/main.js b/vue-options-api-demos/datatools/globalization/rtl/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/globalization/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/globalization/rtl/main.vue b/vue-options-api-demos/datatools/globalization/rtl/main.vue new file mode 100644 index 00000000..d475e14f --- /dev/null +++ b/vue-options-api-demos/datatools/globalization/rtl/main.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/datatools/pager/basic-usage/Configurator.vue b/vue-options-api-demos/datatools/pager/basic-usage/Configurator.vue new file mode 100644 index 00000000..f348bdbe --- /dev/null +++ b/vue-options-api-demos/datatools/pager/basic-usage/Configurator.vue @@ -0,0 +1,119 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/datatools/pager/basic-usage/main.js b/vue-options-api-demos/datatools/pager/basic-usage/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/basic-usage/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/pager/basic-usage/main.vue b/vue-options-api-demos/datatools/pager/basic-usage/main.vue new file mode 100644 index 00000000..1f9f19c2 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/basic-usage/main.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/datatools/pager/basic-usage/products.js b/vue-options-api-demos/datatools/pager/basic-usage/products.js new file mode 100644 index 00000000..e6580f3e --- /dev/null +++ b/vue-options-api-demos/datatools/pager/basic-usage/products.js @@ -0,0 +1 @@ +export const products = new Array(200).fill().map((_, index) => ({ ProductId: index, ProductName: 'Product ' + index })); diff --git a/vue-options-api-demos/datatools/pager/events/handling/main.js b/vue-options-api-demos/datatools/pager/events/handling/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/events/handling/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/pager/events/handling/main.vue b/vue-options-api-demos/datatools/pager/events/handling/main.vue new file mode 100644 index 00000000..d9c03fd9 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/events/handling/main.vue @@ -0,0 +1,69 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/datatools/pager/events/prevent/main.js b/vue-options-api-demos/datatools/pager/events/prevent/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/events/prevent/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/pager/events/prevent/main.vue b/vue-options-api-demos/datatools/pager/events/prevent/main.vue new file mode 100644 index 00000000..73c58afd --- /dev/null +++ b/vue-options-api-demos/datatools/pager/events/prevent/main.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/datatools/pager/responsive/main.js b/vue-options-api-demos/datatools/pager/responsive/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/responsive/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/pager/responsive/main.vue b/vue-options-api-demos/datatools/pager/responsive/main.vue new file mode 100644 index 00000000..36e327dc --- /dev/null +++ b/vue-options-api-demos/datatools/pager/responsive/main.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/vue-options-api-demos/datatools/pager/template/PagerTemplate.vue b/vue-options-api-demos/datatools/pager/template/PagerTemplate.vue new file mode 100644 index 00000000..2f432284 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/template/PagerTemplate.vue @@ -0,0 +1,92 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/datatools/pager/template/main.js b/vue-options-api-demos/datatools/pager/template/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/datatools/pager/template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/datatools/pager/template/main.vue b/vue-options-api-demos/datatools/pager/template/main.vue new file mode 100644 index 00000000..7d6f76cd --- /dev/null +++ b/vue-options-api-demos/datatools/pager/template/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/datatools/shared/products.js b/vue-options-api-demos/datatools/shared/products.js new file mode 100644 index 00000000..e6580f3e --- /dev/null +++ b/vue-options-api-demos/datatools/shared/products.js @@ -0,0 +1 @@ +export const products = new Array(200).fill().map((_, index) => ({ ProductId: index, ProductName: 'Product ' + index })); diff --git a/vue-options-api-demos/datatools/tsconfig.json b/vue-options-api-demos/datatools/tsconfig.json new file mode 100644 index 00000000..3c3dcc63 --- /dev/null +++ b/vue-options-api-demos/datatools/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "types": [], + "sourceMap": true, + "noImplicitAny": false, + "module": "commonjs", + "target": "ES5", + "jsx": "vue", + "lib": [ + "es2015", + "es2017", + "dom" + ], + "declaration": true, + "moduleResolution": "node", + "noUnusedLocals": true, + "noUnusedParameters": true, + "strictNullChecks": true, + "paths": { + "@progress/kendo-vue-conversational-ui": [ + "../../src/main.ts", + ] + } + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ] +} diff --git a/vue-options-api-demos/dateinputs/basic/main.js b/vue-options-api-demos/dateinputs/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/basic/main.vue b/vue-options-api-demos/dateinputs/basic/main.vue new file mode 100644 index 00000000..4793031b --- /dev/null +++ b/vue-options-api-demos/dateinputs/basic/main.vue @@ -0,0 +1,73 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/activeview/main.js b/vue-options-api-demos/dateinputs/calendar/activeview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/activeview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/activeview/main.vue b/vue-options-api-demos/dateinputs/calendar/activeview/main.vue new file mode 100644 index 00000000..53cb5c05 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/activeview/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/basic/main.js b/vue-options-api-demos/dateinputs/calendar/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/basic/main.vue b/vue-options-api-demos/dateinputs/calendar/basic/main.vue new file mode 100644 index 00000000..2dc524f8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/basic/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/custom/cell/Cell.vue b/vue-options-api-demos/dateinputs/calendar/custom/cell/Cell.vue new file mode 100644 index 00000000..7447ae75 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/cell/Cell.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/custom/cell/main.js b/vue-options-api-demos/dateinputs/calendar/custom/cell/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/cell/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/custom/cell/main.vue b/vue-options-api-demos/dateinputs/calendar/custom/cell/main.vue new file mode 100644 index 00000000..73ac8ba6 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/cell/main.vue @@ -0,0 +1,26 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/Cell.vue b/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/Cell.vue new file mode 100644 index 00000000..8b69ce6c --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/Cell.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.js b/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.vue b/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.vue new file mode 100644 index 00000000..08ca3928 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/htmlcell/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/custom/title/Title.vue b/vue-options-api-demos/dateinputs/calendar/custom/title/Title.vue new file mode 100644 index 00000000..2a56ffd9 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/title/Title.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/custom/title/main.js b/vue-options-api-demos/dateinputs/calendar/custom/title/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/title/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/custom/title/main.vue b/vue-options-api-demos/dateinputs/calendar/custom/title/main.vue new file mode 100644 index 00000000..e702e3e7 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/custom/title/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/dateranges/main.js b/vue-options-api-demos/dateinputs/calendar/dateranges/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dateranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/dateranges/main.vue b/vue-options-api-demos/dateinputs/calendar/dateranges/main.vue new file mode 100644 index 00000000..6e3e728d --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dateranges/main.vue @@ -0,0 +1,20 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/dates/focused/main.js b/vue-options-api-demos/dateinputs/calendar/dates/focused/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/focused/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/dates/focused/main.vue b/vue-options-api-demos/dateinputs/calendar/dates/focused/main.vue new file mode 100644 index 00000000..b83a07fc --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/focused/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/dates/multiple/main.js b/vue-options-api-demos/dateinputs/calendar/dates/multiple/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/multiple/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/dates/multiple/main.vue b/vue-options-api-demos/dateinputs/calendar/dates/multiple/main.vue new file mode 100644 index 00000000..d063345c --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/multiple/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/dates/range/main.js b/vue-options-api-demos/dateinputs/calendar/dates/range/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/range/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/dates/range/main.vue b/vue-options-api-demos/dateinputs/calendar/dates/range/main.vue new file mode 100644 index 00000000..58e8dbb0 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/range/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/dates/selected/main.js b/vue-options-api-demos/dateinputs/calendar/dates/selected/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/selected/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/dates/selected/main.vue b/vue-options-api-demos/dateinputs/calendar/dates/selected/main.vue new file mode 100644 index 00000000..0d9d0693 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/dates/selected/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/disabled/main.js b/vue-options-api-demos/dateinputs/calendar/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/disabled/main.vue b/vue-options-api-demos/dateinputs/calendar/disabled/main.vue new file mode 100644 index 00000000..5e5da81c --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/disabled/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/json/main.js b/vue-options-api-demos/dateinputs/calendar/json/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/json/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/json/main.vue b/vue-options-api-demos/dateinputs/calendar/json/main.vue new file mode 100644 index 00000000..c02f0922 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/json/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/keyboard/main.js b/vue-options-api-demos/dateinputs/calendar/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/keyboard/main.vue b/vue-options-api-demos/dateinputs/calendar/keyboard/main.vue new file mode 100644 index 00000000..2dc524f8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/keyboard/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/multipleviews/main.js b/vue-options-api-demos/dateinputs/calendar/multipleviews/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/multipleviews/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/multipleviews/main.vue b/vue-options-api-demos/dateinputs/calendar/multipleviews/main.vue new file mode 100644 index 00000000..d17b5e8a --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/multipleviews/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/reverse-range/main.js b/vue-options-api-demos/dateinputs/calendar/reverse-range/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/reverse-range/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/reverse-range/main.vue b/vue-options-api-demos/dateinputs/calendar/reverse-range/main.vue new file mode 100644 index 00000000..3ea995c1 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/reverse-range/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/viewdepth/main.js b/vue-options-api-demos/dateinputs/calendar/viewdepth/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/viewdepth/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/viewdepth/main.vue b/vue-options-api-demos/dateinputs/calendar/viewdepth/main.vue new file mode 100644 index 00000000..0e92d8c7 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/viewdepth/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/dateinputs/calendar/week-numbers/main.js b/vue-options-api-demos/dateinputs/calendar/week-numbers/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/week-numbers/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/calendar/week-numbers/main.vue b/vue-options-api-demos/dateinputs/calendar/week-numbers/main.vue new file mode 100644 index 00000000..07b28aea --- /dev/null +++ b/vue-options-api-demos/dateinputs/calendar/week-numbers/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/common/es.json b/vue-options-api-demos/dateinputs/common/es.json new file mode 100644 index 00000000..7fd085c9 --- /dev/null +++ b/vue-options-api-demos/dateinputs/common/es.json @@ -0,0 +1,31 @@ +{ + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "datetimepicker": { + "date": "Fecha", + "time": "Hora", + "cancel": "Cancelar", + "set": "Conjunto" + }, + "timepicker": { + "set": "Conjunto", + "cancel": "Cancelar", + "now": "Ahora", + "selectNow": "Seleccionar ahora", + "toggleTimeSelector": "Selector de tiempo de alternancia", + "toggleClock": "Reloj de palanca" + }, + "daterangepicker": { + "swapStartEnd": "Swap start and end values", + "start": "Comienzo", + "end": "Fin" + } +} diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/DateInputsStyleConfigurator.vue b/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/DateInputsStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/DateInputsStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.js b/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.vue b/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.vue new file mode 100644 index 00000000..1b1774cd --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/configurator/main.vue @@ -0,0 +1,49 @@ +` + +` diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.js b/vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.vue b/vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.vue new file mode 100644 index 00000000..15d867eb --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/fill-mode/main.vue @@ -0,0 +1,95 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.js b/vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.vue b/vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.vue new file mode 100644 index 00000000..e5550b8c --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/rounded/main.vue @@ -0,0 +1,111 @@ +` + + + +` \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/size/main.js b/vue-options-api-demos/dateinputs/dateinput/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/appearance/size/main.vue b/vue-options-api-demos/dateinputs/dateinput/appearance/size/main.vue new file mode 100644 index 00000000..845a1cb3 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/appearance/size/main.vue @@ -0,0 +1,92 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/dateinput/basic/main.js b/vue-options-api-demos/dateinputs/dateinput/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/basic/main.vue b/vue-options-api-demos/dateinputs/dateinput/basic/main.vue new file mode 100644 index 00000000..faaba28b --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/basic/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.js b/vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.vue b/vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.vue new file mode 100644 index 00000000..8457bbf6 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/date-ranges/basic/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.js b/vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.vue b/vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.vue new file mode 100644 index 00000000..a164eb13 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/date-ranges/time/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/disabled/main.js b/vue-options-api-demos/dateinputs/dateinput/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/disabled/main.vue b/vue-options-api-demos/dateinputs/dateinput/disabled/main.vue new file mode 100644 index 00000000..d9f5890f --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/disabled/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/floating-label/main.js b/vue-options-api-demos/dateinputs/dateinput/floating-label/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/floating-label/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/floating-label/main.vue b/vue-options-api-demos/dateinputs/dateinput/floating-label/main.vue new file mode 100644 index 00000000..f82b0c09 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/floating-label/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/formats/main.js b/vue-options-api-demos/dateinputs/dateinput/formats/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/formats/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/formats/main.vue b/vue-options-api-demos/dateinputs/dateinput/formats/main.vue new file mode 100644 index 00000000..add105cf --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/formats/main.vue @@ -0,0 +1,52 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/basic/main.js b/vue-options-api-demos/dateinputs/dateinput/forms/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/basic/main.vue b/vue-options-api-demos/dateinputs/dateinput/forms/basic/main.vue new file mode 100644 index 00000000..0ea5cc1a --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/basic/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.js b/vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.vue b/vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.vue new file mode 100644 index 00000000..2c620cb8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/custom-message/main.vue @@ -0,0 +1,68 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.js b/vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.vue b/vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.vue new file mode 100644 index 00000000..9a4d1ac7 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/disable-styles/main.vue @@ -0,0 +1,95 @@ + + diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/override/main.js b/vue-options-api-demos/dateinputs/dateinput/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/dateinput/forms/override/main.vue b/vue-options-api-demos/dateinputs/dateinput/forms/override/main.vue new file mode 100644 index 00000000..94f579ee --- /dev/null +++ b/vue-options-api-demos/dateinputs/dateinput/forms/override/main.vue @@ -0,0 +1,97 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/forms/override/main.js b/vue-options-api-demos/dateinputs/datepicker/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/forms/override/main.vue b/vue-options-api-demos/dateinputs/datepicker/forms/override/main.vue new file mode 100644 index 00000000..fac8e68b --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/forms/override/main.vue @@ -0,0 +1,93 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.js b/vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.vue b/vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.vue new file mode 100644 index 00000000..c982a284 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/gettingstarted/main.vue @@ -0,0 +1,16 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/input-mode/main.js b/vue-options-api-demos/dateinputs/datepicker/input-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/input-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/dateinputs/datepicker/input-mode/main.vue b/vue-options-api-demos/dateinputs/datepicker/input-mode/main.vue new file mode 100644 index 00000000..864408b8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/input-mode/main.vue @@ -0,0 +1,54 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/json/main.js b/vue-options-api-demos/dateinputs/datepicker/json/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/json/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/json/main.vue b/vue-options-api-demos/dateinputs/datepicker/json/main.vue new file mode 100644 index 00000000..12d5e2ab --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/json/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/keyboard/main.js b/vue-options-api-demos/dateinputs/datepicker/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/keyboard/main.vue b/vue-options-api-demos/dateinputs/datepicker/keyboard/main.vue new file mode 100644 index 00000000..8969894b --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/keyboard/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/overview/es.json b/vue-options-api-demos/dateinputs/datepicker/overview/es.json new file mode 100644 index 00000000..7fd085c9 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/overview/es.json @@ -0,0 +1,31 @@ +{ + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "datetimepicker": { + "date": "Fecha", + "time": "Hora", + "cancel": "Cancelar", + "set": "Conjunto" + }, + "timepicker": { + "set": "Conjunto", + "cancel": "Cancelar", + "now": "Ahora", + "selectNow": "Seleccionar ahora", + "toggleTimeSelector": "Selector de tiempo de alternancia", + "toggleClock": "Reloj de palanca" + }, + "daterangepicker": { + "swapStartEnd": "Swap start and end values", + "start": "Comienzo", + "end": "Fin" + } +} diff --git a/vue-options-api-demos/dateinputs/datepicker/overview/main.js b/vue-options-api-demos/dateinputs/datepicker/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/overview/main.vue b/vue-options-api-demos/dateinputs/datepicker/overview/main.vue new file mode 100644 index 00000000..b6f8ebe2 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/overview/main.vue @@ -0,0 +1,88 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/placeholders/main.js b/vue-options-api-demos/dateinputs/datepicker/placeholders/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/placeholders/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/placeholders/main.vue b/vue-options-api-demos/dateinputs/datepicker/placeholders/main.vue new file mode 100644 index 00000000..05d1ddac --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/placeholders/main.vue @@ -0,0 +1,53 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/popup-state/main.js b/vue-options-api-demos/dateinputs/datepicker/popup-state/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/popup-state/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/popup-state/main.vue b/vue-options-api-demos/dateinputs/datepicker/popup-state/main.vue new file mode 100644 index 00000000..72c58866 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/popup-state/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/dateinputs/datepicker/weeknum/main.js b/vue-options-api-demos/dateinputs/datepicker/weeknum/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/weeknum/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datepicker/weeknum/main.vue b/vue-options-api-demos/dateinputs/datepicker/weeknum/main.vue new file mode 100644 index 00000000..d11b5a87 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datepicker/weeknum/main.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/controlled/main.js b/vue-options-api-demos/dateinputs/daterangepicker/controlled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/controlled/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/controlled/main.vue new file mode 100644 index 00000000..043bf5c7 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/controlled/main.vue @@ -0,0 +1,39 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.js b/vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.vue new file mode 100644 index 00000000..4553f17a --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/controlled/show/main.vue @@ -0,0 +1,37 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/customCalendar.vue b/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/customCalendar.vue new file mode 100644 index 00000000..93b8a819 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/customCalendar.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.js b/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.vue new file mode 100644 index 00000000..257b4ec7 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/calendar/main.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customEndDateInput.vue b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customEndDateInput.vue new file mode 100644 index 00000000..056cff4d --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customEndDateInput.vue @@ -0,0 +1,46 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customStartDateInput.vue b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customStartDateInput.vue new file mode 100644 index 00000000..01422ac0 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/customStartDateInput.vue @@ -0,0 +1,46 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.js b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.vue new file mode 100644 index 00000000..16d6f2a0 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/dateinput/main.vue @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.js b/vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.vue new file mode 100644 index 00000000..d6c8a877 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/custom/popup/main.vue @@ -0,0 +1,34 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.js b/vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.vue new file mode 100644 index 00000000..4b9a7933 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/default/popup/main.vue @@ -0,0 +1,20 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/default/value/main.js b/vue-options-api-demos/dateinputs/daterangepicker/default/value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/default/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/default/value/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/default/value/main.vue new file mode 100644 index 00000000..7e63a491 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/default/value/main.vue @@ -0,0 +1,26 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/disabled/main.js b/vue-options-api-demos/dateinputs/daterangepicker/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/disabled/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/disabled/main.vue new file mode 100644 index 00000000..fd407b44 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/disabled/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/events/Logger.vue b/vue-options-api-demos/dateinputs/daterangepicker/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/daterangepicker/events/main.js b/vue-options-api-demos/dateinputs/daterangepicker/events/main.js new file mode 100644 index 00000000..0fde16e6 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/events/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/events/main.vue new file mode 100644 index 00000000..839a16dd --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/events/main.vue @@ -0,0 +1,50 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/focused/main.js b/vue-options-api-demos/dateinputs/daterangepicker/focused/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/focused/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/focused/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/focused/main.vue new file mode 100644 index 00000000..aed1f7b1 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/focused/main.vue @@ -0,0 +1,22 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.js b/vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.vue new file mode 100644 index 00000000..873ae55b --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/input-mode/main.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.js b/vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.vue new file mode 100644 index 00000000..946d6141 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/keyboard/main.vue @@ -0,0 +1,29 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/daterangepicker/overview/main.js b/vue-options-api-demos/dateinputs/daterangepicker/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/overview/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/overview/main.vue new file mode 100644 index 00000000..386c1b87 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/overview/main.vue @@ -0,0 +1,28 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/ranges/main.js b/vue-options-api-demos/dateinputs/daterangepicker/ranges/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/ranges/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/ranges/main.vue new file mode 100644 index 00000000..137137fd --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/ranges/main.vue @@ -0,0 +1,28 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.js b/vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.vue new file mode 100644 index 00000000..670c8c5e --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/reverse/basic/main.vue @@ -0,0 +1,42 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.js b/vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.vue new file mode 100644 index 00000000..262a859d --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/reverse/swap/main.vue @@ -0,0 +1,40 @@ + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.js b/vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.vue new file mode 100644 index 00000000..cf65d75f --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/settings/calendar/main.vue @@ -0,0 +1,27 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.js b/vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.vue new file mode 100644 index 00000000..de3e94c3 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/settings/dateinputs/main.vue @@ -0,0 +1,35 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.js b/vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.vue b/vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.vue new file mode 100644 index 00000000..6c772270 --- /dev/null +++ b/vue-options-api-demos/dateinputs/daterangepicker/settings/popup/main.vue @@ -0,0 +1,36 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/.DS_Store b/vue-options-api-demos/dateinputs/datetimepicker/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..68786f1cc22110036fddf7adb48ab62b816bb61b GIT binary patch literal 6148 zcmeHK%}T>S5Z-NTn^J@v6g@6@Em%uc#7l_v1&ruHr6#6mFwK@GHHT8jRbR+A@p+ut z-5i3!qlnJH?l(I>yO|HNKa4T%F2e)HY{r-c4UwZ#BWSL5HB2xfS93@<3-WXx#4@Ov z=r@}1+uQ7cEm_JkR{j3>U>-+lHW+;HMzgii?pPhGXWe;EGWRk+Tc)nRxWUn-lyOk% zesC2{^NGE6CX>vMlIcPvMBx-dZm**xl({RHNtmi!Pdlux)t%TotJU$aFGj<|bziJb zh6B)#M(cIg+TPngy_h`5vqZjX9yw61WYb^?Z=h64dhr%XER#pDmpNrDAu&J<5Cg=( zKV-lh23GGM)=ni81H{1h4B-ACpdmU23yo^)fDW(E=x-sSfR1koL}Ab|SZD+f2-m5A zI+dFz2G{9e7beazSZLJgjH{Jl9U3u0s?yF5-M|PD{`vvL{=NK$B U;w)%a>40<*P=ruN4Ez8CpB5TSB>(^b literal 0 HcmV?d00001 diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/DateInputsStyleConfigurator.vue b/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/DateInputsStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/DateInputsStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.js b/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.vue new file mode 100644 index 00000000..8343957d --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/configurator/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.js b/vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.vue new file mode 100644 index 00000000..b503fcdf --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/fill-mode/main.vue @@ -0,0 +1,95 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.js b/vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.vue new file mode 100644 index 00000000..a3a6f958 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/rounded/main.vue @@ -0,0 +1,111 @@ +` + + + +` \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.js b/vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.vue new file mode 100644 index 00000000..7c51b99e --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/appearance/size/main.vue @@ -0,0 +1,92 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.js b/vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.vue new file mode 100644 index 00000000..96424142 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/controlled/show/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.js b/vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.vue new file mode 100644 index 00000000..0f06af4e --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/controlled/value/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/.DS_Store b/vue-options-api-demos/dateinputs/datetimepicker/custom/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0e388a1e52631df541fbef181a6314c75447ddde GIT binary patch literal 6148 zcmeHK!A`w44YrnOW9$EhJHF4 z=$7$r-0r(yq3$DfKk9G z@ZS}n^TEbJ=xEFo%A*4(*#aP17?y@U^%7KLYjiYb3NeGmR4Jk=WxB;+svP6CUgv1c z6smGyy7^%G%S?ADOnx2TZ_DMt9ED~!3K#_z6)395I^F;0-}nEEMdryUU=&y@1(?-! zyB(yY@75eSx@&D5_c+LCU8Yc$;H0l(>CjcYi$fabY;q7CjhRA>pqW1cQU)^_1%6b4 EFIywYZ~y=R literal 0 HcmV?d00001 diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/CustomCalendar.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/CustomCalendar.vue new file mode 100644 index 00000000..d0ba6214 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/CustomCalendar.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.js b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.vue new file mode 100644 index 00000000..6ddea454 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.vue @@ -0,0 +1,26 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/CustomDateInput.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/CustomDateInput.vue new file mode 100644 index 00000000..be84982b --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/CustomDateInput.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.js b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.vue new file mode 100644 index 00000000..df4a55a9 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/CustomPopup.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/CustomPopup.vue new file mode 100644 index 00000000..cb621a3f --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/CustomPopup.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.js b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.vue new file mode 100644 index 00000000..3bba239c --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.vue @@ -0,0 +1,24 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.js b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.vue new file mode 100644 index 00000000..3e01a2ab --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.js b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.vue new file mode 100644 index 00000000..f802a24d --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.js b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.vue new file mode 100644 index 00000000..529543d6 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.vue @@ -0,0 +1,16 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/events/main.js b/vue-options-api-demos/dateinputs/datetimepicker/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/events/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/events/main.vue new file mode 100644 index 00000000..98b360bb --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/events/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.js b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.vue new file mode 100644 index 00000000..984f0adf --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.vue @@ -0,0 +1,31 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/datetimepicker/focused/main.js b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/focused/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.vue new file mode 100644 index 00000000..e0fdce7d --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.vue @@ -0,0 +1,24 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/formats/main.js b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/formats/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.vue new file mode 100644 index 00000000..e24d8682 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.vue new file mode 100644 index 00000000..7a893bd5 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.vue new file mode 100644 index 00000000..88e8844e --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.vue new file mode 100644 index 00000000..899cd0a6 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.vue @@ -0,0 +1,95 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.vue new file mode 100644 index 00000000..b5ba8c44 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.vue @@ -0,0 +1,94 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.js b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.vue new file mode 100644 index 00000000..a71ff6fe --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/json/main.js b/vue-options-api-demos/dateinputs/datetimepicker/json/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/json/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/json/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/json/main.vue new file mode 100644 index 00000000..b585a9b1 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/json/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.js b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.vue new file mode 100644 index 00000000..084fc7fb --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.js b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.vue new file mode 100644 index 00000000..c1c5403e --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.js b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.vue new file mode 100644 index 00000000..c702a1d8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.js b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.vue new file mode 100644 index 00000000..4b8fc083 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.js b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.vue new file mode 100644 index 00000000..3d62f7b8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dateinputs/floating-label/main.js b/vue-options-api-demos/dateinputs/floating-label/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/floating-label/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/floating-label/main.vue b/vue-options-api-demos/dateinputs/floating-label/main.vue new file mode 100644 index 00000000..57645512 --- /dev/null +++ b/vue-options-api-demos/dateinputs/floating-label/main.vue @@ -0,0 +1,91 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/globalization/es.json b/vue-options-api-demos/dateinputs/globalization/es.json new file mode 100644 index 00000000..7fd085c9 --- /dev/null +++ b/vue-options-api-demos/dateinputs/globalization/es.json @@ -0,0 +1,31 @@ +{ + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "datetimepicker": { + "date": "Fecha", + "time": "Hora", + "cancel": "Cancelar", + "set": "Conjunto" + }, + "timepicker": { + "set": "Conjunto", + "cancel": "Cancelar", + "now": "Ahora", + "selectNow": "Seleccionar ahora", + "toggleTimeSelector": "Selector de tiempo de alternancia", + "toggleClock": "Reloj de palanca" + }, + "daterangepicker": { + "swapStartEnd": "Swap start and end values", + "start": "Comienzo", + "end": "Fin" + } +} diff --git a/vue-options-api-demos/dateinputs/globalization/main.js b/vue-options-api-demos/dateinputs/globalization/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/globalization/main.vue b/vue-options-api-demos/dateinputs/globalization/main.vue new file mode 100644 index 00000000..d8517c95 --- /dev/null +++ b/vue-options-api-demos/dateinputs/globalization/main.vue @@ -0,0 +1,95 @@ + + diff --git a/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.js b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.vue b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.vue new file mode 100644 index 00000000..cb893011 --- /dev/null +++ b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/DateInputsStyleConfigurator.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/DateInputsStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/DateInputsStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.vue new file mode 100644 index 00000000..2f2cfa0c --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.vue new file mode 100644 index 00000000..12347c30 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.vue @@ -0,0 +1,95 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.vue new file mode 100644 index 00000000..df6675d7 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.vue @@ -0,0 +1,111 @@ +` + + + +` \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.vue new file mode 100644 index 00000000..34982847 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.vue @@ -0,0 +1,92 @@ + + + + diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.js b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.vue b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.vue new file mode 100644 index 00000000..8e0736aa --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.js b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.vue b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.vue new file mode 100644 index 00000000..0f1a58a8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/CustomDateInput.vue b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/CustomDateInput.vue new file mode 100644 index 00000000..99e2b143 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/CustomDateInput.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.js b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.vue b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.vue new file mode 100644 index 00000000..d2584d99 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/popup/CustomPopup.vue b/vue-options-api-demos/dateinputs/timepicker/custom/popup/CustomPopup.vue new file mode 100644 index 00000000..135e6d71 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/custom/popup/CustomPopup.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.js b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.vue b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.vue new file mode 100644 index 00000000..6fab3c43 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/default-show/main.js b/vue-options-api-demos/dateinputs/timepicker/default-show/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/default-show/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/default-show/main.vue b/vue-options-api-demos/dateinputs/timepicker/default-show/main.vue new file mode 100644 index 00000000..5490e9b8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/default-show/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/default-value/main.js b/vue-options-api-demos/dateinputs/timepicker/default-value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/default-value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/default-value/main.vue b/vue-options-api-demos/dateinputs/timepicker/default-value/main.vue new file mode 100644 index 00000000..4f056885 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/default-value/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/disabled/main.js b/vue-options-api-demos/dateinputs/timepicker/disabled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/disabled/main.vue b/vue-options-api-demos/dateinputs/timepicker/disabled/main.vue new file mode 100644 index 00000000..1de15fae --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/disabled/main.vue @@ -0,0 +1,16 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/events/main.js b/vue-options-api-demos/dateinputs/timepicker/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/events/main.vue b/vue-options-api-demos/dateinputs/timepicker/events/main.vue new file mode 100644 index 00000000..aee2c00d --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/events/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/floating-label/main.js b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/floating-label/main.vue b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.vue new file mode 100644 index 00000000..a8ccf490 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.vue @@ -0,0 +1,31 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/dateinputs/timepicker/formats/main.js b/vue-options-api-demos/dateinputs/timepicker/formats/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/formats/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/formats/main.vue b/vue-options-api-demos/dateinputs/timepicker/formats/main.vue new file mode 100644 index 00000000..6ab289ed --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/formats/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.vue new file mode 100644 index 00000000..51fae1d8 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.vue new file mode 100644 index 00000000..ca93269f --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.vue new file mode 100644 index 00000000..047f315c --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.vue @@ -0,0 +1,95 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/override/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/override/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.vue new file mode 100644 index 00000000..f2a3010b --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.vue @@ -0,0 +1,94 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/incremental/main.js b/vue-options-api-demos/dateinputs/timepicker/incremental/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/incremental/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/incremental/main.vue b/vue-options-api-demos/dateinputs/timepicker/incremental/main.vue new file mode 100644 index 00000000..ed5cefe9 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/incremental/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/input-mode/main.js b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/dateinputs/timepicker/input-mode/main.vue b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.vue new file mode 100644 index 00000000..b38debd2 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/json/main.js b/vue-options-api-demos/dateinputs/timepicker/json/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/json/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/json/main.vue b/vue-options-api-demos/dateinputs/timepicker/json/main.vue new file mode 100644 index 00000000..b41b3e0d --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/json/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/keyboard/main.js b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/keyboard/main.vue b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.vue new file mode 100644 index 00000000..64ec68d1 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.vue @@ -0,0 +1,16 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.js b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.vue b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.vue new file mode 100644 index 00000000..9a2103c1 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/placeholders/main.js b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/placeholders/main.vue b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.vue new file mode 100644 index 00000000..db0fa4be --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.js b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.vue b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.vue new file mode 100644 index 00000000..9a07d70f --- /dev/null +++ b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/action-buttons/main.js b/vue-options-api-demos/dialogs/dialog/action-buttons/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/action-buttons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/action-buttons/main.vue b/vue-options-api-demos/dialogs/dialog/action-buttons/main.vue new file mode 100644 index 00000000..48980bb2 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/action-buttons/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/dimetions/main.js b/vue-options-api-demos/dialogs/dialog/dimetions/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/dimetions/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/dimetions/main.vue b/vue-options-api-demos/dialogs/dialog/dimetions/main.vue new file mode 100644 index 00000000..8848c6d9 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/dimetions/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/keyboard/main.js b/vue-options-api-demos/dialogs/dialog/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/keyboard/main.vue b/vue-options-api-demos/dialogs/dialog/keyboard/main.vue new file mode 100644 index 00000000..2e2603d5 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/keyboard/main.vue @@ -0,0 +1,112 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/overview/main.js b/vue-options-api-demos/dialogs/dialog/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/overview/main.vue b/vue-options-api-demos/dialogs/dialog/overview/main.vue new file mode 100644 index 00000000..383a17c2 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/overview/main.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/rtl/main.js b/vue-options-api-demos/dialogs/dialog/rtl/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/rtl/main.vue b/vue-options-api-demos/dialogs/dialog/rtl/main.vue new file mode 100644 index 00000000..8a37b3a2 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/rtl/main.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/title/basic/main.js b/vue-options-api-demos/dialogs/dialog/title/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/title/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/title/basic/main.vue b/vue-options-api-demos/dialogs/dialog/title/basic/main.vue new file mode 100644 index 00000000..0ff6a635 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/title/basic/main.vue @@ -0,0 +1,16 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/title/no-title/main.js b/vue-options-api-demos/dialogs/dialog/title/no-title/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/title/no-title/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/title/no-title/main.vue b/vue-options-api-demos/dialogs/dialog/title/no-title/main.vue new file mode 100644 index 00000000..34ed020a --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/title/no-title/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/title/title-template/main.js b/vue-options-api-demos/dialogs/dialog/title/title-template/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/title/title-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/title/title-template/main.vue b/vue-options-api-demos/dialogs/dialog/title/title-template/main.vue new file mode 100644 index 00000000..f49291bb --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/title/title-template/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dialogs/dialog/visibility/main.js b/vue-options-api-demos/dialogs/dialog/visibility/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/visibility/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/dialog/visibility/main.vue b/vue-options-api-demos/dialogs/dialog/visibility/main.vue new file mode 100644 index 00000000..8aa539d3 --- /dev/null +++ b/vue-options-api-demos/dialogs/dialog/visibility/main.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/dialogs/overview/main.js b/vue-options-api-demos/dialogs/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/overview/main.vue b/vue-options-api-demos/dialogs/overview/main.vue new file mode 100644 index 00000000..e89bd754 --- /dev/null +++ b/vue-options-api-demos/dialogs/overview/main.vue @@ -0,0 +1,51 @@ + + diff --git a/vue-options-api-demos/dialogs/window/basic/main.js b/vue-options-api-demos/dialogs/window/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/basic/main.vue b/vue-options-api-demos/dialogs/window/basic/main.vue new file mode 100644 index 00000000..d74e3fb4 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/basic/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/dialogs/window/controlled/main.js b/vue-options-api-demos/dialogs/window/controlled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/controlled/main.vue b/vue-options-api-demos/dialogs/window/controlled/main.vue new file mode 100644 index 00000000..39c39b50 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/controlled/main.vue @@ -0,0 +1,63 @@ + + diff --git a/vue-options-api-demos/dialogs/window/dimensions/main.js b/vue-options-api-demos/dialogs/window/dimensions/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/dimensions/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/dimensions/main.vue b/vue-options-api-demos/dialogs/window/dimensions/main.vue new file mode 100644 index 00000000..b3dda5b0 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/dimensions/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dialogs/window/dragging/main.js b/vue-options-api-demos/dialogs/window/dragging/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/dragging/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/dragging/main.vue b/vue-options-api-demos/dialogs/window/dragging/main.vue new file mode 100644 index 00000000..a53d7c20 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/dragging/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dialogs/window/events/main.js b/vue-options-api-demos/dialogs/window/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/events/main.vue b/vue-options-api-demos/dialogs/window/events/main.vue new file mode 100644 index 00000000..a6b2b945 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/events/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/dialogs/window/hide-buttons/main.js b/vue-options-api-demos/dialogs/window/hide-buttons/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/hide-buttons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/hide-buttons/main.vue b/vue-options-api-demos/dialogs/window/hide-buttons/main.vue new file mode 100644 index 00000000..d0d18747 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/hide-buttons/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.js b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.vue b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.vue new file mode 100644 index 00000000..343a3f06 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.vue @@ -0,0 +1,43 @@ + + diff --git a/vue-options-api-demos/dialogs/window/positioning/main.js b/vue-options-api-demos/dialogs/window/positioning/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/positioning/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/positioning/main.vue b/vue-options-api-demos/dialogs/window/positioning/main.vue new file mode 100644 index 00000000..b8376468 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/positioning/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/dialogs/window/resizable/main.js b/vue-options-api-demos/dialogs/window/resizable/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/resizable/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/resizable/main.vue b/vue-options-api-demos/dialogs/window/resizable/main.vue new file mode 100644 index 00000000..b2708be6 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/resizable/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dialogs/window/title-basic/main.js b/vue-options-api-demos/dialogs/window/title-basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/title-basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/title-basic/main.vue b/vue-options-api-demos/dialogs/window/title-basic/main.vue new file mode 100644 index 00000000..43402bf7 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/title-basic/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/dialogs/window/title-component/Title.vue b/vue-options-api-demos/dialogs/window/title-component/Title.vue new file mode 100644 index 00000000..acbe201e --- /dev/null +++ b/vue-options-api-demos/dialogs/window/title-component/Title.vue @@ -0,0 +1,6 @@ + + diff --git a/vue-options-api-demos/dialogs/window/title-component/main.js b/vue-options-api-demos/dialogs/window/title-component/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/title-component/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/title-component/main.vue b/vue-options-api-demos/dialogs/window/title-component/main.vue new file mode 100644 index 00000000..53a63eff --- /dev/null +++ b/vue-options-api-demos/dialogs/window/title-component/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/dialogs/window/title-no/main.js b/vue-options-api-demos/dialogs/window/title-no/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dialogs/window/title-no/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dialogs/window/title-no/main.vue b/vue-options-api-demos/dialogs/window/title-no/main.vue new file mode 100644 index 00000000..7541a79f --- /dev/null +++ b/vue-options-api-demos/dialogs/window/title-no/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/DropDownStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/DropDownStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.vue new file mode 100644 index 00000000..7d4a1af2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.vue new file mode 100644 index 00000000..3f4f8bea --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.vue @@ -0,0 +1,95 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.vue new file mode 100644 index 00000000..ba9ac58c --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.vue @@ -0,0 +1,110 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.vue new file mode 100644 index 00000000..a26c433b --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.vue @@ -0,0 +1,92 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/basic/countries.js b/vue-options-api-demos/dropdowns/autocomplete/basic/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/basic/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/basic/main.vue new file mode 100644 index 00000000..936bcc15 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/basic/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.js b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.vue b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.vue new file mode 100644 index 00000000..6fc62a1e --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.js b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.vue b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.vue new file mode 100644 index 00000000..a65f8265 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.js b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.vue b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.vue new file mode 100644 index 00000000..30c5d492 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/common/countries.js b/vue-options-api-demos/dropdowns/autocomplete/common/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/common/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.vue new file mode 100644 index 00000000..8e7c699b --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.js b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.vue b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.vue new file mode 100644 index 00000000..67ab15e3 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.vue @@ -0,0 +1,54 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.vue new file mode 100644 index 00000000..5b94a303 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.vue new file mode 100644 index 00000000..96407e39 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.vue @@ -0,0 +1,73 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/countries.js new file mode 100644 index 00000000..24f270bb --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/countries.js @@ -0,0 +1,52 @@ +export const countries = [ + 'Albania', + 'Andorra', + 'Armenia', + 'Austria', + 'Azerbaijan', + 'Belarus', + 'Belgium', + 'Bosnia & Herzegovina', + 'Bulgaria', + 'Croatia', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Estonia', + 'Finland', + 'France', + 'Georgia', + 'Germany', + 'Greece', + 'Hungary', + 'Iceland', + 'Ireland', + 'Italy', + 'Kosovo', + 'Latvia', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Malta', + 'Moldova', + 'Monaco', + 'Montenegro', + 'Netherlands', + 'Norway', + 'Poland', + 'Portugal', + 'Romania', + 'Russia', + 'San Marino', + 'Serbia', + 'Slovakia', + 'Slovenia', + 'Spain', + 'Sweden', + 'Switzerland', + 'Turkey', + 'Ukraine', + 'United Kingdom', + 'Vatican City' +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.vue new file mode 100644 index 00000000..3303485c --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.vue @@ -0,0 +1,72 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.vue new file mode 100644 index 00000000..c7d1e7d9 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.vue @@ -0,0 +1,101 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/override/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/override/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/override/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.vue new file mode 100644 index 00000000..b6ce48b1 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.vue new file mode 100644 index 00000000..cdda7121 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/GroupHeaderItemRender.vue new file mode 100644 index 00000000..d2c8a237 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/GroupHeaderItemRender.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/ItemRender.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/ItemRender.vue new file mode 100644 index 00000000..0967fc13 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/ItemRender.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/StickyHeaderRender.vue new file mode 100644 index 00000000..60e0a1aa --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/StickyHeaderRender.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/grouping-data.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.vue new file mode 100644 index 00000000..b1eb9575 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.vue @@ -0,0 +1,63 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/grouping-data.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.vue new file mode 100644 index 00000000..d7a7cc09 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.vue @@ -0,0 +1,45 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/autocomplete/header-footer/FooterRender.vue new file mode 100644 index 00000000..328e96da --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/FooterRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/autocomplete/header-footer/HeaderRender.vue new file mode 100644 index 00000000..dd7e5d25 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/HeaderRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/countries.js b/vue-options-api-demos/dropdowns/autocomplete/header-footer/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.js b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.vue b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.vue new file mode 100644 index 00000000..383f5c8e --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/autocomplete/item-render/ItemRender.vue new file mode 100644 index 00000000..aea48b72 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/ItemRender.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/countries.js b/vue-options-api-demos/dropdowns/autocomplete/item-render/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/main.js b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/main.vue b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.vue new file mode 100644 index 00000000..f3880b12 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.js b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.vue b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.vue new file mode 100644 index 00000000..42c05e1f --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/NoDataRender.vue new file mode 100644 index 00000000..9c42c161 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/NoDataRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.js b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.vue b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.vue new file mode 100644 index 00000000..6526c89b --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/dropdowns/autocomplete/suggest/countries.js b/vue-options-api-demos/dropdowns/autocomplete/suggest/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/suggest/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/autocomplete/suggest/main.js b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/autocomplete/suggest/main.vue b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.vue new file mode 100644 index 00000000..92ea9322 --- /dev/null +++ b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/grouping-data.js new file mode 100644 index 00000000..9f42ec6e --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/grouping-data.js @@ -0,0 +1,200 @@ +export const employees = [ + { + id: 11, + name: "Hyacinth Hood", + reportsTo: 32, + phone: "(889) 345-2438", + extension: 8564, + hireDate: new Date("2014-02-03T20:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 1, + }, + { + id: 40, + name: "Karleigh Garza", + reportsTo: 52, + phone: "(370) 983-8796", + extension: 4044, + hireDate: new Date("2014-03-10T00:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 1, + }, + { + id: 46, + name: "Darrel Solis", + reportsTo: 43, + phone: "(327) 977-0216", + extension: 7779, + hireDate: new Date("2015-04-25T00:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 4, + }, + { + id: 76, + name: "Cheyenne Olson", + reportsTo: 63, + phone: "(241) 645-0257", + extension: 9181, + hireDate: new Date("2015-05-19T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 5, + }, + { + id: 78, + name: "Rinah Simon", + reportsTo: 11, + phone: "(285) 912-5271", + extension: 7795, + hireDate: new Date("2012-10-11T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 4, + }, + { + id: 79, + name: "Duncan Mathews", + reportsTo: 64, + phone: "(790) 971-9709", + extension: 4573, + hireDate: new Date("2011-08-21T00:00:00.000Z"), + fullTime: false, + position: "Developer", + timeInPosition: 3, + }, + { + id: 82, + name: "Yael Walters", + reportsTo: 69, + phone: "(311) 489-8191", + extension: 6520, + hireDate: new Date("2013-07-04T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 6, + }, + { + id: 75, + name: "Eric Russell", + reportsTo: 63, + phone: "(516) 575-8505", + extension: 2224, + hireDate: new Date("2012-10-28T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 3, + }, + { + id: 55, + name: "Summer Mosley", + reportsTo: 46, + phone: "(784) 962-2301", + extension: 5492, + hireDate: new Date("2010-03-02T00:00:00.000Z"), + fullTime: true, + position: "QA", + timeInPosition: 5, + }, + { + id: 59, + name: "Keiko Espinoza", + reportsTo: 46, + phone: "(226) 600-5305", + extension: 9363, + hireDate: new Date("2011-09-18T00:00:00.000Z"), + fullTime: true, + position: "QA", + timeInPosition: 4, + }, + { + id: 72, + name: "Stacey Lynn", + reportsTo: 40, + phone: "(140) 772-7509", + extension: 8396, + hireDate: new Date("2014-07-31T00:00:00.000Z"), + fullTime: false, + position: "QA", + timeInPosition: 1, + }, + { + id: 38, + name: "Elton Tucker", + reportsTo: 69, + phone: "(988) 930-9331", + extension: 9216, + hireDate: new Date("2015-06-04T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 1, + }, + { + id: 71, + name: "Flavia Short", + reportsTo: 63, + phone: "(370) 133-9238", + extension: 6390, + hireDate: new Date("2013-02-21T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 0, + }, + { + id: 61, + name: "Candace Pickett", + reportsTo: 46, + phone: "(120) 117-7475", + extension: 5178, + hireDate: new Date("2010-05-06T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 0, + }, + { + id: 65, + name: "Thomas Terry", + reportsTo: 63, + phone: "(764) 831-4248", + extension: 3574, + hireDate: new Date("2015-06-15T00:00:00.000Z"), + fullTime: false, + position: "Support", + timeInPosition: 2, + }, + { + id: 62, + name: "Palmer Gregory", + reportsTo: 64, + phone: "(360) 430-2505", + extension: 4337, + hireDate: new Date("2014-08-30T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 4, + }, + { + id: 12, + name: "Jamalia Wallace", + reportsTo: 64, + phone: "(611) 391-8016", + extension: 1952, + hireDate: new Date("2011-09-08T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 3, + }, + { + id: 66, + name: "Gloria Freeman", + reportsTo: 53, + phone: "(344) 950-9168", + extension: 4738, + hireDate: new Date("2013-05-06T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 0, + }, +]; diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.js b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.vue b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.vue new file mode 100644 index 00000000..b323d1c8 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.vue @@ -0,0 +1,28 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.vue new file mode 100644 index 00000000..a730991d --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/DropDownStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/DropDownStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.vue new file mode 100644 index 00000000..b0e1f160 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.vue new file mode 100644 index 00000000..2f44c427 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.vue @@ -0,0 +1,95 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.vue new file mode 100644 index 00000000..692dd2ff --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.vue @@ -0,0 +1,110 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/size/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/size/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.vue new file mode 100644 index 00000000..e063b3a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.vue @@ -0,0 +1,92 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/combobox/basic/main.js b/vue-options-api-demos/dropdowns/combobox/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/basic/main.vue new file mode 100644 index 00000000..f0756813 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/basic/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.vue new file mode 100644 index 00000000..34ca393e --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.vue new file mode 100644 index 00000000..c0202a78 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.vue new file mode 100644 index 00000000..2b52dc76 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.vue new file mode 100644 index 00000000..aa3beb01 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/cascading/data.js b/vue-options-api-demos/dropdowns/combobox/cascading/data.js new file mode 100644 index 00000000..206f3369 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/cascading/data.js @@ -0,0 +1,31 @@ +const dataCategories = [ + { categoryName: "Beverages", categoryId: 1 }, + { categoryName: "Condiments", categoryId: 2 }, + { categoryName: "Seafood", categoryId: 3 } +]; + +const dataProducts = [ + { productName: "Chai", productId: 1, categoryId: 1 }, + { productName: "Chang", productId: 2, categoryId: 1 }, + { productName: "Aniseed Syrup", productId: 3, categoryId: 2 }, + { productName: "Genen Shouyu", productId: 4, categoryId: 2 }, + { productName: "Ikura", productId: 5, categoryId: 3 }, + { productName: "Konbu", productId: 6, categoryId: 3 } +]; + +const dataOrders = [ + { orderName: "Cunewalde", orderId: 1, productId: 1 }, + { orderName: "Albuquerque", orderId: 2, productId: 1 }, + { orderName: "Geneva", orderId: 3, productId: 2 }, + { orderName: "Graz", orderId: 4, productId: 2 }, + { orderName: "London", orderId: 5, productId: 3 }, + { orderName: "I. de Margarita", orderId: 6, productId: 3 }, + { orderName: "Barquisimeto", orderId: 7, productId: 4 }, + { orderName: "Brandenburg", orderId: 8, productId: 4 }, + { orderName: "Cunewalde", orderId: 9, productId: 5 }, + { orderName: "Mexico D.F.", orderId: 10, productId: 5 }, + { orderName: "Mexico D.F.", orderId: 11, productId: 6 }, + { orderName: "Rio de Janeiro", orderId: 12, productId: 6 } +]; + +export { dataCategories, dataProducts, dataOrders }; diff --git a/vue-options-api-demos/dropdowns/combobox/cascading/main.js b/vue-options-api-demos/dropdowns/combobox/cascading/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/cascading/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/cascading/main.vue b/vue-options-api-demos/dropdowns/combobox/cascading/main.vue new file mode 100644 index 00000000..416ba20a --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/cascading/main.vue @@ -0,0 +1,85 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/common/countries.js b/vue-options-api-demos/dropdowns/combobox/common/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/common/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.js b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.vue b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.vue new file mode 100644 index 00000000..a1ef0284 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.vue @@ -0,0 +1,51 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.js b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.vue b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.vue new file mode 100644 index 00000000..4ef45765 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.vue new file mode 100644 index 00000000..7d2dd40d --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.vue new file mode 100644 index 00000000..36fd1488 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.vue new file mode 100644 index 00000000..2573d7b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.vue new file mode 100644 index 00000000..e697dcb5 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.vue @@ -0,0 +1,151 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/forms/basic/main.js b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/forms/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.vue new file mode 100644 index 00000000..c5b8e99c --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.vue @@ -0,0 +1,75 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/forms/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/countries.js new file mode 100644 index 00000000..24f270bb --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/countries.js @@ -0,0 +1,52 @@ +export const countries = [ + 'Albania', + 'Andorra', + 'Armenia', + 'Austria', + 'Azerbaijan', + 'Belarus', + 'Belgium', + 'Bosnia & Herzegovina', + 'Bulgaria', + 'Croatia', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Estonia', + 'Finland', + 'France', + 'Georgia', + 'Germany', + 'Greece', + 'Hungary', + 'Iceland', + 'Ireland', + 'Italy', + 'Kosovo', + 'Latvia', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Malta', + 'Moldova', + 'Monaco', + 'Montenegro', + 'Netherlands', + 'Norway', + 'Poland', + 'Portugal', + 'Romania', + 'Russia', + 'San Marino', + 'Serbia', + 'Slovakia', + 'Slovenia', + 'Spain', + 'Sweden', + 'Switzerland', + 'Turkey', + 'Ukraine', + 'United Kingdom', + 'Vatican City' +]; diff --git a/vue-options-api-demos/dropdowns/combobox/forms/custom-message/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.vue new file mode 100644 index 00000000..67b1f565 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.vue @@ -0,0 +1,72 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.vue new file mode 100644 index 00000000..6d4ac07f --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.vue @@ -0,0 +1,101 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/forms/override/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/override/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/override/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/combobox/forms/override/main.js b/vue-options-api-demos/dropdowns/combobox/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/forms/override/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/override/main.vue new file mode 100644 index 00000000..ccb6bbec --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/forms/override/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/grouping/basic/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/basic/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.vue new file mode 100644 index 00000000..d8d86c56 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/GroupHeaderItemRender.vue new file mode 100644 index 00000000..d2c8a237 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/GroupHeaderItemRender.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/ItemRender.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/ItemRender.vue new file mode 100644 index 00000000..0967fc13 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/ItemRender.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/StickyHeaderRender.vue new file mode 100644 index 00000000..60e0a1aa --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/StickyHeaderRender.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/grouping/custom/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.vue new file mode 100644 index 00000000..729ab719 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.vue @@ -0,0 +1,63 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/filtering/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.vue new file mode 100644 index 00000000..9eee11e8 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.vue @@ -0,0 +1,45 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.vue new file mode 100644 index 00000000..4f4ee38d --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.vue @@ -0,0 +1,107 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/combobox/header-footer/FooterRender.vue new file mode 100644 index 00000000..328e96da --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/header-footer/FooterRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/combobox/header-footer/HeaderRender.vue new file mode 100644 index 00000000..dd7e5d25 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/header-footer/HeaderRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/countries.js b/vue-options-api-demos/dropdowns/combobox/header-footer/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/header-footer/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/main.js b/vue-options-api-demos/dropdowns/combobox/header-footer/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/header-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/main.vue b/vue-options-api-demos/dropdowns/combobox/header-footer/main.vue new file mode 100644 index 00000000..c3297f27 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/header-footer/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/combobox/item-render/ItemRender.vue new file mode 100644 index 00000000..50ceb09f --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/item-render/ItemRender.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/countries.js b/vue-options-api-demos/dropdowns/combobox/item-render/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/item-render/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/main.js b/vue-options-api-demos/dropdowns/combobox/item-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/item-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/main.vue b/vue-options-api-demos/dropdowns/combobox/item-render/main.vue new file mode 100644 index 00000000..843457d5 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/item-render/main.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.js b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.vue b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.vue new file mode 100644 index 00000000..31bcf195 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/combobox/nodata-render/NoDataRender.vue new file mode 100644 index 00000000..8beb5641 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/nodata-render/NoDataRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/nodata-render/main.js b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/nodata-render/main.vue b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.vue new file mode 100644 index 00000000..4707920e --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/suggest/countries.js b/vue-options-api-demos/dropdowns/combobox/suggest/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/suggest/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/combobox/suggest/main.js b/vue-options-api-demos/dropdowns/combobox/suggest/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/suggest/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/suggest/main.vue b/vue-options-api-demos/dropdowns/combobox/suggest/main.vue new file mode 100644 index 00000000..ba69f316 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/suggest/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.js b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.vue new file mode 100644 index 00000000..385a1f25 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.js b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.vue b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.vue new file mode 100644 index 00000000..62e2c112 --- /dev/null +++ b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/dropdowns/common/es.json b/vue-options-api-demos/dropdowns/common/es.json new file mode 100644 index 00000000..dc3df71d --- /dev/null +++ b/vue-options-api-demos/dropdowns/common/es.json @@ -0,0 +1,6 @@ +{ + "dropdowns": { + "nodata": "DATOS NO ENCONTRADOS.", + "clear": "claro" + } +} diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/grouping-data.js new file mode 100644 index 00000000..9f42ec6e --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/grouping-data.js @@ -0,0 +1,200 @@ +export const employees = [ + { + id: 11, + name: "Hyacinth Hood", + reportsTo: 32, + phone: "(889) 345-2438", + extension: 8564, + hireDate: new Date("2014-02-03T20:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 1, + }, + { + id: 40, + name: "Karleigh Garza", + reportsTo: 52, + phone: "(370) 983-8796", + extension: 4044, + hireDate: new Date("2014-03-10T00:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 1, + }, + { + id: 46, + name: "Darrel Solis", + reportsTo: 43, + phone: "(327) 977-0216", + extension: 7779, + hireDate: new Date("2015-04-25T00:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 4, + }, + { + id: 76, + name: "Cheyenne Olson", + reportsTo: 63, + phone: "(241) 645-0257", + extension: 9181, + hireDate: new Date("2015-05-19T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 5, + }, + { + id: 78, + name: "Rinah Simon", + reportsTo: 11, + phone: "(285) 912-5271", + extension: 7795, + hireDate: new Date("2012-10-11T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 4, + }, + { + id: 79, + name: "Duncan Mathews", + reportsTo: 64, + phone: "(790) 971-9709", + extension: 4573, + hireDate: new Date("2011-08-21T00:00:00.000Z"), + fullTime: false, + position: "Developer", + timeInPosition: 3, + }, + { + id: 82, + name: "Yael Walters", + reportsTo: 69, + phone: "(311) 489-8191", + extension: 6520, + hireDate: new Date("2013-07-04T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 6, + }, + { + id: 75, + name: "Eric Russell", + reportsTo: 63, + phone: "(516) 575-8505", + extension: 2224, + hireDate: new Date("2012-10-28T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 3, + }, + { + id: 55, + name: "Summer Mosley", + reportsTo: 46, + phone: "(784) 962-2301", + extension: 5492, + hireDate: new Date("2010-03-02T00:00:00.000Z"), + fullTime: true, + position: "QA", + timeInPosition: 5, + }, + { + id: 59, + name: "Keiko Espinoza", + reportsTo: 46, + phone: "(226) 600-5305", + extension: 9363, + hireDate: new Date("2011-09-18T00:00:00.000Z"), + fullTime: true, + position: "QA", + timeInPosition: 4, + }, + { + id: 72, + name: "Stacey Lynn", + reportsTo: 40, + phone: "(140) 772-7509", + extension: 8396, + hireDate: new Date("2014-07-31T00:00:00.000Z"), + fullTime: false, + position: "QA", + timeInPosition: 1, + }, + { + id: 38, + name: "Elton Tucker", + reportsTo: 69, + phone: "(988) 930-9331", + extension: 9216, + hireDate: new Date("2015-06-04T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 1, + }, + { + id: 71, + name: "Flavia Short", + reportsTo: 63, + phone: "(370) 133-9238", + extension: 6390, + hireDate: new Date("2013-02-21T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 0, + }, + { + id: 61, + name: "Candace Pickett", + reportsTo: 46, + phone: "(120) 117-7475", + extension: 5178, + hireDate: new Date("2010-05-06T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 0, + }, + { + id: 65, + name: "Thomas Terry", + reportsTo: 63, + phone: "(764) 831-4248", + extension: 3574, + hireDate: new Date("2015-06-15T00:00:00.000Z"), + fullTime: false, + position: "Support", + timeInPosition: 2, + }, + { + id: 62, + name: "Palmer Gregory", + reportsTo: 64, + phone: "(360) 430-2505", + extension: 4337, + hireDate: new Date("2014-08-30T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 4, + }, + { + id: 12, + name: "Jamalia Wallace", + reportsTo: 64, + phone: "(611) 391-8016", + extension: 1952, + hireDate: new Date("2011-09-08T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 3, + }, + { + id: 66, + name: "Gloria Freeman", + reportsTo: 53, + phone: "(344) 950-9168", + extension: 4738, + hireDate: new Date("2013-05-06T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 0, + }, +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.js b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.vue new file mode 100644 index 00000000..b5698054 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.vue @@ -0,0 +1,28 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.vue new file mode 100644 index 00000000..7762a4a5 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/DropDownStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/DropDownStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.vue new file mode 100644 index 00000000..ac002565 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.vue new file mode 100644 index 00000000..7e383a27 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.vue @@ -0,0 +1,95 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.vue new file mode 100644 index 00000000..ee431e02 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.vue @@ -0,0 +1,110 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.vue new file mode 100644 index 00000000..98901cb6 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.vue @@ -0,0 +1,92 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.vue new file mode 100644 index 00000000..0b663932 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/binding/main.js b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/binding/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.vue new file mode 100644 index 00000000..6a4cf8c0 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/cascading/data.js b/vue-options-api-demos/dropdowns/dropdownlist/cascading/data.js new file mode 100644 index 00000000..206f3369 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/cascading/data.js @@ -0,0 +1,31 @@ +const dataCategories = [ + { categoryName: "Beverages", categoryId: 1 }, + { categoryName: "Condiments", categoryId: 2 }, + { categoryName: "Seafood", categoryId: 3 } +]; + +const dataProducts = [ + { productName: "Chai", productId: 1, categoryId: 1 }, + { productName: "Chang", productId: 2, categoryId: 1 }, + { productName: "Aniseed Syrup", productId: 3, categoryId: 2 }, + { productName: "Genen Shouyu", productId: 4, categoryId: 2 }, + { productName: "Ikura", productId: 5, categoryId: 3 }, + { productName: "Konbu", productId: 6, categoryId: 3 } +]; + +const dataOrders = [ + { orderName: "Cunewalde", orderId: 1, productId: 1 }, + { orderName: "Albuquerque", orderId: 2, productId: 1 }, + { orderName: "Geneva", orderId: 3, productId: 2 }, + { orderName: "Graz", orderId: 4, productId: 2 }, + { orderName: "London", orderId: 5, productId: 3 }, + { orderName: "I. de Margarita", orderId: 6, productId: 3 }, + { orderName: "Barquisimeto", orderId: 7, productId: 4 }, + { orderName: "Brandenburg", orderId: 8, productId: 4 }, + { orderName: "Cunewalde", orderId: 9, productId: 5 }, + { orderName: "Mexico D.F.", orderId: 10, productId: 5 }, + { orderName: "Mexico D.F.", orderId: 11, productId: 6 }, + { orderName: "Rio de Janeiro", orderId: 12, productId: 6 } +]; + +export { dataCategories, dataProducts, dataOrders }; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.js b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.vue new file mode 100644 index 00000000..c85a8ae4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.vue @@ -0,0 +1,96 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/common/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/common/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/common/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.vue new file mode 100644 index 00000000..0b663932 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.js b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.vue new file mode 100644 index 00000000..e2b201e5 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/events/main.js b/vue-options-api-demos/dropdowns/dropdownlist/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/events/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/events/main.vue new file mode 100644 index 00000000..fa8464ef --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/events/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.vue new file mode 100644 index 00000000..97b3e277 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.vue new file mode 100644 index 00000000..bf8c960a --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.vue @@ -0,0 +1,51 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.vue new file mode 100644 index 00000000..63735684 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.vue new file mode 100644 index 00000000..e0ff1adc --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.vue @@ -0,0 +1,163 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.vue new file mode 100644 index 00000000..adf013f8 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/countries.js new file mode 100644 index 00000000..24f270bb --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/countries.js @@ -0,0 +1,52 @@ +export const countries = [ + 'Albania', + 'Andorra', + 'Armenia', + 'Austria', + 'Azerbaijan', + 'Belarus', + 'Belgium', + 'Bosnia & Herzegovina', + 'Bulgaria', + 'Croatia', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Estonia', + 'Finland', + 'France', + 'Georgia', + 'Germany', + 'Greece', + 'Hungary', + 'Iceland', + 'Ireland', + 'Italy', + 'Kosovo', + 'Latvia', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Malta', + 'Moldova', + 'Monaco', + 'Montenegro', + 'Netherlands', + 'Norway', + 'Poland', + 'Portugal', + 'Romania', + 'Russia', + 'San Marino', + 'Serbia', + 'Slovakia', + 'Slovenia', + 'Spain', + 'Sweden', + 'Switzerland', + 'Turkey', + 'Ukraine', + 'United Kingdom', + 'Vatican City' +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.vue new file mode 100644 index 00000000..f46f7e07 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.vue @@ -0,0 +1,72 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.vue new file mode 100644 index 00000000..0054a565 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.vue @@ -0,0 +1,101 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/override/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.vue new file mode 100644 index 00000000..bc3b4974 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.vue new file mode 100644 index 00000000..01ec2cfd --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.vue @@ -0,0 +1,26 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/GroupHeaderItemRender.vue new file mode 100644 index 00000000..d2c8a237 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/GroupHeaderItemRender.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/ItemRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/ItemRender.vue new file mode 100644 index 00000000..0967fc13 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/ItemRender.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/StickyHeaderRender.vue new file mode 100644 index 00000000..60e0a1aa --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/StickyHeaderRender.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.vue new file mode 100644 index 00000000..fab8a512 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.vue new file mode 100644 index 00000000..d022fab6 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.vue new file mode 100644 index 00000000..6f0d75d3 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.vue @@ -0,0 +1,107 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/FooterRender.vue new file mode 100644 index 00000000..328e96da --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/FooterRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/HeaderRender.vue new file mode 100644 index 00000000..dd7e5d25 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/HeaderRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.js b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.vue new file mode 100644 index 00000000..696fbd24 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/item-render/ItemRender.vue new file mode 100644 index 00000000..f22df9e7 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/ItemRender.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/item-render/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.js b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.vue new file mode 100644 index 00000000..55608b36 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.js b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.vue new file mode 100644 index 00000000..27120802 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/NoDataRender.vue new file mode 100644 index 00000000..9c42c161 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/NoDataRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.js b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.vue new file mode 100644 index 00000000..f50e56e4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.js b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.vue new file mode 100644 index 00000000..23e75cc6 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.js b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.vue new file mode 100644 index 00000000..780066bd --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-field/main.jsx b/vue-options-api-demos/dropdowns/dropdownlist/value-field/main.jsx new file mode 100644 index 00000000..5b0ab42f --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-field/main.jsx @@ -0,0 +1,47 @@ +import Vue from 'vue'; +import VueDOM from 'vue-dom'; +import { DropDownList } from '@progress/kendo-vue-dropdowns'; +import withValueField from './withValueField.jsx'; + +const DropDownListWithValueField = withValueField(DropDownList); + +class AppComponent extends Vue.Component { + sports = [ + { text: 'Basketball', id: 1 }, + { text: 'Football', id: 2 }, + { text: 'Tennis', id: 3 }, + { text: 'Volleyball', id: 4 } + ]; + state = { + value: null + }; + + handleChange = (event) => { + this.setState({ + value: event.target.value + }); + } + + render() { + return ( +
+
+ Selected Value: {this.state.value} +
+ +
+ ); + } +} + +VueDOM.render( + , + document.querySelector('my-app') +); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.js b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.vue new file mode 100644 index 00000000..e3fb21cb --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/ValueRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-render/ValueRender.vue new file mode 100644 index 00000000..498b988c --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/ValueRender.vue @@ -0,0 +1,24 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/value-render/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.js b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.vue new file mode 100644 index 00000000..4d4aa3a8 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.js b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.vue new file mode 100644 index 00000000..48a1ecbe --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.vue @@ -0,0 +1,75 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.js b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.vue new file mode 100644 index 00000000..3e42ce16 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.vue new file mode 100644 index 00000000..fba25f39 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.vue @@ -0,0 +1,82 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/DropDownStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/DropDownStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.vue new file mode 100644 index 00000000..118af0da --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.vue @@ -0,0 +1,95 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.vue new file mode 100644 index 00000000..947f26fd --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.vue @@ -0,0 +1,145 @@ + + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.vue new file mode 100644 index 00000000..51b51036 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.vue @@ -0,0 +1,162 @@ + + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.vue new file mode 100644 index 00000000..b4d8cf32 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.vue @@ -0,0 +1,122 @@ + + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/main.js b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.vue new file mode 100644 index 00000000..afe1e0f3 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.vue @@ -0,0 +1,69 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.vue new file mode 100644 index 00000000..98363439 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.vue @@ -0,0 +1,85 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.vue new file mode 100644 index 00000000..f26b91eb --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.vue @@ -0,0 +1,80 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.vue new file mode 100644 index 00000000..c50e2725 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.vue @@ -0,0 +1,129 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/basic/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.vue new file mode 100644 index 00000000..c1c9db5e --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.vue @@ -0,0 +1,143 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.vue new file mode 100644 index 00000000..1de6f706 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.vue @@ -0,0 +1,156 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.vue new file mode 100644 index 00000000..d2b714bd --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.vue @@ -0,0 +1,154 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/override/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/override/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/form/override/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.js b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.vue new file mode 100644 index 00000000..105d108f --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.vue @@ -0,0 +1,97 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.js b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.vue new file mode 100644 index 00000000..5fe826ea --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.vue @@ -0,0 +1,98 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data.js new file mode 100644 index 00000000..4fc5bfec --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data.js @@ -0,0 +1,28 @@ +export const data = [ { + text: 'My Documents', id: 1, + items: [ + { + text: 'Kendo UI for Vue Project', id: 2, + items: [ + { text: 'about.html', id: 3 }, + { text: 'index.html', id: 4 }, + { text: 'logo.png', id: 5 } + ] + }, + { + text: 'New Web Site', id: 6, + items: [ + { text: 'mockup.jpg', id: 7 }, + { text: 'Research.pdf', id: 8 } + ] + }, + { + text: 'Reports', id: 9, + items: [ + { text: 'February.pdf', id: 10 }, + { text: 'March.pdf', id: 11 }, + { text: 'April.pdf', id: 12 } + ] + } + ] +} ]; \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.js b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.vue new file mode 100644 index 00000000..e6f89ce0 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.vue @@ -0,0 +1,87 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/no-data/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/no-data/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/no-data/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/main.js b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.vue new file mode 100644 index 00000000..b7efaa29 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.vue @@ -0,0 +1,65 @@ + + diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/globalization/es.json b/vue-options-api-demos/dropdowns/globalization/es.json new file mode 100644 index 00000000..dc3df71d --- /dev/null +++ b/vue-options-api-demos/dropdowns/globalization/es.json @@ -0,0 +1,6 @@ +{ + "dropdowns": { + "nodata": "DATOS NO ENCONTRADOS.", + "clear": "claro" + } +} diff --git a/vue-options-api-demos/dropdowns/globalization/main.js b/vue-options-api-demos/dropdowns/globalization/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/globalization/main.vue b/vue-options-api-demos/dropdowns/globalization/main.vue new file mode 100644 index 00000000..77e3f2ba --- /dev/null +++ b/vue-options-api-demos/dropdowns/globalization/main.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/label/main.js b/vue-options-api-demos/dropdowns/label/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/label/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/label/main.vue b/vue-options-api-demos/dropdowns/label/main.vue new file mode 100644 index 00000000..dc92f64a --- /dev/null +++ b/vue-options-api-demos/dropdowns/label/main.vue @@ -0,0 +1,168 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/label/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/label/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/label/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/label/tree-data-operations.js b/vue-options-api-demos/dropdowns/label/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/label/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/label/tree-data.js b/vue-options-api-demos/dropdowns/label/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/label/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/grouping-data.js new file mode 100644 index 00000000..9f42ec6e --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/grouping-data.js @@ -0,0 +1,200 @@ +export const employees = [ + { + id: 11, + name: "Hyacinth Hood", + reportsTo: 32, + phone: "(889) 345-2438", + extension: 8564, + hireDate: new Date("2014-02-03T20:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 1, + }, + { + id: 40, + name: "Karleigh Garza", + reportsTo: 52, + phone: "(370) 983-8796", + extension: 4044, + hireDate: new Date("2014-03-10T00:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 1, + }, + { + id: 46, + name: "Darrel Solis", + reportsTo: 43, + phone: "(327) 977-0216", + extension: 7779, + hireDate: new Date("2015-04-25T00:00:00.000Z"), + fullTime: true, + position: "Team Lead", + timeInPosition: 4, + }, + { + id: 76, + name: "Cheyenne Olson", + reportsTo: 63, + phone: "(241) 645-0257", + extension: 9181, + hireDate: new Date("2015-05-19T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 5, + }, + { + id: 78, + name: "Rinah Simon", + reportsTo: 11, + phone: "(285) 912-5271", + extension: 7795, + hireDate: new Date("2012-10-11T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 4, + }, + { + id: 79, + name: "Duncan Mathews", + reportsTo: 64, + phone: "(790) 971-9709", + extension: 4573, + hireDate: new Date("2011-08-21T00:00:00.000Z"), + fullTime: false, + position: "Developer", + timeInPosition: 3, + }, + { + id: 82, + name: "Yael Walters", + reportsTo: 69, + phone: "(311) 489-8191", + extension: 6520, + hireDate: new Date("2013-07-04T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 6, + }, + { + id: 75, + name: "Eric Russell", + reportsTo: 63, + phone: "(516) 575-8505", + extension: 2224, + hireDate: new Date("2012-10-28T00:00:00.000Z"), + fullTime: true, + position: "Developer", + timeInPosition: 3, + }, + { + id: 55, + name: "Summer Mosley", + reportsTo: 46, + phone: "(784) 962-2301", + extension: 5492, + hireDate: new Date("2010-03-02T00:00:00.000Z"), + fullTime: true, + position: "QA", + timeInPosition: 5, + }, + { + id: 59, + name: "Keiko Espinoza", + reportsTo: 46, + phone: "(226) 600-5305", + extension: 9363, + hireDate: new Date("2011-09-18T00:00:00.000Z"), + fullTime: true, + position: "QA", + timeInPosition: 4, + }, + { + id: 72, + name: "Stacey Lynn", + reportsTo: 40, + phone: "(140) 772-7509", + extension: 8396, + hireDate: new Date("2014-07-31T00:00:00.000Z"), + fullTime: false, + position: "QA", + timeInPosition: 1, + }, + { + id: 38, + name: "Elton Tucker", + reportsTo: 69, + phone: "(988) 930-9331", + extension: 9216, + hireDate: new Date("2015-06-04T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 1, + }, + { + id: 71, + name: "Flavia Short", + reportsTo: 63, + phone: "(370) 133-9238", + extension: 6390, + hireDate: new Date("2013-02-21T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 0, + }, + { + id: 61, + name: "Candace Pickett", + reportsTo: 46, + phone: "(120) 117-7475", + extension: 5178, + hireDate: new Date("2010-05-06T00:00:00.000Z"), + fullTime: true, + position: "Support", + timeInPosition: 0, + }, + { + id: 65, + name: "Thomas Terry", + reportsTo: 63, + phone: "(764) 831-4248", + extension: 3574, + hireDate: new Date("2015-06-15T00:00:00.000Z"), + fullTime: false, + position: "Support", + timeInPosition: 2, + }, + { + id: 62, + name: "Palmer Gregory", + reportsTo: 64, + phone: "(360) 430-2505", + extension: 4337, + hireDate: new Date("2014-08-30T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 4, + }, + { + id: 12, + name: "Jamalia Wallace", + reportsTo: 64, + phone: "(611) 391-8016", + extension: 1952, + hireDate: new Date("2011-09-08T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 3, + }, + { + id: 66, + name: "Gloria Freeman", + reportsTo: 53, + phone: "(344) 950-9168", + extension: 4738, + hireDate: new Date("2013-05-06T00:00:00.000Z"), + fullTime: true, + position: "Designer", + timeInPosition: 0, + }, +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.js b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.vue b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.vue new file mode 100644 index 00000000..aa26a895 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.vue @@ -0,0 +1,28 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.vue new file mode 100644 index 00000000..c16bb70b --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.js b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.vue b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.vue new file mode 100644 index 00000000..7ad786cd --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.js b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.vue b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.vue new file mode 100644 index 00000000..1942e4e4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/DropDownStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/DropDownStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.vue new file mode 100644 index 00000000..8fd92c94 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.vue new file mode 100644 index 00000000..b2c0ea94 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.vue @@ -0,0 +1,95 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.vue new file mode 100644 index 00000000..a0bb0b54 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.vue @@ -0,0 +1,110 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.vue new file mode 100644 index 00000000..c50a02b0 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.vue @@ -0,0 +1,92 @@ + + + + diff --git a/vue-options-api-demos/dropdowns/multiselect/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/basic/main.vue new file mode 100644 index 00000000..731f4a84 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/basic/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/binding/main.js b/vue-options-api-demos/dropdowns/multiselect/binding/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/binding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/binding/main.vue b/vue-options-api-demos/dropdowns/multiselect/binding/main.vue new file mode 100644 index 00000000..68743f9a --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/binding/main.vue @@ -0,0 +1,26 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/complex-value/main.js b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/complex-value/main.vue b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.vue new file mode 100644 index 00000000..bb259a3d --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.vue @@ -0,0 +1,45 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/controlled/main.js b/vue-options-api-demos/dropdowns/multiselect/controlled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/controlled/main.vue b/vue-options-api-demos/dropdowns/multiselect/controlled/main.vue new file mode 100644 index 00000000..fa39c7e3 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/controlled/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/events/countries.js b/vue-options-api-demos/dropdowns/multiselect/events/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/events/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/events/main.js b/vue-options-api-demos/dropdowns/multiselect/events/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/events/main.vue b/vue-options-api-demos/dropdowns/multiselect/events/main.vue new file mode 100644 index 00000000..013779aa --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/events/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/basic/countries.js b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.vue new file mode 100644 index 00000000..a6b0eedf --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/countries.js b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.vue new file mode 100644 index 00000000..f29a9200 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.vue new file mode 100644 index 00000000..dc1221c7 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.vue @@ -0,0 +1,143 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/countries.js b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.vue new file mode 100644 index 00000000..2a6ad2ac --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.vue new file mode 100644 index 00000000..d610f742 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/basic/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/basic/shop.js new file mode 100644 index 00000000..bc7a6c93 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/basic/shop.js @@ -0,0 +1,31 @@ +export const foods = [ + 'Garlic bread', + 'Chicken nuggets', + 'Potatoes', + 'Rice', + 'Tomato sauce', + 'Broccoli', + 'Cheddar', + 'Cereal', + 'Beef', + 'Lobster', + 'Salmon', + 'Mushrooms', + 'Onions', + 'Apples', + 'Oranges', + 'Burritos' +]; + +export const drinks = [ + 'Milk', + 'Water', + 'Apple juice', + 'Orange juice', + 'Beer', + 'Soda', + 'Champagne', + 'Red wine', + 'Rum', + 'Sake' +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.vue new file mode 100644 index 00000000..04843ced --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/shop.js new file mode 100644 index 00000000..bc7a6c93 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/shop.js @@ -0,0 +1,31 @@ +export const foods = [ + 'Garlic bread', + 'Chicken nuggets', + 'Potatoes', + 'Rice', + 'Tomato sauce', + 'Broccoli', + 'Cheddar', + 'Cereal', + 'Beef', + 'Lobster', + 'Salmon', + 'Mushrooms', + 'Onions', + 'Apples', + 'Oranges', + 'Burritos' +]; + +export const drinks = [ + 'Milk', + 'Water', + 'Apple juice', + 'Orange juice', + 'Beer', + 'Soda', + 'Champagne', + 'Red wine', + 'Rum', + 'Sake' +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.vue new file mode 100644 index 00000000..78691ade --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.vue @@ -0,0 +1,98 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/shop.js new file mode 100644 index 00000000..bc7a6c93 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/shop.js @@ -0,0 +1,31 @@ +export const foods = [ + 'Garlic bread', + 'Chicken nuggets', + 'Potatoes', + 'Rice', + 'Tomato sauce', + 'Broccoli', + 'Cheddar', + 'Cereal', + 'Beef', + 'Lobster', + 'Salmon', + 'Mushrooms', + 'Onions', + 'Apples', + 'Oranges', + 'Burritos' +]; + +export const drinks = [ + 'Milk', + 'Water', + 'Apple juice', + 'Orange juice', + 'Beer', + 'Soda', + 'Champagne', + 'Red wine', + 'Rum', + 'Sake' +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/override/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/override/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.vue new file mode 100644 index 00000000..a2a2eb0e --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.vue @@ -0,0 +1,93 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/override/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/override/shop.js new file mode 100644 index 00000000..bc7a6c93 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/forms/override/shop.js @@ -0,0 +1,31 @@ +export const foods = [ + 'Garlic bread', + 'Chicken nuggets', + 'Potatoes', + 'Rice', + 'Tomato sauce', + 'Broccoli', + 'Cheddar', + 'Cereal', + 'Beef', + 'Lobster', + 'Salmon', + 'Mushrooms', + 'Onions', + 'Apples', + 'Oranges', + 'Burritos' +]; + +export const drinks = [ + 'Milk', + 'Water', + 'Apple juice', + 'Orange juice', + 'Beer', + 'Soda', + 'Champagne', + 'Red wine', + 'Rum', + 'Sake' +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.vue new file mode 100644 index 00000000..99994ef6 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/GroupHeaderItemRender.vue new file mode 100644 index 00000000..d2c8a237 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/GroupHeaderItemRender.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/ItemRender.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/ItemRender.vue new file mode 100644 index 00000000..0967fc13 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/ItemRender.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/StickyHeaderRender.vue new file mode 100644 index 00000000..60e0a1aa --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/StickyHeaderRender.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/grouping-data.js new file mode 100644 index 00000000..9a2711db --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/grouping-data.js @@ -0,0 +1,181 @@ +export const employees = [ { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date("2014-02-03T20:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date("2014-03-10T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 +}, { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date("2015-04-25T00:00:00.000Z"), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 +}, { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date("2015-05-19T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 5 +}, { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date("2012-10-11T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 4 +}, { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date("2011-08-21T00:00:00.000Z"), + "fullTime": false, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date("2013-07-04T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 6 +}, { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date("2012-10-28T00:00:00.000Z"), + "fullTime": true, + "position": "Developer", + "timeInPosition": 3 +}, { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date("2010-03-02T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 5 +}, { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date("2011-09-18T00:00:00.000Z"), + "fullTime": true, + "position": "QA", + "timeInPosition": 4 +}, { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date("2014-07-31T00:00:00.000Z"), + "fullTime": false, + "position": "QA", + "timeInPosition": 1 +}, { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date("2015-06-04T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 1 +}, { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date("2013-02-21T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date("2010-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Support", + "timeInPosition": 0 +}, { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date("2015-06-15T00:00:00.000Z"), + "fullTime": false, + "position": "Support", + "timeInPosition": 2 +}, { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date("2014-08-30T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 +}, { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date("2011-09-08T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 3 +}, { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date("2013-05-06T00:00:00.000Z"), + "fullTime": true, + "position": "Designer", + "timeInPosition": 0 +} ]; diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.vue new file mode 100644 index 00000000..4c9231f4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/grouping-data.js new file mode 100644 index 00000000..94e1ef7b --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/grouping-data.js @@ -0,0 +1,200 @@ +export const employees = [ + { + id: 11, + name: "Hyacinth Hood", + reportsTo: 32, + phone: "(889) 345-2438", + extension: 8564, + hireDate: new Date("2014-02-03T20:00:00.000Z"), + fullTime: true, + role: "Team Lead", + timeInPosition: 1, + }, + { + id: 40, + name: "Karleigh Garza", + reportsTo: 52, + phone: "(370) 983-8796", + extension: 4044, + hireDate: new Date("2014-03-10T00:00:00.000Z"), + fullTime: true, + role: "Team Lead", + timeInPosition: 1, + }, + { + id: 46, + name: "Darrel Solis", + reportsTo: 43, + phone: "(327) 977-0216", + extension: 7779, + hireDate: new Date("2015-04-25T00:00:00.000Z"), + fullTime: true, + role: "Team Lead", + timeInPosition: 4, + }, + { + id: 76, + name: "Cheyenne Olson", + reportsTo: 63, + phone: "(241) 645-0257", + extension: 9181, + hireDate: new Date("2015-05-19T00:00:00.000Z"), + fullTime: true, + role: "Developer", + timeInPosition: 5, + }, + { + id: 78, + name: "Rinah Simon", + reportsTo: 11, + phone: "(285) 912-5271", + extension: 7795, + hireDate: new Date("2012-10-11T00:00:00.000Z"), + fullTime: true, + role: "Developer", + timeInPosition: 4, + }, + { + id: 79, + name: "Duncan Mathews", + reportsTo: 64, + phone: "(790) 971-9709", + extension: 4573, + hireDate: new Date("2011-08-21T00:00:00.000Z"), + fullTime: false, + role: "Developer", + timeInPosition: 3, + }, + { + id: 82, + name: "Yael Walters", + reportsTo: 69, + phone: "(311) 489-8191", + extension: 6520, + hireDate: new Date("2013-07-04T00:00:00.000Z"), + fullTime: true, + role: "Developer", + timeInPosition: 6, + }, + { + id: 75, + name: "Eric Russell", + reportsTo: 63, + phone: "(516) 575-8505", + extension: 2224, + hireDate: new Date("2012-10-28T00:00:00.000Z"), + fullTime: true, + role: "Developer", + timeInPosition: 3, + }, + { + id: 55, + name: "Summer Mosley", + reportsTo: 46, + phone: "(784) 962-2301", + extension: 5492, + hireDate: new Date("2010-03-02T00:00:00.000Z"), + fullTime: true, + role: "QA", + timeInPosition: 5, + }, + { + id: 59, + name: "Keiko Espinoza", + reportsTo: 46, + phone: "(226) 600-5305", + extension: 9363, + hireDate: new Date("2011-09-18T00:00:00.000Z"), + fullTime: true, + role: "QA", + timeInPosition: 4, + }, + { + id: 72, + name: "Stacey Lynn", + reportsTo: 40, + phone: "(140) 772-7509", + extension: 8396, + hireDate: new Date("2014-07-31T00:00:00.000Z"), + fullTime: false, + role: "QA", + timeInPosition: 1, + }, + { + id: 38, + name: "Elton Tucker", + reportsTo: 69, + phone: "(988) 930-9331", + extension: 9216, + hireDate: new Date("2015-06-04T00:00:00.000Z"), + fullTime: true, + role: "Support", + timeInPosition: 1, + }, + { + id: 71, + name: "Flavia Short", + reportsTo: 63, + phone: "(370) 133-9238", + extension: 6390, + hireDate: new Date("2013-02-21T00:00:00.000Z"), + fullTime: true, + role: "Support", + timeInPosition: 0, + }, + { + id: 61, + name: "Candace Pickett", + reportsTo: 46, + phone: "(120) 117-7475", + extension: 5178, + hireDate: new Date("2010-05-06T00:00:00.000Z"), + fullTime: true, + role: "Support", + timeInPosition: 0, + }, + { + id: 65, + name: "Thomas Terry", + reportsTo: 63, + phone: "(764) 831-4248", + extension: 3574, + hireDate: new Date("2015-06-15T00:00:00.000Z"), + fullTime: false, + role: "Support", + timeInPosition: 2, + }, + { + id: 62, + name: "Palmer Gregory", + reportsTo: 64, + phone: "(360) 430-2505", + extension: 4337, + hireDate: new Date("2014-08-30T00:00:00.000Z"), + fullTime: true, + role: "Designer", + timeInPosition: 4, + }, + { + id: 12, + name: "Jamalia Wallace", + reportsTo: 64, + phone: "(611) 391-8016", + extension: 1952, + hireDate: new Date("2011-09-08T00:00:00.000Z"), + fullTime: true, + role: "Designer", + timeInPosition: 3, + }, + { + id: 66, + name: "Gloria Freeman", + reportsTo: 53, + phone: "(344) 950-9168", + extension: 4738, + hireDate: new Date("2013-05-06T00:00:00.000Z"), + fullTime: true, + role: "Designer", + timeInPosition: 0, + }, +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.vue new file mode 100644 index 00000000..7163909f --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.vue new file mode 100644 index 00000000..483b654f --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.vue @@ -0,0 +1,107 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/multiselect/header-footer/FooterRender.vue new file mode 100644 index 00000000..328e96da --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/FooterRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/multiselect/header-footer/HeaderRender.vue new file mode 100644 index 00000000..dd7e5d25 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/HeaderRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/countries.js b/vue-options-api-demos/dropdowns/multiselect/header-footer/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/main.js b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/main.vue b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.vue new file mode 100644 index 00000000..e8444a2e --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/multiselect/item-render/ItemRender.vue new file mode 100644 index 00000000..b6f32ec7 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/item-render/ItemRender.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/countries.js b/vue-options-api-demos/dropdowns/multiselect/item-render/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/item-render/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/main.js b/vue-options-api-demos/dropdowns/multiselect/item-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/item-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/main.vue b/vue-options-api-demos/dropdowns/multiselect/item-render/main.vue new file mode 100644 index 00000000..17fbe982 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/item-render/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/multiselect/nodata-render/NoDataRender.vue new file mode 100644 index 00000000..9c42c161 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/nodata-render/NoDataRender.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.js b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.vue b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.vue new file mode 100644 index 00000000..c4dff0ab --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/summary-tag/countries.js b/vue-options-api-demos/dropdowns/multiselect/summary-tag/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/summary-tag/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.js b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.vue b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.vue new file mode 100644 index 00000000..d8005cb0 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.vue @@ -0,0 +1,45 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/tags/main.js b/vue-options-api-demos/dropdowns/multiselect/tags/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/tags/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/tags/main.vue b/vue-options-api-demos/dropdowns/multiselect/tags/main.vue new file mode 100644 index 00000000..43a58337 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/tags/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/tags/styles.css b/vue-options-api-demos/dropdowns/multiselect/tags/styles.css new file mode 100644 index 00000000..3d617b6c --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/tags/styles.css @@ -0,0 +1,10 @@ +.custom-tag { + display: inline-block; + background: #333; + color: #fff; + border-radius: 50%; + width: 18px; + height: 18px; + text-align: center; + margin-right: 3px; +} diff --git a/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.js b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.vue b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.vue new file mode 100644 index 00000000..b7cc7ec6 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.vue new file mode 100644 index 00000000..e52469ce --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.vue @@ -0,0 +1,60 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.js b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.vue b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.vue new file mode 100644 index 00000000..b120cb10 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.vue @@ -0,0 +1,76 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.vue new file mode 100644 index 00000000..b790104f --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.vue @@ -0,0 +1,88 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/DropDownStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/DropDownStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.vue new file mode 100644 index 00000000..d9251048 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.vue @@ -0,0 +1,112 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.vue new file mode 100644 index 00000000..549c0978 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.vue @@ -0,0 +1,162 @@ + + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.vue new file mode 100644 index 00000000..df77153f --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.vue @@ -0,0 +1,179 @@ + + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.vue new file mode 100644 index 00000000..3297046a --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.vue @@ -0,0 +1,140 @@ + + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/main.js b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.vue new file mode 100644 index 00000000..8b6de934 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/basic/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/basic/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/main.js b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.vue new file mode 100644 index 00000000..fa29c63d --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.vue @@ -0,0 +1,78 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/binding/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/binding/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.js b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.vue new file mode 100644 index 00000000..513fd636 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.vue @@ -0,0 +1,98 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/controlled/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/controlled/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.js b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.vue new file mode 100644 index 00000000..fd99cdcb --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.vue @@ -0,0 +1,107 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/tree-files-data.js b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/tree-files-data.js new file mode 100644 index 00000000..4fc5bfec --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/tree-files-data.js @@ -0,0 +1,28 @@ +export const data = [ { + text: 'My Documents', id: 1, + items: [ + { + text: 'Kendo UI for Vue Project', id: 2, + items: [ + { text: 'about.html', id: 3 }, + { text: 'index.html', id: 4 }, + { text: 'logo.png', id: 5 } + ] + }, + { + text: 'New Web Site', id: 6, + items: [ + { text: 'mockup.jpg', id: 7 }, + { text: 'Research.pdf', id: 8 } + ] + }, + { + text: 'Reports', id: 9, + items: [ + { text: 'February.pdf', id: 10 }, + { text: 'March.pdf', id: 11 }, + { text: 'April.pdf', id: 12 } + ] + } + ] +} ]; \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.vue new file mode 100644 index 00000000..7a99de47 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.vue @@ -0,0 +1,92 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.vue new file mode 100644 index 00000000..c86276c0 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.vue @@ -0,0 +1,86 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.vue new file mode 100644 index 00000000..fb923fc5 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.vue @@ -0,0 +1,152 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.vue new file mode 100644 index 00000000..6fb00d6c --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.vue @@ -0,0 +1,156 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.vue new file mode 100644 index 00000000..e21b92f9 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.vue @@ -0,0 +1,175 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.vue new file mode 100644 index 00000000..f97df3a4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.vue @@ -0,0 +1,174 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/override/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.js b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.vue new file mode 100644 index 00000000..45fbfd89 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.vue @@ -0,0 +1,105 @@ + + diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.js b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.vue new file mode 100644 index 00000000..2eed6b67 --- /dev/null +++ b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.vue @@ -0,0 +1,43 @@ + + diff --git a/vue-options-api-demos/dropdowns/overview/main.js b/vue-options-api-demos/dropdowns/overview/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/overview/main.vue b/vue-options-api-demos/dropdowns/overview/main.vue new file mode 100644 index 00000000..2fa432eb --- /dev/null +++ b/vue-options-api-demos/dropdowns/overview/main.vue @@ -0,0 +1,166 @@ + + diff --git a/vue-options-api-demos/dropdowns/overview/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/overview/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/overview/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/overview/tree-data-operations.js b/vue-options-api-demos/dropdowns/overview/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/overview/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/overview/tree-data.js b/vue-options-api-demos/dropdowns/overview/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/overview/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/rtl/main.js b/vue-options-api-demos/dropdowns/rtl/main.js new file mode 100644 index 00000000..0d438a73 --- /dev/null +++ b/vue-options-api-demos/dropdowns/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './main.vue'; + +createApp(App).mount('#app'); diff --git a/vue-options-api-demos/dropdowns/rtl/main.vue b/vue-options-api-demos/dropdowns/rtl/main.vue new file mode 100644 index 00000000..a26354ae --- /dev/null +++ b/vue-options-api-demos/dropdowns/rtl/main.vue @@ -0,0 +1,173 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/dropdowns/rtl/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/rtl/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/rtl/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/rtl/tree-data-operations.js b/vue-options-api-demos/dropdowns/rtl/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/rtl/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/rtl/tree-data.js b/vue-options-api-demos/dropdowns/rtl/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/rtl/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/shared/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/shared/DropDownStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/DropDownStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/dropdowns/shared/countries.js b/vue-options-api-demos/dropdowns/shared/countries.js new file mode 100644 index 00000000..45b6cb20 --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/countries.js @@ -0,0 +1,52 @@ +export default [ + "Albania", + "Andorra", + "Armenia", + "Austria", + "Azerbaijan", + "Belarus", + "Belgium", + "Bosnia & Herzegovina", + "Bulgaria", + "Croatia", + "Cyprus", + "Czech Republic", + "Denmark", + "Estonia", + "Finland", + "France", + "Georgia", + "Germany", + "Greece", + "Hungary", + "Iceland", + "Ireland", + "Italy", + "Kosovo", + "Latvia", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macedonia", + "Malta", + "Moldova", + "Monaco", + "Montenegro", + "Netherlands", + "Norway", + "Poland", + "Portugal", + "Romania", + "Russia", + "San Marino", + "Serbia", + "Slovakia", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "Turkey", + "Ukraine", + "United Kingdom", + "Vatican City" +]; diff --git a/vue-options-api-demos/dropdowns/shared/es.json b/vue-options-api-demos/dropdowns/shared/es.json new file mode 100644 index 00000000..dc3df71d --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/es.json @@ -0,0 +1,6 @@ +{ + "dropdowns": { + "nodata": "DATOS NO ENCONTRADOS.", + "clear": "claro" + } +} diff --git a/vue-options-api-demos/dropdowns/shared/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/shared/multiselecttree-data-operations.js new file mode 100644 index 00000000..50ff55a2 --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/multiselecttree-data-operations.js @@ -0,0 +1,107 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { getter, setter } from '@progress/kendo-vue-common'; + +export const getValueMap = (value, idGetter) => { + const map = {}; + + if (value && value.length) { + value.forEach((item) => { + map[idGetter(item)] = true; + }); + } + + return map; +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const keyGetter = getter(dataItemKey); + const itemKey = keyGetter(item); + const index = expanded.findIndex(currentKey => { + return currentKey === itemKey; + }); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; + +const mapMultiSelectTreeData = ( + data, + options +) => { + const { + keyGetter, + subItemGetter, + subItemSetter, + checkSetter, + expandedSetter, + checkIndeterminateSetter, + valueMap, + expandedMap + } = options; + + if (!data || !data.length) { return [data, false];} + + let hasChecked = false; + const newData = [...data].map(dataItem => { + const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options); + + const isChecked = valueMap[keyGetter(dataItem)]; + if (isChecked || hasCheckedChildren) { + hasChecked = true; + } + + const newItem = { ...dataItem }; + + expandedSetter(newItem, expandedMap[keyGetter(newItem)]) + subItemSetter(newItem, children); + checkSetter(newItem, isChecked); + checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren); + + return newItem; + }); + + return [newData, hasChecked]; +}; + +/** + * Creates a new array with the results of calling the provided callback function + * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set. + */ +export const processMultiSelectTreeData = ( + tree, + options +) => { + const { + subItemsField = 'items', + checkField = 'checkField', + checkIndeterminateField = 'checkIndeterminateField', + expandField = 'expanded', + dataItemKey, + value, + filter, + expanded + } = options; + + const keyGetter = getter(dataItemKey); + const filtering = Boolean(filter && filter.value); + const expandedMap = {}; + + expanded.forEach((id) => expandedMap[id] = true); + + const [result] = mapMultiSelectTreeData( + tree, + { + valueMap: getValueMap(value, keyGetter), + expandedMap: expandedMap, + keyGetter, + expandedSetter: setter(expandField), + subItemGetter: getter(subItemsField), + subItemSetter: setter(subItemsField), + checkSetter: setter(checkField), + checkIndeterminateSetter: setter(checkIndeterminateField) + } + ); + + return filtering ? filterBy(result, [ filter ], subItemsField) : result; +}; diff --git a/vue-options-api-demos/dropdowns/shared/shop.js b/vue-options-api-demos/dropdowns/shared/shop.js new file mode 100644 index 00000000..bc7a6c93 --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/shop.js @@ -0,0 +1,31 @@ +export const foods = [ + 'Garlic bread', + 'Chicken nuggets', + 'Potatoes', + 'Rice', + 'Tomato sauce', + 'Broccoli', + 'Cheddar', + 'Cereal', + 'Beef', + 'Lobster', + 'Salmon', + 'Mushrooms', + 'Onions', + 'Apples', + 'Oranges', + 'Burritos' +]; + +export const drinks = [ + 'Milk', + 'Water', + 'Apple juice', + 'Orange juice', + 'Beer', + 'Soda', + 'Champagne', + 'Red wine', + 'Rum', + 'Sake' +]; diff --git a/vue-options-api-demos/dropdowns/shared/tree-data-operations.js b/vue-options-api-demos/dropdowns/shared/tree-data-operations.js new file mode 100644 index 00000000..c32766b4 --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from '@progress/kendo-vue-data-tools'; +import { mapTree, extendDataItem } from '@progress/kendo-vue-common'; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [ filter ], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering ? + extendDataItem(item, subItemsField, props) : + { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/dropdowns/shared/tree-data.js b/vue-options-api-demos/dropdowns/shared/tree-data.js new file mode 100644 index 00000000..5b749471 --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/tree-data.js @@ -0,0 +1,15 @@ +export const data = [ + { + text: 'Furniture', id: 1, items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, { + text: 'Decor', id: 5, items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; diff --git a/vue-options-api-demos/dropdowns/shared/tree-files-data.js b/vue-options-api-demos/dropdowns/shared/tree-files-data.js new file mode 100644 index 00000000..4fc5bfec --- /dev/null +++ b/vue-options-api-demos/dropdowns/shared/tree-files-data.js @@ -0,0 +1,28 @@ +export const data = [ { + text: 'My Documents', id: 1, + items: [ + { + text: 'Kendo UI for Vue Project', id: 2, + items: [ + { text: 'about.html', id: 3 }, + { text: 'index.html', id: 4 }, + { text: 'logo.png', id: 5 } + ] + }, + { + text: 'New Web Site', id: 6, + items: [ + { text: 'mockup.jpg', id: 7 }, + { text: 'Research.pdf', id: 8 } + ] + }, + { + text: 'Reports', id: 9, + items: [ + { text: 'February.pdf', id: 10 }, + { text: 'March.pdf', id: 11 }, + { text: 'April.pdf', id: 12 } + ] + } + ] +} ]; \ No newline at end of file diff --git a/vue-options-api-demos/editor/all-tools/content.js b/vue-options-api-demos/editor/all-tools/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/all-tools/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/all-tools/main.js b/vue-options-api-demos/editor/all-tools/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/all-tools/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/all-tools/main.vue b/vue-options-api-demos/editor/all-tools/main.vue new file mode 100644 index 00000000..ff0b027f --- /dev/null +++ b/vue-options-api-demos/editor/all-tools/main.vue @@ -0,0 +1,47 @@ + + + + diff --git a/vue-options-api-demos/editor/controlled-value-doc/main.js b/vue-options-api-demos/editor/controlled-value-doc/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/controlled-value-doc/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/controlled-value-doc/main.vue b/vue-options-api-demos/editor/controlled-value-doc/main.vue new file mode 100644 index 00000000..249a4968 --- /dev/null +++ b/vue-options-api-demos/editor/controlled-value-doc/main.vue @@ -0,0 +1,39 @@ + + + diff --git a/vue-options-api-demos/editor/controlled-value-string/main.js b/vue-options-api-demos/editor/controlled-value-string/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/controlled-value-string/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/controlled-value-string/main.vue b/vue-options-api-demos/editor/controlled-value-string/main.vue new file mode 100644 index 00000000..00a5dd8b --- /dev/null +++ b/vue-options-api-demos/editor/controlled-value-string/main.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-options-api-demos/editor/edit-built-in-tools/content-basic.js b/vue-options-api-demos/editor/edit-built-in-tools/content-basic.js new file mode 100644 index 00000000..e02950c2 --- /dev/null +++ b/vue-options-api-demos/editor/edit-built-in-tools/content-basic.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

`; + +export default content; diff --git a/vue-options-api-demos/editor/edit-built-in-tools/main.js b/vue-options-api-demos/editor/edit-built-in-tools/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/edit-built-in-tools/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/edit-built-in-tools/main.vue b/vue-options-api-demos/editor/edit-built-in-tools/main.vue new file mode 100644 index 00000000..a4eda7df --- /dev/null +++ b/vue-options-api-demos/editor/edit-built-in-tools/main.vue @@ -0,0 +1,152 @@ + + + diff --git a/vue-options-api-demos/editor/events/Logger.vue b/vue-options-api-demos/editor/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/editor/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/editor/events/content.js b/vue-options-api-demos/editor/events/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/events/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/events/main.js b/vue-options-api-demos/editor/events/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/events/main.vue b/vue-options-api-demos/editor/events/main.vue new file mode 100644 index 00000000..9aebf7b8 --- /dev/null +++ b/vue-options-api-demos/editor/events/main.vue @@ -0,0 +1,70 @@ + + diff --git a/vue-options-api-demos/editor/find-replace/content-overview.js b/vue-options-api-demos/editor/find-replace/content-overview.js new file mode 100644 index 00000000..136cfe6c --- /dev/null +++ b/vue-options-api-demos/editor/find-replace/content-overview.js @@ -0,0 +1,3 @@ +const content = `

Kendo UI for Vue logo

Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.

Features include:

  • Text formatting & alignment

  • Bulleted and numbered lists

  • Hyperlink and image dialogs

  • Identical HTML output across modern browsers

  • Highly customizable tools

The Editor has a table option as well, allowing to add and edit tabular data.

Product Id

Product Name

Price

1

Chai

18

2

Chang

19

3

Aniseed Syrup

10

`; + +export default content; diff --git a/vue-options-api-demos/editor/find-replace/main.js b/vue-options-api-demos/editor/find-replace/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/find-replace/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/find-replace/main.vue b/vue-options-api-demos/editor/find-replace/main.vue new file mode 100644 index 00000000..0f976f2a --- /dev/null +++ b/vue-options-api-demos/editor/find-replace/main.vue @@ -0,0 +1,27 @@ + + + + diff --git a/vue-options-api-demos/editor/get-started/content.js b/vue-options-api-demos/editor/get-started/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/get-started/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/get-started/main.js b/vue-options-api-demos/editor/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/get-started/main.vue b/vue-options-api-demos/editor/get-started/main.vue new file mode 100644 index 00000000..5b2f6deb --- /dev/null +++ b/vue-options-api-demos/editor/get-started/main.vue @@ -0,0 +1,33 @@ + + + + diff --git a/vue-options-api-demos/editor/gets-and-sets-html/content.js b/vue-options-api-demos/editor/gets-and-sets-html/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/gets-and-sets-html/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/gets-and-sets-html/main.js b/vue-options-api-demos/editor/gets-and-sets-html/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/gets-and-sets-html/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/gets-and-sets-html/main.vue b/vue-options-api-demos/editor/gets-and-sets-html/main.vue new file mode 100644 index 00000000..635b52be --- /dev/null +++ b/vue-options-api-demos/editor/gets-and-sets-html/main.vue @@ -0,0 +1,75 @@ + + + + diff --git a/vue-options-api-demos/editor/globalization/content.js b/vue-options-api-demos/editor/globalization/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/globalization/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/globalization/deMessages.js b/vue-options-api-demos/editor/globalization/deMessages.js new file mode 100644 index 00000000..c596a7fb --- /dev/null +++ b/vue-options-api-demos/editor/globalization/deMessages.js @@ -0,0 +1,43 @@ +export const deMessages = { + 'editor': { + 'bold': 'Fett', + 'italic': 'Kursiv', + 'underline': 'Unterstrichen', + 'strikethrough': 'Durchgestrichen', + 'subscript': 'Tiefgestellt', + 'superscript': 'Hochgestellt', + 'hyperlink': 'Hyperlink einfügen', + 'hyperlink-dialog-title': 'Hyperlink einfügen', + 'hyperlink-dialog-content-address': 'Web-Adresse', + 'hyperlink-dialog-content-title': 'Titel', + 'hyperlink-dialog-content-newwindow': 'Link in einem neuen Fenster öffnen', + 'hyperlink-dialog-cancel': 'Abbrechen', + 'hyperlink-dialog-insert': 'Einfügen', + 'image': 'Bild einfügen', + 'image-dialog-title': 'Bild einfügen', + 'image-address': 'Web-Adresse', + 'image-title': 'Titel', + 'image-altText': 'Abwechselnder Text', + 'image-width': 'Breite (px)', + 'image-height': 'Höhe (px)', + 'image-cancel': 'Abbrechen', + 'image-insert': 'Einfügen', + 'viewHtml': 'HTML anzeigen', + 'viewHtml-dialog-title': 'HTML anzeigen', + 'viewHtml-cancel': 'Abbrechen', + 'viewHtml-update': 'Aktualisieren', + 'unlink': 'Hyperlink entfernen', + 'undo': 'Rückgängig machen', + 'redo': 'Wiederholen', + 'fontSize': 'Größe', + 'fontName': 'Schrift', + 'format': 'Absatzstil', + 'alignLeft': 'Linksbündig', + 'alignRight': 'Rechtsbündig', + 'alignCenter': 'Zentriert', + 'indent': 'Einzug vergrößern', + 'outdent': 'Einzug verkleinern', + 'orderedList': 'Numerierte Liste', + 'bulletList': 'Aufzählliste' + } +}; diff --git a/vue-options-api-demos/editor/globalization/main.js b/vue-options-api-demos/editor/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/globalization/main.vue b/vue-options-api-demos/editor/globalization/main.vue new file mode 100644 index 00000000..44fb93e5 --- /dev/null +++ b/vue-options-api-demos/editor/globalization/main.vue @@ -0,0 +1,44 @@ + + + diff --git a/vue-options-api-demos/editor/markdown/main.js b/vue-options-api-demos/editor/markdown/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/markdown/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/markdown/main.vue b/vue-options-api-demos/editor/markdown/main.vue new file mode 100644 index 00000000..21b73853 --- /dev/null +++ b/vue-options-api-demos/editor/markdown/main.vue @@ -0,0 +1,70 @@ + + + diff --git a/vue-options-api-demos/editor/markdown/markdown.js b/vue-options-api-demos/editor/markdown/markdown.js new file mode 100644 index 00000000..068638a8 --- /dev/null +++ b/vue-options-api-demos/editor/markdown/markdown.js @@ -0,0 +1,16 @@ +export const markdown = `The Kendo UI for Vue Editor allows your users to edit markdown in a familiar, user-friendly way. +The Editor provides core editing engine, which includes text formatting, hyperlinks, lists and more. The component **outputs identical Markdown** across all major browsers, follows accessibility standards, and provides API for content manipulation. + +Features include: + +* Text formatting + +* Bulleted and numbered lists + +* Hyperlinks + +* Images ![Smile image](https://prosemirror.net/img/smiley.png "Smile") + +* Cross-browser support + +* Identical output across browsers`; diff --git a/vue-options-api-demos/editor/overview/content-overview.js b/vue-options-api-demos/editor/overview/content-overview.js new file mode 100644 index 00000000..136cfe6c --- /dev/null +++ b/vue-options-api-demos/editor/overview/content-overview.js @@ -0,0 +1,3 @@ +const content = `

Kendo UI for Vue logo

Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.

Features include:

  • Text formatting & alignment

  • Bulleted and numbered lists

  • Hyperlink and image dialogs

  • Identical HTML output across modern browsers

  • Highly customizable tools

The Editor has a table option as well, allowing to add and edit tabular data.

Product Id

Product Name

Price

1

Chai

18

2

Chang

19

3

Aniseed Syrup

10

`; + +export default content; diff --git a/vue-options-api-demos/editor/overview/main.js b/vue-options-api-demos/editor/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/overview/main.vue b/vue-options-api-demos/editor/overview/main.vue new file mode 100644 index 00000000..8a976165 --- /dev/null +++ b/vue-options-api-demos/editor/overview/main.vue @@ -0,0 +1,44 @@ + + + + diff --git a/vue-options-api-demos/editor/paste/main.js b/vue-options-api-demos/editor/paste/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/paste/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/paste/main.vue b/vue-options-api-demos/editor/paste/main.vue new file mode 100644 index 00000000..fc714945 --- /dev/null +++ b/vue-options-api-demos/editor/paste/main.vue @@ -0,0 +1,64 @@ + + + + diff --git a/vue-options-api-demos/editor/plugins/placeholder/main.js b/vue-options-api-demos/editor/plugins/placeholder/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/plugins/placeholder/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/plugins/placeholder/main.vue b/vue-options-api-demos/editor/plugins/placeholder/main.vue new file mode 100644 index 00000000..d4910ff9 --- /dev/null +++ b/vue-options-api-demos/editor/plugins/placeholder/main.vue @@ -0,0 +1,51 @@ + + + diff --git a/vue-options-api-demos/editor/plugins/placeholder/placeholder.js b/vue-options-api-demos/editor/plugins/placeholder/placeholder.js new file mode 100644 index 00000000..e36b6bd6 --- /dev/null +++ b/vue-options-api-demos/editor/plugins/placeholder/placeholder.js @@ -0,0 +1,38 @@ +import { ProseMirror } from '@progress/kendo-vue-editor'; +const { Plugin, PluginKey, Decoration, DecorationSet } = ProseMirror; +export function placeholder(emptyMessage) { + return new Plugin({ + key: new PluginKey('placeholder'), + props: { + decorations: (state) => { + const { doc } = state; + const empty = + doc.textContent === '' && + doc.childCount <= 1 && + doc.content.size <= 2; + + if (!empty) { + return DecorationSet.empty; + } + + const decorations = []; + const decAttrs = { + class: 'placeholder', + 'data-placeholder': emptyMessage, + }; + doc.descendants((node, pos) => { + decorations.push(Decoration.node(pos, pos + node.nodeSize, decAttrs)); + }); + return DecorationSet.create(doc, decorations); + }, + }, + }); +} +export const styles = `p.placeholder:first-child:before { + content: attr(data-placeholder); + float: left; + color: rgb(0, 0, 0, 0.5); + cursor: text; + height: 0; + font-style: italic; + }`; diff --git a/vue-options-api-demos/editor/plugins/readonly/content-basic.js b/vue-options-api-demos/editor/plugins/readonly/content-basic.js new file mode 100644 index 00000000..e02950c2 --- /dev/null +++ b/vue-options-api-demos/editor/plugins/readonly/content-basic.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

`; + +export default content; diff --git a/vue-options-api-demos/editor/plugins/readonly/main.js b/vue-options-api-demos/editor/plugins/readonly/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/plugins/readonly/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/plugins/readonly/main.vue b/vue-options-api-demos/editor/plugins/readonly/main.vue new file mode 100644 index 00000000..327109d9 --- /dev/null +++ b/vue-options-api-demos/editor/plugins/readonly/main.vue @@ -0,0 +1,70 @@ + + + diff --git a/vue-options-api-demos/editor/rendering-mode/main.js b/vue-options-api-demos/editor/rendering-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/rendering-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/rendering-mode/main.vue b/vue-options-api-demos/editor/rendering-mode/main.vue new file mode 100644 index 00000000..b9657f74 --- /dev/null +++ b/vue-options-api-demos/editor/rendering-mode/main.vue @@ -0,0 +1,35 @@ + + + diff --git a/vue-options-api-demos/editor/rendering-mode/styles.css b/vue-options-api-demos/editor/rendering-mode/styles.css new file mode 100644 index 00000000..3406202a --- /dev/null +++ b/vue-options-api-demos/editor/rendering-mode/styles.css @@ -0,0 +1,44 @@ +.k-editor-content p { + margin: 0.6em 0 0.6em 0; +} +.k-editor-content td p, +.k-editor-content th p, +.k-editor-content li p { + margin: 0; +} + +.k-editor-content table { + margin: 0; + border-collapse: collapse; + table-layout: fixed; + width: 100%; + overflow: hidden; +} + +.k-editor-content td, +.k-editor-content th { + min-width: 1em; + border: 1px solid #ddd; + padding: 3px 5px; + vertical-align: top; + box-sizing: border-box; + position: relative; +} + +.k-editor-content th { + font-weight: bold; + text-align: left; +} + +/* Give selected cells a blue overlay */ +.k-editor-content .selectedCell:after { + z-index: 2; + position: absolute; + content: ""; + left: 0; + right: 0; + top: 0; + bottom: 0; + background: rgba(200, 200, 255, 0.4); + pointer-events: none; +} \ No newline at end of file diff --git a/vue-options-api-demos/editor/resizing/editor/content.js b/vue-options-api-demos/editor/resizing/editor/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/resizing/editor/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/resizing/editor/main.js b/vue-options-api-demos/editor/resizing/editor/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/resizing/editor/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/resizing/editor/main.vue b/vue-options-api-demos/editor/resizing/editor/main.vue new file mode 100644 index 00000000..332d798d --- /dev/null +++ b/vue-options-api-demos/editor/resizing/editor/main.vue @@ -0,0 +1,42 @@ + + + diff --git a/vue-options-api-demos/editor/resizing/images/content-overview.js b/vue-options-api-demos/editor/resizing/images/content-overview.js new file mode 100644 index 00000000..136cfe6c --- /dev/null +++ b/vue-options-api-demos/editor/resizing/images/content-overview.js @@ -0,0 +1,3 @@ +const content = `

Kendo UI for Vue logo

Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.

Features include:

  • Text formatting & alignment

  • Bulleted and numbered lists

  • Hyperlink and image dialogs

  • Identical HTML output across modern browsers

  • Highly customizable tools

The Editor has a table option as well, allowing to add and edit tabular data.

Product Id

Product Name

Price

1

Chai

18

2

Chang

19

3

Aniseed Syrup

10

`; + +export default content; diff --git a/vue-options-api-demos/editor/resizing/images/main.js b/vue-options-api-demos/editor/resizing/images/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/resizing/images/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/resizing/images/main.vue b/vue-options-api-demos/editor/resizing/images/main.vue new file mode 100644 index 00000000..82d9d0e0 --- /dev/null +++ b/vue-options-api-demos/editor/resizing/images/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/editor/rtl/content.js b/vue-options-api-demos/editor/rtl/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/rtl/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/rtl/main.js b/vue-options-api-demos/editor/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/rtl/main.vue b/vue-options-api-demos/editor/rtl/main.vue new file mode 100644 index 00000000..c8d8edc5 --- /dev/null +++ b/vue-options-api-demos/editor/rtl/main.vue @@ -0,0 +1,38 @@ + + + diff --git a/vue-options-api-demos/editor/schema-custom/content.js b/vue-options-api-demos/editor/schema-custom/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/schema-custom/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/schema-custom/main.js b/vue-options-api-demos/editor/schema-custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/schema-custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/schema-custom/main.vue b/vue-options-api-demos/editor/schema-custom/main.vue new file mode 100644 index 00000000..ad6315a0 --- /dev/null +++ b/vue-options-api-demos/editor/schema-custom/main.vue @@ -0,0 +1,58 @@ + + + diff --git a/vue-options-api-demos/editor/schema-custom/schema-utils.js b/vue-options-api-demos/editor/schema-custom/schema-utils.js new file mode 100644 index 00000000..230cb59c --- /dev/null +++ b/vue-options-api-demos/editor/schema-custom/schema-utils.js @@ -0,0 +1,67 @@ +const getAttributes = (dom) => { + const result = {}; + let attributes = dom.attributes, + attr; + + for (let i = 0; i < attributes.length; i++) { + attr = attributes[i]; + result[attr.name] = attr.value; + } + + return result; +}; + +const commonAttributes = () => { + return { + style: { + default: null, + }, + class: { + default: null, + }, + id: { + default: null, + }, + }; +}; + +const hasAttrs = (attrs, exclude) => { + for (let attr in attrs) { + if (attr && attrs[attr] !== null && attr !== exclude) { + return true; + } + } + + return false; +}; + +const getAttrs = (attrs, exclude) => { + const result = {}; + + for (let attr in attrs) { + if (attr && attrs[attr] !== null && attr !== exclude) { + result[attr] = attrs[attr]; + } + } + + return result; +}; + +const tagMark = (tag) => { + // https://prosemirror.net/docs/ref/#model.MarkSpec + return { + [tag]: { + name: tag, + inclusive: true, + parseDOM: [ + { + tag: tag, + }, + ], + toDOM: () => [tag, hole], + }, + }; +}; + +const hole = 0; +export { getAttributes, commonAttributes, hasAttrs, getAttrs, tagMark, hole }; diff --git a/vue-options-api-demos/editor/schema-custom/schema.js b/vue-options-api-demos/editor/schema-custom/schema.js new file mode 100644 index 00000000..aec23c1d --- /dev/null +++ b/vue-options-api-demos/editor/schema-custom/schema.js @@ -0,0 +1,311 @@ +import { ProseMirror } from '@progress/kendo-vue-editor'; +const { Schema, tableNodes } = ProseMirror; +import { + getAttributes, + commonAttributes, + hasAttrs, + getAttrs, + tagMark, + hole, +} from './schema-utils'; // The MarkSpec interface - https://prosemirror.net/docs/ref/#model.MarkSpec + +const marks = { + link: { + attrs: { + ...commonAttributes(), + href: { + default: null, + }, + target: { + default: null, + }, + title: { + default: null, + }, + }, + inclusive: false, + parseDOM: [ + { + tag: 'a', + getAttrs: getAttributes, + }, + ], + + toDOM(node) { + return ['a', getAttrs(node.attrs, false), hole]; + }, + }, + ...tagMark('strong'), + ...tagMark('b'), + ...tagMark('em'), + ...tagMark('i'), + ...tagMark('u'), + ...tagMark('del'), + ...tagMark('sub'), + ...tagMark('sup'), + ...tagMark('code'), + style: { + attrs: { ...commonAttributes() }, + parseDOM: [ + { + tag: 'span', + getAttrs: getAttributes, + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, false) + ? ['span', getAttrs(node.attrs, false), hole] + : ['span', hole], + }, +}; // The NodeSpec interface - http://prosemirror.net/docs/ref/#model.NodeSpec + +const nodes = { + // The top level document node. + doc: { + content: 'block+', + }, + paragraph: { + content: 'inline*', + group: 'block', + attrs: { ...commonAttributes() }, + parseDOM: [ + { + tag: 'p', + getAttrs: getAttributes, + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, false) + ? ['p', getAttrs(node.attrs, false), hole] + : ['p', hole], + }, + div: { + content: 'block*', + group: 'block', + attrs: { ...commonAttributes() }, + parseDOM: [ + { + tag: 'div', + getAttrs: getAttributes, + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, false) + ? ['div', getAttrs(node.attrs, false), hole] + : ['div', hole], + }, + blockquote: { + content: 'block+', + group: 'block', + defining: true, + parseDOM: [ + { + tag: 'blockquote', + }, + ], + toDOM: () => ['blockquote', hole], + }, + horizontal_rule: { + group: 'block', + parseDOM: [ + { + tag: 'hr', + }, + ], + + toDOM() { + return ['hr']; + }, + }, + heading: { + attrs: { + ...commonAttributes(), + level: { + default: 1, + }, + }, + content: 'inline*', + group: 'block', + defining: true, + parseDOM: [ + { + tag: 'h1', + getAttrs: (node) => ({ ...getAttributes(node), level: 1 }), + }, + { + tag: 'h2', + getAttrs: (node) => ({ ...getAttributes(node), level: 2 }), + }, + { + tag: 'h3', + getAttrs: (node) => ({ ...getAttributes(node), level: 3 }), + }, + { + tag: 'h4', + getAttrs: (node) => ({ ...getAttributes(node), level: 4 }), + }, + { + tag: 'h5', + getAttrs: (node) => ({ ...getAttributes(node), level: 5 }), + }, + { + tag: 'h6', + getAttrs: (node) => ({ ...getAttributes(node), level: 6 }), + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, 'level') + ? ['h' + node.attrs.level, getAttrs(node.attrs, 'level'), hole] + : ['h' + node.attrs.level, hole], + }, + code_block: { + content: 'text*', + marks: '', + group: 'block', + code: true, + defining: true, + parseDOM: [ + { + tag: 'pre', + preserveWhitespace: 'full', + }, + ], + + toDOM() { + return ['pre', ['code', hole]]; + }, + }, + // The text node. + text: { + inline: true, + group: 'inline', + }, + image: { + inline: true, + attrs: { + src: { + default: null, + }, + alt: { + default: null, + }, + title: { + default: null, + }, + width: { + default: null, + }, + height: { + default: null, + }, + ...commonAttributes(), + }, + group: 'inline', + draggable: true, + parseDOM: [ + { + tag: 'img', + getAttrs: getAttributes, + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, false) + ? ['img', getAttrs(node.attrs, false)] + : ['img'], + }, + hard_break: { + inline: true, + attrs: { ...commonAttributes() }, + group: 'inline', + selectable: false, + parseDOM: [ + { + tag: 'br', + getAttrs: getAttributes, + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, false) + ? ['br', getAttrs(node.attrs, false)] + : ['br'], + }, + ordered_list: { + content: 'list_item+', + group: 'block', + attrs: { + ...commonAttributes(), + type: { + default: null, + }, + order: { + default: 1, + }, + }, + parseDOM: [ + { + tag: 'ol', + getAttrs: (dom) => { + return { + ...getAttributes(dom), + order: dom.hasAttribute('start') + ? parseInt(dom.getAttribute('start') || '1', 10) + : 1, + }; + }, + }, + ], + toDOM: (node) => { + return node.attrs.order === 1 + ? hasAttrs(node.attrs, 'order') + ? ['ol', getAttrs(node.attrs, 'order'), hole] + : ['ol', 0] + : [ + 'ol', + { ...getAttrs(node.attrs, 'order'), start: node.attrs.order }, + hole, + ]; + }, + }, + bullet_list: { + content: 'list_item+', + group: 'block', + attrs: { ...commonAttributes() }, + parseDOM: [ + { + tag: 'ul', + getAttrs: getAttributes, + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, false) + ? ['ul', getAttrs(node.attrs, false), hole] + : ['ul', 0], + }, + list_item: { + content: 'block*', + attrs: { ...commonAttributes() }, + parseDOM: [ + { + tag: 'li', + getAttrs: getAttributes, + }, + ], + toDOM: (node) => + hasAttrs(node.attrs, false) + ? ['li', getAttrs(node.attrs, false), hole] + : ['li', 0], + defining: true, + }, + // Imported from the `prosemirror-tables` package + // https://github.com/ProseMirror/prosemirror-tables/ + ...tableNodes({ + tableGroup: 'block', + cellContent: 'block+', + cellAttributes: {}, + }), +}; +const mySchema = new Schema({ + nodes, + marks, +}); +export default mySchema; diff --git a/vue-options-api-demos/editor/schema-edit/main.js b/vue-options-api-demos/editor/schema-edit/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/schema-edit/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/schema-edit/main.vue b/vue-options-api-demos/editor/schema-edit/main.vue new file mode 100644 index 00000000..2ffd1318 --- /dev/null +++ b/vue-options-api-demos/editor/schema-edit/main.vue @@ -0,0 +1,70 @@ + + + diff --git a/vue-options-api-demos/editor/schema-edit/new-mark.js b/vue-options-api-demos/editor/schema-edit/new-mark.js new file mode 100644 index 00000000..1d3a98aa --- /dev/null +++ b/vue-options-api-demos/editor/schema-edit/new-mark.js @@ -0,0 +1,16 @@ +const tagMark = (tag) => ({ + // MarkSpec interface + // https://prosemirror.net/docs/ref/#model.MarkSpec + [tag]: { + name: tag, + inclusive: true, + parseDOM: [ + { + tag + } + ], + toDOM: () => [tag, 0], + } +}); + +export { tagMark }; diff --git a/vue-options-api-demos/editor/schema-edit/new-node.js b/vue-options-api-demos/editor/schema-edit/new-node.js new file mode 100644 index 00000000..1cb9c221 --- /dev/null +++ b/vue-options-api-demos/editor/schema-edit/new-node.js @@ -0,0 +1,33 @@ +const iframe = { + // NodeSpec interface + // http://prosemirror.net/docs/ref/#model.NodeSpec + attrs: { + src: { + default: null, + }, + style: { + default: null, + }, + }, + group: 'block', + selectable: false, + parseDOM: [ + { + tag: 'iframe', + getAttrs: (dom) => ({ + src: dom.getAttribute('src'), + style: dom.getAttribute('style'), + }), + }, + ], + toDOM: (node) => { + const attrs = { + src: node.attrs.src, + style: node.attrs.style, + frameborder: '0', + allowfullscreen: 'true', + }; + return ['iframe', attrs]; + }, +}; +export { iframe }; diff --git a/vue-options-api-demos/editor/selection/cell/content.js b/vue-options-api-demos/editor/selection/cell/content.js new file mode 100644 index 00000000..e5cfac57 --- /dev/null +++ b/vue-options-api-demos/editor/selection/cell/content.js @@ -0,0 +1,48 @@ +export const content = ` + + + + + + + + + + + + + + + + + + + + + + +
+

Product Id

+
+

Product Name

+
+

Price

+
+

1

+
+

Chai

+
+

18

+
+

2

+
+

Chang

+
+

19

+
+

3

+
+

Aniseed Syrup

+
+

10

+
`; \ No newline at end of file diff --git a/vue-options-api-demos/editor/selection/cell/main.js b/vue-options-api-demos/editor/selection/cell/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/selection/cell/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/selection/cell/main.vue b/vue-options-api-demos/editor/selection/cell/main.vue new file mode 100644 index 00000000..e982e458 --- /dev/null +++ b/vue-options-api-demos/editor/selection/cell/main.vue @@ -0,0 +1,28 @@ + + + diff --git a/vue-options-api-demos/editor/selection/get-html/content.js b/vue-options-api-demos/editor/selection/get-html/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/selection/get-html/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/selection/get-html/main.js b/vue-options-api-demos/editor/selection/get-html/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/selection/get-html/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/selection/get-html/main.vue b/vue-options-api-demos/editor/selection/get-html/main.vue new file mode 100644 index 00000000..34923731 --- /dev/null +++ b/vue-options-api-demos/editor/selection/get-html/main.vue @@ -0,0 +1,75 @@ + + + diff --git a/vue-options-api-demos/editor/selection/node/content.js b/vue-options-api-demos/editor/selection/node/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/selection/node/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/selection/node/main.js b/vue-options-api-demos/editor/selection/node/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/selection/node/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/selection/node/main.vue b/vue-options-api-demos/editor/selection/node/main.vue new file mode 100644 index 00000000..008518ca --- /dev/null +++ b/vue-options-api-demos/editor/selection/node/main.vue @@ -0,0 +1,63 @@ + + + diff --git a/vue-options-api-demos/editor/selection/select-all/content.js b/vue-options-api-demos/editor/selection/select-all/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/selection/select-all/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/selection/select-all/main.js b/vue-options-api-demos/editor/selection/select-all/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/selection/select-all/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/selection/select-all/main.vue b/vue-options-api-demos/editor/selection/select-all/main.vue new file mode 100644 index 00000000..0cbfa5a0 --- /dev/null +++ b/vue-options-api-demos/editor/selection/select-all/main.vue @@ -0,0 +1,47 @@ + + + diff --git a/vue-options-api-demos/editor/selection/text/content.js b/vue-options-api-demos/editor/selection/text/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/selection/text/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/selection/text/main.js b/vue-options-api-demos/editor/selection/text/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/selection/text/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/selection/text/main.vue b/vue-options-api-demos/editor/selection/text/main.vue new file mode 100644 index 00000000..92e72410 --- /dev/null +++ b/vue-options-api-demos/editor/selection/text/main.vue @@ -0,0 +1,123 @@ + + + diff --git a/vue-options-api-demos/editor/shared/content-basic.js b/vue-options-api-demos/editor/shared/content-basic.js new file mode 100644 index 00000000..e02950c2 --- /dev/null +++ b/vue-options-api-demos/editor/shared/content-basic.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

`; + +export default content; diff --git a/vue-options-api-demos/editor/shared/content-overview.js b/vue-options-api-demos/editor/shared/content-overview.js new file mode 100644 index 00000000..136cfe6c --- /dev/null +++ b/vue-options-api-demos/editor/shared/content-overview.js @@ -0,0 +1,3 @@ +const content = `

Kendo UI for Vue logo

Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.

Features include:

  • Text formatting & alignment

  • Bulleted and numbered lists

  • Hyperlink and image dialogs

  • Identical HTML output across modern browsers

  • Highly customizable tools

The Editor has a table option as well, allowing to add and edit tabular data.

Product Id

Product Name

Price

1

Chai

18

2

Chang

19

3

Aniseed Syrup

10

`; + +export default content; diff --git a/vue-options-api-demos/editor/shared/content.js b/vue-options-api-demos/editor/shared/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/shared/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/styling-iframe/content.js b/vue-options-api-demos/editor/styling-iframe/content.js new file mode 100644 index 00000000..009c377b --- /dev/null +++ b/vue-options-api-demos/editor/styling-iframe/content.js @@ -0,0 +1,3 @@ +const content = `

The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way.
The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.

Features include:

  • Text formatting

  • Bulleted and numbered lists

  • Hyperlinks

  • Cross-browser support

  • Identical HTML output across browsers

`; + +export default content; diff --git a/vue-options-api-demos/editor/styling-iframe/main.js b/vue-options-api-demos/editor/styling-iframe/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/editor/styling-iframe/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/editor/styling-iframe/main.vue b/vue-options-api-demos/editor/styling-iframe/main.vue new file mode 100644 index 00000000..e65f0136 --- /dev/null +++ b/vue-options-api-demos/editor/styling-iframe/main.vue @@ -0,0 +1,40 @@ + + + + diff --git a/vue-options-api-demos/editor/tsconfig.json b/vue-options-api-demos/editor/tsconfig.json new file mode 100644 index 00000000..da823a2d --- /dev/null +++ b/vue-options-api-demos/editor/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "types": [], + "baseUrl": ".", + "sourceMap": false, + "noImplicitAny": false, + "module": "commonjs", + "target": "ES5", + "jsx": "react", + "lib": [ + "es2015", + "es2017", + "dom" + ], + "declaration": true, + "moduleResolution": "node", + "noUnusedLocals": true, + "noUnusedParameters": true, + "strictNullChecks": true, + "paths": { + "@progress/kendo-vue-editor": [ + "../../src/main.ts", + ] + } + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ] +} diff --git a/vue-options-api-demos/excel/basic/main.js b/vue-options-api-demos/excel/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/basic/main.vue b/vue-options-api-demos/excel/basic/main.vue new file mode 100644 index 00000000..7fba7622 --- /dev/null +++ b/vue-options-api-demos/excel/basic/main.vue @@ -0,0 +1,74 @@ + + diff --git a/vue-options-api-demos/excel/basic/products.json b/vue-options-api-demos/excel/basic/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/basic/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/cells/data/main.js b/vue-options-api-demos/excel/cells/data/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/cells/data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/cells/data/main.vue b/vue-options-api-demos/excel/cells/data/main.vue new file mode 100644 index 00000000..16957c1a --- /dev/null +++ b/vue-options-api-demos/excel/cells/data/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/excel/cells/data/products.json b/vue-options-api-demos/excel/cells/data/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/cells/data/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/cells/footer/main.js b/vue-options-api-demos/excel/cells/footer/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/cells/footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/cells/footer/main.vue b/vue-options-api-demos/excel/cells/footer/main.vue new file mode 100644 index 00000000..2875cd39 --- /dev/null +++ b/vue-options-api-demos/excel/cells/footer/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/excel/cells/footer/products.json b/vue-options-api-demos/excel/cells/footer/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/cells/footer/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/cells/group-footer/main.js b/vue-options-api-demos/excel/cells/group-footer/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/cells/group-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/cells/group-footer/main.vue b/vue-options-api-demos/excel/cells/group-footer/main.vue new file mode 100644 index 00000000..14016ccf --- /dev/null +++ b/vue-options-api-demos/excel/cells/group-footer/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/excel/cells/group-footer/products.json b/vue-options-api-demos/excel/cells/group-footer/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/cells/group-footer/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/cells/group-header/main.js b/vue-options-api-demos/excel/cells/group-header/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/cells/group-header/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/cells/group-header/main.vue b/vue-options-api-demos/excel/cells/group-header/main.vue new file mode 100644 index 00000000..ccef896a --- /dev/null +++ b/vue-options-api-demos/excel/cells/group-header/main.vue @@ -0,0 +1,48 @@ + + + diff --git a/vue-options-api-demos/excel/cells/group-header/products.json b/vue-options-api-demos/excel/cells/group-header/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/cells/group-header/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/cells/header-padding/main.js b/vue-options-api-demos/excel/cells/header-padding/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/cells/header-padding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/cells/header-padding/main.vue b/vue-options-api-demos/excel/cells/header-padding/main.vue new file mode 100644 index 00000000..62588021 --- /dev/null +++ b/vue-options-api-demos/excel/cells/header-padding/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/excel/cells/header-padding/products.json b/vue-options-api-demos/excel/cells/header-padding/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/cells/header-padding/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/cells/header/main.js b/vue-options-api-demos/excel/cells/header/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/cells/header/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/cells/header/main.vue b/vue-options-api-demos/excel/cells/header/main.vue new file mode 100644 index 00000000..e73da04f --- /dev/null +++ b/vue-options-api-demos/excel/cells/header/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/excel/cells/header/products.json b/vue-options-api-demos/excel/cells/header/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/cells/header/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/cells/padding/main.js b/vue-options-api-demos/excel/cells/padding/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/cells/padding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/cells/padding/main.vue b/vue-options-api-demos/excel/cells/padding/main.vue new file mode 100644 index 00000000..385e89c6 --- /dev/null +++ b/vue-options-api-demos/excel/cells/padding/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/excel/cells/padding/products.json b/vue-options-api-demos/excel/cells/padding/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/cells/padding/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/columns/footer/main.js b/vue-options-api-demos/excel/columns/footer/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/columns/footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/columns/footer/main.vue b/vue-options-api-demos/excel/columns/footer/main.vue new file mode 100644 index 00000000..b949c268 --- /dev/null +++ b/vue-options-api-demos/excel/columns/footer/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/excel/columns/footer/products.json b/vue-options-api-demos/excel/columns/footer/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/columns/footer/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/columns/group-footer/main.js b/vue-options-api-demos/excel/columns/group-footer/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/columns/group-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/columns/group-footer/main.vue b/vue-options-api-demos/excel/columns/group-footer/main.vue new file mode 100644 index 00000000..2aa3b1f4 --- /dev/null +++ b/vue-options-api-demos/excel/columns/group-footer/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/excel/columns/group-footer/products.json b/vue-options-api-demos/excel/columns/group-footer/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/columns/group-footer/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/columns/group-header/main.js b/vue-options-api-demos/excel/columns/group-header/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/columns/group-header/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/columns/group-header/main.vue b/vue-options-api-demos/excel/columns/group-header/main.vue new file mode 100644 index 00000000..b4b6041e --- /dev/null +++ b/vue-options-api-demos/excel/columns/group-header/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/excel/columns/group-header/products.json b/vue-options-api-demos/excel/columns/group-header/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/columns/group-header/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/columns/hidden/main.js b/vue-options-api-demos/excel/columns/hidden/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/columns/hidden/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/columns/hidden/main.vue b/vue-options-api-demos/excel/columns/hidden/main.vue new file mode 100644 index 00000000..a85b71f7 --- /dev/null +++ b/vue-options-api-demos/excel/columns/hidden/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/excel/columns/hidden/products.json b/vue-options-api-demos/excel/columns/hidden/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/columns/hidden/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/columns/locked/main.js b/vue-options-api-demos/excel/columns/locked/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/columns/locked/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/columns/locked/main.vue b/vue-options-api-demos/excel/columns/locked/main.vue new file mode 100644 index 00000000..b5858a9b --- /dev/null +++ b/vue-options-api-demos/excel/columns/locked/main.vue @@ -0,0 +1,43 @@ + + diff --git a/vue-options-api-demos/excel/columns/locked/products.json b/vue-options-api-demos/excel/columns/locked/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/columns/locked/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/columns/multi/main.js b/vue-options-api-demos/excel/columns/multi/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/columns/multi/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/columns/multi/main.vue b/vue-options-api-demos/excel/columns/multi/main.vue new file mode 100644 index 00000000..fd04dd16 --- /dev/null +++ b/vue-options-api-demos/excel/columns/multi/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/excel/columns/multi/products.json b/vue-options-api-demos/excel/columns/multi/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/columns/multi/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/filtering/main.js b/vue-options-api-demos/excel/filtering/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/filtering/main.vue b/vue-options-api-demos/excel/filtering/main.vue new file mode 100644 index 00000000..a2d592d5 --- /dev/null +++ b/vue-options-api-demos/excel/filtering/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/excel/filtering/products.json b/vue-options-api-demos/excel/filtering/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/filtering/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/rtl/main.js b/vue-options-api-demos/excel/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/rtl/main.vue b/vue-options-api-demos/excel/rtl/main.vue new file mode 100644 index 00000000..571585e3 --- /dev/null +++ b/vue-options-api-demos/excel/rtl/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/excel/rtl/products.json b/vue-options-api-demos/excel/rtl/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/rtl/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/shared/products.json b/vue-options-api-demos/excel/shared/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/shared/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/excel/workbook/main.js b/vue-options-api-demos/excel/workbook/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/excel/workbook/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/excel/workbook/main.vue b/vue-options-api-demos/excel/workbook/main.vue new file mode 100644 index 00000000..c78a48b3 --- /dev/null +++ b/vue-options-api-demos/excel/workbook/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/excel/workbook/products.json b/vue-options-api-demos/excel/workbook/products.json new file mode 100644 index 00000000..ecf3ff9e --- /dev/null +++ b/vue-options-api-demos/excel/workbook/products.json @@ -0,0 +1,1311 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +] diff --git a/vue-options-api-demos/form/advanced/changing/FormContent.vue b/vue-options-api-demos/form/advanced/changing/FormContent.vue new file mode 100644 index 00000000..e7fd7cac --- /dev/null +++ b/vue-options-api-demos/form/advanced/changing/FormContent.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/form/advanced/changing/FormNumericTextBox.vue b/vue-options-api-demos/form/advanced/changing/FormNumericTextBox.vue new file mode 100644 index 00000000..fda4a4ec --- /dev/null +++ b/vue-options-api-demos/form/advanced/changing/FormNumericTextBox.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/advanced/changing/main.js b/vue-options-api-demos/form/advanced/changing/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/advanced/changing/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/advanced/changing/main.vue b/vue-options-api-demos/form/advanced/changing/main.vue new file mode 100644 index 00000000..77145f7c --- /dev/null +++ b/vue-options-api-demos/form/advanced/changing/main.vue @@ -0,0 +1,27 @@ + + + diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/FormContent.vue b/vue-options-api-demos/form/advanced/dynamic-reset/FormContent.vue new file mode 100644 index 00000000..5731f2b9 --- /dev/null +++ b/vue-options-api-demos/form/advanced/dynamic-reset/FormContent.vue @@ -0,0 +1,81 @@ + + diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/FormInput.vue b/vue-options-api-demos/form/advanced/dynamic-reset/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/advanced/dynamic-reset/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/main.js b/vue-options-api-demos/form/advanced/dynamic-reset/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/advanced/dynamic-reset/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/main.vue b/vue-options-api-demos/form/advanced/dynamic-reset/main.vue new file mode 100644 index 00000000..abd15d0e --- /dev/null +++ b/vue-options-api-demos/form/advanced/dynamic-reset/main.vue @@ -0,0 +1,50 @@ + + + diff --git a/vue-options-api-demos/form/advanced/reading/FormContent.vue b/vue-options-api-demos/form/advanced/reading/FormContent.vue new file mode 100644 index 00000000..0d2802e8 --- /dev/null +++ b/vue-options-api-demos/form/advanced/reading/FormContent.vue @@ -0,0 +1,74 @@ + + diff --git a/vue-options-api-demos/form/advanced/reading/FormNumericTextBox.vue b/vue-options-api-demos/form/advanced/reading/FormNumericTextBox.vue new file mode 100644 index 00000000..fda4a4ec --- /dev/null +++ b/vue-options-api-demos/form/advanced/reading/FormNumericTextBox.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/advanced/reading/main.js b/vue-options-api-demos/form/advanced/reading/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/advanced/reading/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/advanced/reading/main.vue b/vue-options-api-demos/form/advanced/reading/main.vue new file mode 100644 index 00000000..1e094fe2 --- /dev/null +++ b/vue-options-api-demos/form/advanced/reading/main.vue @@ -0,0 +1,28 @@ + + + diff --git a/vue-options-api-demos/form/basic/FormContent.vue b/vue-options-api-demos/form/basic/FormContent.vue new file mode 100644 index 00000000..b97a7dc5 --- /dev/null +++ b/vue-options-api-demos/form/basic/FormContent.vue @@ -0,0 +1,97 @@ + + diff --git a/vue-options-api-demos/form/basic/FormInput.vue b/vue-options-api-demos/form/basic/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/basic/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/basic/main.js b/vue-options-api-demos/form/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/basic/main.vue b/vue-options-api-demos/form/basic/main.vue new file mode 100644 index 00000000..cb5e3869 --- /dev/null +++ b/vue-options-api-demos/form/basic/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/custom-components/advanced/FormContent.vue b/vue-options-api-demos/form/custom-components/advanced/FormContent.vue new file mode 100644 index 00000000..dbd8d833 --- /dev/null +++ b/vue-options-api-demos/form/custom-components/advanced/FormContent.vue @@ -0,0 +1,65 @@ + + diff --git a/vue-options-api-demos/form/custom-components/advanced/FormInput.vue b/vue-options-api-demos/form/custom-components/advanced/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/custom-components/advanced/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/custom-components/advanced/main.js b/vue-options-api-demos/form/custom-components/advanced/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/custom-components/advanced/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/custom-components/advanced/main.vue b/vue-options-api-demos/form/custom-components/advanced/main.vue new file mode 100644 index 00000000..ee5d7f4f --- /dev/null +++ b/vue-options-api-demos/form/custom-components/advanced/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/custom-components/advanced/validators.js b/vue-options-api-demos/form/custom-components/advanced/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/custom-components/advanced/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/custom-components/basic/FormContent.vue b/vue-options-api-demos/form/custom-components/basic/FormContent.vue new file mode 100644 index 00000000..fca87e69 --- /dev/null +++ b/vue-options-api-demos/form/custom-components/basic/FormContent.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/form/custom-components/basic/FormInput.vue b/vue-options-api-demos/form/custom-components/basic/FormInput.vue new file mode 100644 index 00000000..76733af2 --- /dev/null +++ b/vue-options-api-demos/form/custom-components/basic/FormInput.vue @@ -0,0 +1,37 @@ + + + diff --git a/vue-options-api-demos/form/custom-components/basic/main.js b/vue-options-api-demos/form/custom-components/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/custom-components/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/custom-components/basic/main.vue b/vue-options-api-demos/form/custom-components/basic/main.vue new file mode 100644 index 00000000..ee5d7f4f --- /dev/null +++ b/vue-options-api-demos/form/custom-components/basic/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/fieldarrayvalidation/CommandCell.vue b/vue-options-api-demos/form/fieldarrayvalidation/CommandCell.vue new file mode 100644 index 00000000..1154fc04 --- /dev/null +++ b/vue-options-api-demos/form/fieldarrayvalidation/CommandCell.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/form/fieldarrayvalidation/FormContent.vue b/vue-options-api-demos/form/fieldarrayvalidation/FormContent.vue new file mode 100644 index 00000000..c124329c --- /dev/null +++ b/vue-options-api-demos/form/fieldarrayvalidation/FormContent.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/form/fieldarrayvalidation/FormGrid.vue b/vue-options-api-demos/form/fieldarrayvalidation/FormGrid.vue new file mode 100644 index 00000000..64a0588b --- /dev/null +++ b/vue-options-api-demos/form/fieldarrayvalidation/FormGrid.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/form/fieldarrayvalidation/main.js b/vue-options-api-demos/form/fieldarrayvalidation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/fieldarrayvalidation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/fieldarrayvalidation/main.vue b/vue-options-api-demos/form/fieldarrayvalidation/main.vue new file mode 100644 index 00000000..cb5e3869 --- /dev/null +++ b/vue-options-api-demos/form/fieldarrayvalidation/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/fieldvalidation/FormContent.vue b/vue-options-api-demos/form/fieldvalidation/FormContent.vue new file mode 100644 index 00000000..f0eb0151 --- /dev/null +++ b/vue-options-api-demos/form/fieldvalidation/FormContent.vue @@ -0,0 +1,73 @@ + + diff --git a/vue-options-api-demos/form/fieldvalidation/FormInput.vue b/vue-options-api-demos/form/fieldvalidation/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/fieldvalidation/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/fieldvalidation/main.js b/vue-options-api-demos/form/fieldvalidation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/fieldvalidation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/fieldvalidation/main.vue b/vue-options-api-demos/form/fieldvalidation/main.vue new file mode 100644 index 00000000..cb5e3869 --- /dev/null +++ b/vue-options-api-demos/form/fieldvalidation/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/formvalidation/FormContent.vue b/vue-options-api-demos/form/formvalidation/FormContent.vue new file mode 100644 index 00000000..cc606c71 --- /dev/null +++ b/vue-options-api-demos/form/formvalidation/FormContent.vue @@ -0,0 +1,94 @@ + + diff --git a/vue-options-api-demos/form/formvalidation/FormInput.vue b/vue-options-api-demos/form/formvalidation/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/formvalidation/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/formvalidation/main.js b/vue-options-api-demos/form/formvalidation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/formvalidation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/formvalidation/main.vue b/vue-options-api-demos/form/formvalidation/main.vue new file mode 100644 index 00000000..1535ff29 --- /dev/null +++ b/vue-options-api-demos/form/formvalidation/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/form/guideline/checkboxes/FormCheckbox.vue b/vue-options-api-demos/form/guideline/checkboxes/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/form/guideline/checkboxes/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/checkboxes/FormContent.vue b/vue-options-api-demos/form/guideline/checkboxes/FormContent.vue new file mode 100644 index 00000000..34a2ba85 --- /dev/null +++ b/vue-options-api-demos/form/guideline/checkboxes/FormContent.vue @@ -0,0 +1,111 @@ + + diff --git a/vue-options-api-demos/form/guideline/checkboxes/FormRadioGroup.vue b/vue-options-api-demos/form/guideline/checkboxes/FormRadioGroup.vue new file mode 100644 index 00000000..0dc1d7ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/checkboxes/FormRadioGroup.vue @@ -0,0 +1,107 @@ + + + diff --git a/vue-options-api-demos/form/guideline/checkboxes/data.js b/vue-options-api-demos/form/guideline/checkboxes/data.js new file mode 100644 index 00000000..1b3905df --- /dev/null +++ b/vue-options-api-demos/form/guideline/checkboxes/data.js @@ -0,0 +1,212 @@ +export const genders = [ + { label: 'Male', value: 'male' }, + { label: 'Female', value: 'female' }, + { label: 'Other', value: 'other' } +]; + +export const countries = [ + 'Albania', + 'Andorra', + 'Armenia', + 'Austria', + 'Azerbaijan', + 'Belarus', + 'Belgium', + 'Bosnia & Herzegovina', + 'Bulgaria', + 'Croatia', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Estonia', + 'Finland', + 'France', + 'Georgia', + 'Germany', + 'Greece', + 'Hungary', + 'Iceland', + 'Ireland', + 'Italy', + 'Kosovo', + 'Latvia', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Malta', + 'Moldova', + 'Monaco', + 'Montenegro', + 'Netherlands', + 'Norway', + 'Poland', + 'Portugal', + 'Romania', + 'Russia', + 'San Marino', + 'Serbia', + 'Slovakia', + 'Slovenia', + 'Spain', + 'Sweden', + 'Switzerland', + 'Turkey', + 'Ukraine', + 'United Kingdom', + 'Vatican City' +]; + +export const sizes = [ + 'X-Small', + 'Small', + 'Medium', + 'Large', + 'X-Large', + '2X-Large' +]; + +export const sports = [ + 'Baseball', + 'Basketball', + 'Cricket', + 'Field Hockey', + 'Football', + 'Table Tennis', + 'Tennis', + 'Volleyball' +]; + +export const equipment = [ + { + text: 'Furniture', + id: 1, + items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, + { + text: 'Decor', + id: 5, + items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; + +export const employees = [ + { + id: 1, + name: 'Daryl Sweeney', + reportsTo: null, + phone: '(555) 924-9726', + extension: 8253, + hireDate: new Date('2012-02-07T20:00:00.000Z'), + fullTime: true, + position: 'CEO', + timeInPosition: 2 + }, + { + id: 2, + name: 'Guy Wooten', + reportsTo: 1, + phone: '(438) 738-4935', + extension: 1155, + hireDate: new Date('2010-03-03T20:00:00.000Z'), + fullTime: true, + position: 'Chief Technical Officer', + timeInPosition: 1 + }, + { + id: 3, + name: 'Priscilla Frank', + reportsTo: 1, + phone: '(278) 927-2684', + extension: 4183, + hireDate: new Date('2014-11-30T00:00:00.000Z'), + fullTime: true, + position: 'Chief Product Officer', + timeInPosition: 2 + }, + { + id: 4, + name: 'Ursula Holmes', + reportsTo: 3, + phone: '(302) 760-2034', + extension: 2226, + hireDate: new Date('2011-06-06T00:00:00.000Z'), + fullTime: true, + position: 'EVP, Product Strategy', + timeInPosition: 4 + }, + { + id: 5, + name: 'Anika Vega', + reportsTo: 1, + phone: '(910) 714-1802', + extension: 6353, + hireDate: new Date('2010-02-25T00:00:00.000Z'), + fullTime: true, + position: 'Chief Process Officer', + timeInPosition: 5 + }, + { + id: 6, + name: 'Moses Duncan', + reportsTo: 64, + phone: '(421) 611-4814', + extension: 669, + hireDate: new Date('2010-05-24T00:00:00.000Z'), + fullTime: true, + position: 'Software Developer', + timeInPosition: 6 + }, + { + id: 7, + name: 'Nevada Hart', + reportsTo: 1, + phone: '(254) 220-1576', + extension: 6649, + hireDate: new Date('2015-08-17T00:00:00.000Z'), + fullTime: true, + position: 'Chief Financial Officer', + timeInPosition: 6 + }, + { + id: 8, + name: 'Hunter Fry', + reportsTo: 1, + phone: '(766) 358-9858', + extension: 3741, + hireDate: new Date('2011-02-12T00:00:00.000Z'), + fullTime: false, + position: 'General Counsel', + timeInPosition: 3 + }, + { + id: 9, + name: 'Kuame Carrillo', + reportsTo: 8, + phone: '(192) 383-1305', + extension: 9228, + hireDate: new Date('2011-02-22T00:00:00.000Z'), + fullTime: true, + position: 'Associate General Councel', + timeInPosition: 0 + }, + { + id: 10, + name: 'Vernon Ballard', + reportsTo: 5, + phone: '(702) 185-8890', + extension: 9242, + hireDate: new Date('2015-06-26T00:00:00.000Z'), + fullTime: true, + position: 'Director Facilities', + timeInPosition: 2 + } +]; diff --git a/vue-options-api-demos/form/guideline/checkboxes/main.js b/vue-options-api-demos/form/guideline/checkboxes/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/checkboxes/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/checkboxes/main.vue b/vue-options-api-demos/form/guideline/checkboxes/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/checkboxes/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/checkboxes/validators.js b/vue-options-api-demos/form/guideline/checkboxes/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/checkboxes/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/datepickers/FormContent.vue b/vue-options-api-demos/form/guideline/datepickers/FormContent.vue new file mode 100644 index 00000000..e120ee1b --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/FormContent.vue @@ -0,0 +1,127 @@ + + diff --git a/vue-options-api-demos/form/guideline/datepickers/FormDateInput.vue b/vue-options-api-demos/form/guideline/datepickers/FormDateInput.vue new file mode 100644 index 00000000..29cf0d01 --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/FormDateInput.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/form/guideline/datepickers/FormDatePicker.vue b/vue-options-api-demos/form/guideline/datepickers/FormDatePicker.vue new file mode 100644 index 00000000..af21ec48 --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/FormDatePicker.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/guideline/datepickers/FormDateTimePicker.vue b/vue-options-api-demos/form/guideline/datepickers/FormDateTimePicker.vue new file mode 100644 index 00000000..03e66bc8 --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/FormDateTimePicker.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/form/guideline/datepickers/FormTimePicker.vue b/vue-options-api-demos/form/guideline/datepickers/FormTimePicker.vue new file mode 100644 index 00000000..b76cc70c --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/FormTimePicker.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/form/guideline/datepickers/main.js b/vue-options-api-demos/form/guideline/datepickers/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/datepickers/main.vue b/vue-options-api-demos/form/guideline/datepickers/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/datepickers/validators.js b/vue-options-api-demos/form/guideline/datepickers/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/datepickers/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/disabled/FormContent.vue b/vue-options-api-demos/form/guideline/disabled/FormContent.vue new file mode 100644 index 00000000..b8a61db6 --- /dev/null +++ b/vue-options-api-demos/form/guideline/disabled/FormContent.vue @@ -0,0 +1,82 @@ + + diff --git a/vue-options-api-demos/form/guideline/disabled/FormInput.vue b/vue-options-api-demos/form/guideline/disabled/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/disabled/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/disabled/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/disabled/FormMaskedTextBox.vue new file mode 100644 index 00000000..395d904f --- /dev/null +++ b/vue-options-api-demos/form/guideline/disabled/FormMaskedTextBox.vue @@ -0,0 +1,88 @@ + + + diff --git a/vue-options-api-demos/form/guideline/disabled/main.js b/vue-options-api-demos/form/guideline/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/disabled/main.vue b/vue-options-api-demos/form/guideline/disabled/main.vue new file mode 100644 index 00000000..6ac6d672 --- /dev/null +++ b/vue-options-api-demos/form/guideline/disabled/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormAutoComplete.vue b/vue-options-api-demos/form/guideline/dropdowns/FormAutoComplete.vue new file mode 100644 index 00000000..9a1344e8 --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/FormAutoComplete.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormComboBox.vue b/vue-options-api-demos/form/guideline/dropdowns/FormComboBox.vue new file mode 100644 index 00000000..748a36ba --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/FormComboBox.vue @@ -0,0 +1,87 @@ + + + diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormContent.vue b/vue-options-api-demos/form/guideline/dropdowns/FormContent.vue new file mode 100644 index 00000000..51c3a2d4 --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/FormContent.vue @@ -0,0 +1,130 @@ + + diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormDropDownList.vue b/vue-options-api-demos/form/guideline/dropdowns/FormDropDownList.vue new file mode 100644 index 00000000..ad567de3 --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/FormDropDownList.vue @@ -0,0 +1,82 @@ + + + diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormMultiSelect.vue b/vue-options-api-demos/form/guideline/dropdowns/FormMultiSelect.vue new file mode 100644 index 00000000..800a724b --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/FormMultiSelect.vue @@ -0,0 +1,82 @@ + + diff --git a/vue-options-api-demos/form/guideline/dropdowns/data.js b/vue-options-api-demos/form/guideline/dropdowns/data.js new file mode 100644 index 00000000..1b3905df --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/data.js @@ -0,0 +1,212 @@ +export const genders = [ + { label: 'Male', value: 'male' }, + { label: 'Female', value: 'female' }, + { label: 'Other', value: 'other' } +]; + +export const countries = [ + 'Albania', + 'Andorra', + 'Armenia', + 'Austria', + 'Azerbaijan', + 'Belarus', + 'Belgium', + 'Bosnia & Herzegovina', + 'Bulgaria', + 'Croatia', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Estonia', + 'Finland', + 'France', + 'Georgia', + 'Germany', + 'Greece', + 'Hungary', + 'Iceland', + 'Ireland', + 'Italy', + 'Kosovo', + 'Latvia', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Malta', + 'Moldova', + 'Monaco', + 'Montenegro', + 'Netherlands', + 'Norway', + 'Poland', + 'Portugal', + 'Romania', + 'Russia', + 'San Marino', + 'Serbia', + 'Slovakia', + 'Slovenia', + 'Spain', + 'Sweden', + 'Switzerland', + 'Turkey', + 'Ukraine', + 'United Kingdom', + 'Vatican City' +]; + +export const sizes = [ + 'X-Small', + 'Small', + 'Medium', + 'Large', + 'X-Large', + '2X-Large' +]; + +export const sports = [ + 'Baseball', + 'Basketball', + 'Cricket', + 'Field Hockey', + 'Football', + 'Table Tennis', + 'Tennis', + 'Volleyball' +]; + +export const equipment = [ + { + text: 'Furniture', + id: 1, + items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, + { + text: 'Decor', + id: 5, + items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; + +export const employees = [ + { + id: 1, + name: 'Daryl Sweeney', + reportsTo: null, + phone: '(555) 924-9726', + extension: 8253, + hireDate: new Date('2012-02-07T20:00:00.000Z'), + fullTime: true, + position: 'CEO', + timeInPosition: 2 + }, + { + id: 2, + name: 'Guy Wooten', + reportsTo: 1, + phone: '(438) 738-4935', + extension: 1155, + hireDate: new Date('2010-03-03T20:00:00.000Z'), + fullTime: true, + position: 'Chief Technical Officer', + timeInPosition: 1 + }, + { + id: 3, + name: 'Priscilla Frank', + reportsTo: 1, + phone: '(278) 927-2684', + extension: 4183, + hireDate: new Date('2014-11-30T00:00:00.000Z'), + fullTime: true, + position: 'Chief Product Officer', + timeInPosition: 2 + }, + { + id: 4, + name: 'Ursula Holmes', + reportsTo: 3, + phone: '(302) 760-2034', + extension: 2226, + hireDate: new Date('2011-06-06T00:00:00.000Z'), + fullTime: true, + position: 'EVP, Product Strategy', + timeInPosition: 4 + }, + { + id: 5, + name: 'Anika Vega', + reportsTo: 1, + phone: '(910) 714-1802', + extension: 6353, + hireDate: new Date('2010-02-25T00:00:00.000Z'), + fullTime: true, + position: 'Chief Process Officer', + timeInPosition: 5 + }, + { + id: 6, + name: 'Moses Duncan', + reportsTo: 64, + phone: '(421) 611-4814', + extension: 669, + hireDate: new Date('2010-05-24T00:00:00.000Z'), + fullTime: true, + position: 'Software Developer', + timeInPosition: 6 + }, + { + id: 7, + name: 'Nevada Hart', + reportsTo: 1, + phone: '(254) 220-1576', + extension: 6649, + hireDate: new Date('2015-08-17T00:00:00.000Z'), + fullTime: true, + position: 'Chief Financial Officer', + timeInPosition: 6 + }, + { + id: 8, + name: 'Hunter Fry', + reportsTo: 1, + phone: '(766) 358-9858', + extension: 3741, + hireDate: new Date('2011-02-12T00:00:00.000Z'), + fullTime: false, + position: 'General Counsel', + timeInPosition: 3 + }, + { + id: 9, + name: 'Kuame Carrillo', + reportsTo: 8, + phone: '(192) 383-1305', + extension: 9228, + hireDate: new Date('2011-02-22T00:00:00.000Z'), + fullTime: true, + position: 'Associate General Councel', + timeInPosition: 0 + }, + { + id: 10, + name: 'Vernon Ballard', + reportsTo: 5, + phone: '(702) 185-8890', + extension: 9242, + hireDate: new Date('2015-06-26T00:00:00.000Z'), + fullTime: true, + position: 'Director Facilities', + timeInPosition: 2 + } +]; diff --git a/vue-options-api-demos/form/guideline/dropdowns/main.js b/vue-options-api-demos/form/guideline/dropdowns/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/dropdowns/main.vue b/vue-options-api-demos/form/guideline/dropdowns/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/dropdowns/validators.js b/vue-options-api-demos/form/guideline/dropdowns/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/dropdowns/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/errormessages/FormContent.vue b/vue-options-api-demos/form/guideline/errormessages/FormContent.vue new file mode 100644 index 00000000..79a5abb0 --- /dev/null +++ b/vue-options-api-demos/form/guideline/errormessages/FormContent.vue @@ -0,0 +1,87 @@ + + diff --git a/vue-options-api-demos/form/guideline/errormessages/FormInput.vue b/vue-options-api-demos/form/guideline/errormessages/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/errormessages/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/errormessages/main.js b/vue-options-api-demos/form/guideline/errormessages/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/errormessages/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/errormessages/main.vue b/vue-options-api-demos/form/guideline/errormessages/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/errormessages/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/errormessages/validators.js b/vue-options-api-demos/form/guideline/errormessages/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/errormessages/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/floating/FormContent.vue b/vue-options-api-demos/form/guideline/floating/FormContent.vue new file mode 100644 index 00000000..f3f30445 --- /dev/null +++ b/vue-options-api-demos/form/guideline/floating/FormContent.vue @@ -0,0 +1,91 @@ + + diff --git a/vue-options-api-demos/form/guideline/floating/FormFloatingNumericTextBox.vue b/vue-options-api-demos/form/guideline/floating/FormFloatingNumericTextBox.vue new file mode 100644 index 00000000..5df99979 --- /dev/null +++ b/vue-options-api-demos/form/guideline/floating/FormFloatingNumericTextBox.vue @@ -0,0 +1,86 @@ + + + diff --git a/vue-options-api-demos/form/guideline/floating/main.js b/vue-options-api-demos/form/guideline/floating/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/floating/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/floating/main.vue b/vue-options-api-demos/form/guideline/floating/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/floating/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/floating/validators.js b/vue-options-api-demos/form/guideline/floating/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/floating/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/formbuttons/FormCheckbox.vue b/vue-options-api-demos/form/guideline/formbuttons/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formbuttons/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formbuttons/FormContent.vue b/vue-options-api-demos/form/guideline/formbuttons/FormContent.vue new file mode 100644 index 00000000..93a36281 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formbuttons/FormContent.vue @@ -0,0 +1,112 @@ + + diff --git a/vue-options-api-demos/form/guideline/formbuttons/FormInput.vue b/vue-options-api-demos/form/guideline/formbuttons/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formbuttons/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formbuttons/main.js b/vue-options-api-demos/form/guideline/formbuttons/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/formbuttons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/formbuttons/main.vue b/vue-options-api-demos/form/guideline/formbuttons/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/formbuttons/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/formbuttons/validators.js b/vue-options-api-demos/form/guideline/formbuttons/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/formbuttons/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormCheckbox.vue b/vue-options-api-demos/form/guideline/formcomponents/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormContent.vue b/vue-options-api-demos/form/guideline/formcomponents/FormContent.vue new file mode 100644 index 00000000..47215fa1 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/FormContent.vue @@ -0,0 +1,211 @@ + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormDatePicker.vue b/vue-options-api-demos/form/guideline/formcomponents/FormDatePicker.vue new file mode 100644 index 00000000..af21ec48 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/FormDatePicker.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormInput.vue b/vue-options-api-demos/form/guideline/formcomponents/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/formcomponents/FormMaskedTextBox.vue new file mode 100644 index 00000000..395d904f --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/FormMaskedTextBox.vue @@ -0,0 +1,88 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormNumericTextBox.vue b/vue-options-api-demos/form/guideline/formcomponents/FormNumericTextBox.vue new file mode 100644 index 00000000..fda4a4ec --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/FormNumericTextBox.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormTextArea.vue b/vue-options-api-demos/form/guideline/formcomponents/FormTextArea.vue new file mode 100644 index 00000000..3c308b6d --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/FormTextArea.vue @@ -0,0 +1,81 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/main.js b/vue-options-api-demos/form/guideline/formcomponents/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/formcomponents/main.vue b/vue-options-api-demos/form/guideline/formcomponents/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/formcomponents/validators.js b/vue-options-api-demos/form/guideline/formcomponents/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/formcomponents/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/formvalidation/FormCheckbox.vue b/vue-options-api-demos/form/guideline/formvalidation/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formvalidation/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formvalidation/FormContent.vue b/vue-options-api-demos/form/guideline/formvalidation/FormContent.vue new file mode 100644 index 00000000..48034735 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formvalidation/FormContent.vue @@ -0,0 +1,127 @@ + + diff --git a/vue-options-api-demos/form/guideline/formvalidation/FormInput.vue b/vue-options-api-demos/form/guideline/formvalidation/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/formvalidation/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/formvalidation/main.js b/vue-options-api-demos/form/guideline/formvalidation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/formvalidation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/formvalidation/main.vue b/vue-options-api-demos/form/guideline/formvalidation/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/formvalidation/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/formvalidation/validators.js b/vue-options-api-demos/form/guideline/formvalidation/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/formvalidation/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/groups/FormCheckbox.vue b/vue-options-api-demos/form/guideline/groups/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/form/guideline/groups/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/groups/FormContent.vue b/vue-options-api-demos/form/guideline/groups/FormContent.vue new file mode 100644 index 00000000..ebe58745 --- /dev/null +++ b/vue-options-api-demos/form/guideline/groups/FormContent.vue @@ -0,0 +1,111 @@ + + diff --git a/vue-options-api-demos/form/guideline/groups/FormInput.vue b/vue-options-api-demos/form/guideline/groups/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/groups/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/groups/main.js b/vue-options-api-demos/form/guideline/groups/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/groups/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/groups/main.vue b/vue-options-api-demos/form/guideline/groups/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/groups/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/groups/validators.js b/vue-options-api-demos/form/guideline/groups/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/groups/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/hints/FormContent.vue b/vue-options-api-demos/form/guideline/hints/FormContent.vue new file mode 100644 index 00000000..231ab390 --- /dev/null +++ b/vue-options-api-demos/form/guideline/hints/FormContent.vue @@ -0,0 +1,91 @@ + + diff --git a/vue-options-api-demos/form/guideline/hints/FormDatePicker.vue b/vue-options-api-demos/form/guideline/hints/FormDatePicker.vue new file mode 100644 index 00000000..af21ec48 --- /dev/null +++ b/vue-options-api-demos/form/guideline/hints/FormDatePicker.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/guideline/hints/FormInput.vue b/vue-options-api-demos/form/guideline/hints/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/hints/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/hints/main.js b/vue-options-api-demos/form/guideline/hints/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/hints/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/hints/main.vue b/vue-options-api-demos/form/guideline/hints/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/hints/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/hints/validators.js b/vue-options-api-demos/form/guideline/hints/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/hints/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/horizontal/FormContent.vue b/vue-options-api-demos/form/guideline/horizontal/FormContent.vue new file mode 100644 index 00000000..53ebb218 --- /dev/null +++ b/vue-options-api-demos/form/guideline/horizontal/FormContent.vue @@ -0,0 +1,114 @@ + + diff --git a/vue-options-api-demos/form/guideline/horizontal/FormInput.vue b/vue-options-api-demos/form/guideline/horizontal/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/horizontal/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/horizontal/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/horizontal/FormMaskedTextBox.vue new file mode 100644 index 00000000..395d904f --- /dev/null +++ b/vue-options-api-demos/form/guideline/horizontal/FormMaskedTextBox.vue @@ -0,0 +1,88 @@ + + + diff --git a/vue-options-api-demos/form/guideline/horizontal/main.js b/vue-options-api-demos/form/guideline/horizontal/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/horizontal/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/horizontal/main.vue b/vue-options-api-demos/form/guideline/horizontal/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/horizontal/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/horizontal/validators.js b/vue-options-api-demos/form/guideline/horizontal/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/horizontal/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/inputs/FormContent.vue b/vue-options-api-demos/form/guideline/inputs/FormContent.vue new file mode 100644 index 00000000..d4f43921 --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/FormContent.vue @@ -0,0 +1,157 @@ + + diff --git a/vue-options-api-demos/form/guideline/inputs/FormInput.vue b/vue-options-api-demos/form/guideline/inputs/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/inputs/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/inputs/FormMaskedTextBox.vue new file mode 100644 index 00000000..395d904f --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/FormMaskedTextBox.vue @@ -0,0 +1,88 @@ + + + diff --git a/vue-options-api-demos/form/guideline/inputs/FormNumericTextBox.vue b/vue-options-api-demos/form/guideline/inputs/FormNumericTextBox.vue new file mode 100644 index 00000000..fda4a4ec --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/FormNumericTextBox.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/guideline/inputs/FormSlider.vue b/vue-options-api-demos/form/guideline/inputs/FormSlider.vue new file mode 100644 index 00000000..f3d5c9a3 --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/FormSlider.vue @@ -0,0 +1,89 @@ + + + diff --git a/vue-options-api-demos/form/guideline/inputs/FormTextArea.vue b/vue-options-api-demos/form/guideline/inputs/FormTextArea.vue new file mode 100644 index 00000000..3c308b6d --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/FormTextArea.vue @@ -0,0 +1,81 @@ + + + diff --git a/vue-options-api-demos/form/guideline/inputs/main.js b/vue-options-api-demos/form/guideline/inputs/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/inputs/main.vue b/vue-options-api-demos/form/guideline/inputs/main.vue new file mode 100644 index 00000000..ee5d7f4f --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/guideline/inputs/validators.js b/vue-options-api-demos/form/guideline/inputs/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/inputs/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/optional/FormContent.vue b/vue-options-api-demos/form/guideline/optional/FormContent.vue new file mode 100644 index 00000000..eefd043c --- /dev/null +++ b/vue-options-api-demos/form/guideline/optional/FormContent.vue @@ -0,0 +1,97 @@ + + diff --git a/vue-options-api-demos/form/guideline/optional/FormFloatingNumericTextBox.vue b/vue-options-api-demos/form/guideline/optional/FormFloatingNumericTextBox.vue new file mode 100644 index 00000000..5df99979 --- /dev/null +++ b/vue-options-api-demos/form/guideline/optional/FormFloatingNumericTextBox.vue @@ -0,0 +1,86 @@ + + + diff --git a/vue-options-api-demos/form/guideline/optional/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/optional/FormMaskedTextBox.vue new file mode 100644 index 00000000..395d904f --- /dev/null +++ b/vue-options-api-demos/form/guideline/optional/FormMaskedTextBox.vue @@ -0,0 +1,88 @@ + + + diff --git a/vue-options-api-demos/form/guideline/optional/main.js b/vue-options-api-demos/form/guideline/optional/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/optional/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/optional/main.vue b/vue-options-api-demos/form/guideline/optional/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/optional/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/optional/validators.js b/vue-options-api-demos/form/guideline/optional/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/optional/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/placeholder/FormContent.vue b/vue-options-api-demos/form/guideline/placeholder/FormContent.vue new file mode 100644 index 00000000..4bc143aa --- /dev/null +++ b/vue-options-api-demos/form/guideline/placeholder/FormContent.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/form/guideline/placeholder/FormInput.vue b/vue-options-api-demos/form/guideline/placeholder/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/guideline/placeholder/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/guideline/placeholder/main.js b/vue-options-api-demos/form/guideline/placeholder/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/placeholder/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/placeholder/main.vue b/vue-options-api-demos/form/guideline/placeholder/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/placeholder/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/guideline/placeholder/validators.js b/vue-options-api-demos/form/guideline/placeholder/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/guideline/placeholder/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/form/guideline/uploads/FormContent.vue b/vue-options-api-demos/form/guideline/uploads/FormContent.vue new file mode 100644 index 00000000..1964ea7c --- /dev/null +++ b/vue-options-api-demos/form/guideline/uploads/FormContent.vue @@ -0,0 +1,78 @@ + + diff --git a/vue-options-api-demos/form/guideline/uploads/FormUpload.vue b/vue-options-api-demos/form/guideline/uploads/FormUpload.vue new file mode 100644 index 00000000..947b1481 --- /dev/null +++ b/vue-options-api-demos/form/guideline/uploads/FormUpload.vue @@ -0,0 +1,91 @@ + + + diff --git a/vue-options-api-demos/form/guideline/uploads/main.js b/vue-options-api-demos/form/guideline/uploads/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/guideline/uploads/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/guideline/uploads/main.vue b/vue-options-api-demos/form/guideline/uploads/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/form/guideline/uploads/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/form/labels/FloatingLabelFormInput.vue b/vue-options-api-demos/form/labels/FloatingLabelFormInput.vue new file mode 100644 index 00000000..d34eea70 --- /dev/null +++ b/vue-options-api-demos/form/labels/FloatingLabelFormInput.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/form/labels/FormContent.vue b/vue-options-api-demos/form/labels/FormContent.vue new file mode 100644 index 00000000..9ce93ada --- /dev/null +++ b/vue-options-api-demos/form/labels/FormContent.vue @@ -0,0 +1,76 @@ + + diff --git a/vue-options-api-demos/form/labels/LabelFormInput.vue b/vue-options-api-demos/form/labels/LabelFormInput.vue new file mode 100644 index 00000000..83984063 --- /dev/null +++ b/vue-options-api-demos/form/labels/LabelFormInput.vue @@ -0,0 +1,85 @@ + + + diff --git a/vue-options-api-demos/form/labels/main.js b/vue-options-api-demos/form/labels/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/labels/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/labels/main.vue b/vue-options-api-demos/form/labels/main.vue new file mode 100644 index 00000000..cb5e3869 --- /dev/null +++ b/vue-options-api-demos/form/labels/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/layout/horizontal/FloatingLabelFormInput.vue b/vue-options-api-demos/form/layout/horizontal/FloatingLabelFormInput.vue new file mode 100644 index 00000000..3f6e4f14 --- /dev/null +++ b/vue-options-api-demos/form/layout/horizontal/FloatingLabelFormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/layout/horizontal/FormContent.vue b/vue-options-api-demos/form/layout/horizontal/FormContent.vue new file mode 100644 index 00000000..2dec2369 --- /dev/null +++ b/vue-options-api-demos/form/layout/horizontal/FormContent.vue @@ -0,0 +1,76 @@ + + diff --git a/vue-options-api-demos/form/layout/horizontal/LabelFormInput.vue b/vue-options-api-demos/form/layout/horizontal/LabelFormInput.vue new file mode 100644 index 00000000..d5146c80 --- /dev/null +++ b/vue-options-api-demos/form/layout/horizontal/LabelFormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/layout/horizontal/main.js b/vue-options-api-demos/form/layout/horizontal/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/layout/horizontal/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/layout/horizontal/main.vue b/vue-options-api-demos/form/layout/horizontal/main.vue new file mode 100644 index 00000000..cb5e3869 --- /dev/null +++ b/vue-options-api-demos/form/layout/horizontal/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/layout/vertical/FloatingLabelFormInput.vue b/vue-options-api-demos/form/layout/vertical/FloatingLabelFormInput.vue new file mode 100644 index 00000000..34e4b9ac --- /dev/null +++ b/vue-options-api-demos/form/layout/vertical/FloatingLabelFormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/layout/vertical/FormContent.vue b/vue-options-api-demos/form/layout/vertical/FormContent.vue new file mode 100644 index 00000000..9ce93ada --- /dev/null +++ b/vue-options-api-demos/form/layout/vertical/FormContent.vue @@ -0,0 +1,76 @@ + + diff --git a/vue-options-api-demos/form/layout/vertical/LabelFormInput.vue b/vue-options-api-demos/form/layout/vertical/LabelFormInput.vue new file mode 100644 index 00000000..9fecbbfa --- /dev/null +++ b/vue-options-api-demos/form/layout/vertical/LabelFormInput.vue @@ -0,0 +1,83 @@ + + + diff --git a/vue-options-api-demos/form/layout/vertical/main.js b/vue-options-api-demos/form/layout/vertical/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/form/layout/vertical/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/form/layout/vertical/main.vue b/vue-options-api-demos/form/layout/vertical/main.vue new file mode 100644 index 00000000..cb5e3869 --- /dev/null +++ b/vue-options-api-demos/form/layout/vertical/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/form/shared/CommandCell.vue b/vue-options-api-demos/form/shared/CommandCell.vue new file mode 100644 index 00000000..1154fc04 --- /dev/null +++ b/vue-options-api-demos/form/shared/CommandCell.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/form/shared/FormAutoComplete.vue b/vue-options-api-demos/form/shared/FormAutoComplete.vue new file mode 100644 index 00000000..9a1344e8 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormAutoComplete.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormCheckbox.vue b/vue-options-api-demos/form/shared/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormComboBox.vue b/vue-options-api-demos/form/shared/FormComboBox.vue new file mode 100644 index 00000000..748a36ba --- /dev/null +++ b/vue-options-api-demos/form/shared/FormComboBox.vue @@ -0,0 +1,87 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormDateInput.vue b/vue-options-api-demos/form/shared/FormDateInput.vue new file mode 100644 index 00000000..29cf0d01 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormDateInput.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormDatePicker.vue b/vue-options-api-demos/form/shared/FormDatePicker.vue new file mode 100644 index 00000000..af21ec48 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormDatePicker.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormDateTimePicker.vue b/vue-options-api-demos/form/shared/FormDateTimePicker.vue new file mode 100644 index 00000000..03e66bc8 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormDateTimePicker.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormDropDownList.vue b/vue-options-api-demos/form/shared/FormDropDownList.vue new file mode 100644 index 00000000..ad567de3 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormDropDownList.vue @@ -0,0 +1,82 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormFloatingNumericTextBox.vue b/vue-options-api-demos/form/shared/FormFloatingNumericTextBox.vue new file mode 100644 index 00000000..5df99979 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormFloatingNumericTextBox.vue @@ -0,0 +1,86 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormGrid.vue b/vue-options-api-demos/form/shared/FormGrid.vue new file mode 100644 index 00000000..64a0588b --- /dev/null +++ b/vue-options-api-demos/form/shared/FormGrid.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/form/shared/FormInput.vue b/vue-options-api-demos/form/shared/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormMaskedTextBox.vue b/vue-options-api-demos/form/shared/FormMaskedTextBox.vue new file mode 100644 index 00000000..395d904f --- /dev/null +++ b/vue-options-api-demos/form/shared/FormMaskedTextBox.vue @@ -0,0 +1,88 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormMultiSelect.vue b/vue-options-api-demos/form/shared/FormMultiSelect.vue new file mode 100644 index 00000000..800a724b --- /dev/null +++ b/vue-options-api-demos/form/shared/FormMultiSelect.vue @@ -0,0 +1,82 @@ + + diff --git a/vue-options-api-demos/form/shared/FormNumericTextBox.vue b/vue-options-api-demos/form/shared/FormNumericTextBox.vue new file mode 100644 index 00000000..fda4a4ec --- /dev/null +++ b/vue-options-api-demos/form/shared/FormNumericTextBox.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormRadioGroup.vue b/vue-options-api-demos/form/shared/FormRadioGroup.vue new file mode 100644 index 00000000..0dc1d7ae --- /dev/null +++ b/vue-options-api-demos/form/shared/FormRadioGroup.vue @@ -0,0 +1,107 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormSlider.vue b/vue-options-api-demos/form/shared/FormSlider.vue new file mode 100644 index 00000000..f3d5c9a3 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormSlider.vue @@ -0,0 +1,89 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormTextArea.vue b/vue-options-api-demos/form/shared/FormTextArea.vue new file mode 100644 index 00000000..3c308b6d --- /dev/null +++ b/vue-options-api-demos/form/shared/FormTextArea.vue @@ -0,0 +1,81 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormTimePicker.vue b/vue-options-api-demos/form/shared/FormTimePicker.vue new file mode 100644 index 00000000..b76cc70c --- /dev/null +++ b/vue-options-api-demos/form/shared/FormTimePicker.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/form/shared/FormUpload.vue b/vue-options-api-demos/form/shared/FormUpload.vue new file mode 100644 index 00000000..947b1481 --- /dev/null +++ b/vue-options-api-demos/form/shared/FormUpload.vue @@ -0,0 +1,91 @@ + + + diff --git a/vue-options-api-demos/form/shared/data.js b/vue-options-api-demos/form/shared/data.js new file mode 100644 index 00000000..1b3905df --- /dev/null +++ b/vue-options-api-demos/form/shared/data.js @@ -0,0 +1,212 @@ +export const genders = [ + { label: 'Male', value: 'male' }, + { label: 'Female', value: 'female' }, + { label: 'Other', value: 'other' } +]; + +export const countries = [ + 'Albania', + 'Andorra', + 'Armenia', + 'Austria', + 'Azerbaijan', + 'Belarus', + 'Belgium', + 'Bosnia & Herzegovina', + 'Bulgaria', + 'Croatia', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Estonia', + 'Finland', + 'France', + 'Georgia', + 'Germany', + 'Greece', + 'Hungary', + 'Iceland', + 'Ireland', + 'Italy', + 'Kosovo', + 'Latvia', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Malta', + 'Moldova', + 'Monaco', + 'Montenegro', + 'Netherlands', + 'Norway', + 'Poland', + 'Portugal', + 'Romania', + 'Russia', + 'San Marino', + 'Serbia', + 'Slovakia', + 'Slovenia', + 'Spain', + 'Sweden', + 'Switzerland', + 'Turkey', + 'Ukraine', + 'United Kingdom', + 'Vatican City' +]; + +export const sizes = [ + 'X-Small', + 'Small', + 'Medium', + 'Large', + 'X-Large', + '2X-Large' +]; + +export const sports = [ + 'Baseball', + 'Basketball', + 'Cricket', + 'Field Hockey', + 'Football', + 'Table Tennis', + 'Tennis', + 'Volleyball' +]; + +export const equipment = [ + { + text: 'Furniture', + id: 1, + items: [ + { text: 'Tables & Chairs', id: 2 }, + { text: 'Sofas', id: 3 }, + { text: 'Occasional Furniture', id: 4 } + ] + }, + { + text: 'Decor', + id: 5, + items: [ + { text: 'Bed Linen', id: 6 }, + { text: 'Curtains & Blinds', id: 7 }, + { text: 'Carpets', id: 8 } + ] + } +]; + +export const employees = [ + { + id: 1, + name: 'Daryl Sweeney', + reportsTo: null, + phone: '(555) 924-9726', + extension: 8253, + hireDate: new Date('2012-02-07T20:00:00.000Z'), + fullTime: true, + position: 'CEO', + timeInPosition: 2 + }, + { + id: 2, + name: 'Guy Wooten', + reportsTo: 1, + phone: '(438) 738-4935', + extension: 1155, + hireDate: new Date('2010-03-03T20:00:00.000Z'), + fullTime: true, + position: 'Chief Technical Officer', + timeInPosition: 1 + }, + { + id: 3, + name: 'Priscilla Frank', + reportsTo: 1, + phone: '(278) 927-2684', + extension: 4183, + hireDate: new Date('2014-11-30T00:00:00.000Z'), + fullTime: true, + position: 'Chief Product Officer', + timeInPosition: 2 + }, + { + id: 4, + name: 'Ursula Holmes', + reportsTo: 3, + phone: '(302) 760-2034', + extension: 2226, + hireDate: new Date('2011-06-06T00:00:00.000Z'), + fullTime: true, + position: 'EVP, Product Strategy', + timeInPosition: 4 + }, + { + id: 5, + name: 'Anika Vega', + reportsTo: 1, + phone: '(910) 714-1802', + extension: 6353, + hireDate: new Date('2010-02-25T00:00:00.000Z'), + fullTime: true, + position: 'Chief Process Officer', + timeInPosition: 5 + }, + { + id: 6, + name: 'Moses Duncan', + reportsTo: 64, + phone: '(421) 611-4814', + extension: 669, + hireDate: new Date('2010-05-24T00:00:00.000Z'), + fullTime: true, + position: 'Software Developer', + timeInPosition: 6 + }, + { + id: 7, + name: 'Nevada Hart', + reportsTo: 1, + phone: '(254) 220-1576', + extension: 6649, + hireDate: new Date('2015-08-17T00:00:00.000Z'), + fullTime: true, + position: 'Chief Financial Officer', + timeInPosition: 6 + }, + { + id: 8, + name: 'Hunter Fry', + reportsTo: 1, + phone: '(766) 358-9858', + extension: 3741, + hireDate: new Date('2011-02-12T00:00:00.000Z'), + fullTime: false, + position: 'General Counsel', + timeInPosition: 3 + }, + { + id: 9, + name: 'Kuame Carrillo', + reportsTo: 8, + phone: '(192) 383-1305', + extension: 9228, + hireDate: new Date('2011-02-22T00:00:00.000Z'), + fullTime: true, + position: 'Associate General Councel', + timeInPosition: 0 + }, + { + id: 10, + name: 'Vernon Ballard', + reportsTo: 5, + phone: '(702) 185-8890', + extension: 9242, + hireDate: new Date('2015-06-26T00:00:00.000Z'), + fullTime: true, + position: 'Director Facilities', + timeInPosition: 2 + } +]; diff --git a/vue-options-api-demos/form/shared/tree-data-operations.js b/vue-options-api-demos/form/shared/tree-data-operations.js new file mode 100644 index 00000000..1aa4fa17 --- /dev/null +++ b/vue-options-api-demos/form/shared/tree-data-operations.js @@ -0,0 +1,31 @@ +import { filterBy } from "@progress/kendo-vue-data-tools"; +import { mapTree, extendDataItem } from "@progress/kendo-vue-common"; + +export const processTreeData = (data, state, fields) => { + const { selectField, expandField, dataItemKey, subItemsField } = fields; + const { expanded, value, filter } = state; + const filtering = Boolean(filter && filter.value); + + return mapTree( + filtering ? filterBy(data, [filter], subItemsField) : data, + subItemsField, + item => { + const props = { + [expandField]: expanded.includes(item[dataItemKey]), + [selectField]: value && item[dataItemKey] === value[dataItemKey] + }; + return filtering + ? extendDataItem(item, subItemsField, props) + : { ...item, ...props }; + } + ); +}; + +export const expandedState = (item, dataItemKey, expanded) => { + const nextExpanded = expanded.slice(); + const itemKey = item[dataItemKey]; + const index = expanded.indexOf(itemKey); + index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1); + + return nextExpanded; +}; diff --git a/vue-options-api-demos/form/shared/validators.js b/vue-options-api-demos/form/shared/validators.js new file mode 100644 index 00000000..b0779c1d --- /dev/null +++ b/vue-options-api-demos/form/shared/validators.js @@ -0,0 +1,82 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = value => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = value => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = value => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = value => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = value => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = value => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = value => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = value => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = value => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = value => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = value => (value ? '' : 'Color is required.'); +export const requiredValidator = value => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = value => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = value => (value ? '' : 'Address is required.'); + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = values => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.' + }; +}; diff --git a/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.js b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.vue b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.vue new file mode 100644 index 00000000..de7ff783 --- /dev/null +++ b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.vue @@ -0,0 +1,45 @@ + + + diff --git a/vue-options-api-demos/gauges/arc-gauge/overview/main.js b/vue-options-api-demos/gauges/arc-gauge/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/arc-gauge/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/arc-gauge/overview/main.vue b/vue-options-api-demos/gauges/arc-gauge/overview/main.vue new file mode 100644 index 00000000..a53a9cc6 --- /dev/null +++ b/vue-options-api-demos/gauges/arc-gauge/overview/main.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue-options-api-demos/gauges/arc-gauge/scale-options/main.js b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/arc-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.vue new file mode 100644 index 00000000..fd0512f4 --- /dev/null +++ b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.vue @@ -0,0 +1,202 @@ + + + diff --git a/vue-options-api-demos/gauges/circular-gauge/center-template/main.js b/vue-options-api-demos/gauges/circular-gauge/center-template/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/center-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/circular-gauge/center-template/main.vue b/vue-options-api-demos/gauges/circular-gauge/center-template/main.vue new file mode 100644 index 00000000..b1ec2ebb --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/center-template/main.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.js b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.vue b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.vue new file mode 100644 index 00000000..5e71af68 --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.vue @@ -0,0 +1,45 @@ + + + diff --git a/vue-options-api-demos/gauges/circular-gauge/overview/main.js b/vue-options-api-demos/gauges/circular-gauge/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/circular-gauge/overview/main.vue b/vue-options-api-demos/gauges/circular-gauge/overview/main.vue new file mode 100644 index 00000000..b1ec2ebb --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/overview/main.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue-options-api-demos/gauges/circular-gauge/scale-options/main.js b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/circular-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.vue new file mode 100644 index 00000000..2942a526 --- /dev/null +++ b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.vue @@ -0,0 +1,207 @@ + + + diff --git a/vue-options-api-demos/gauges/export-options/to-image/main.js b/vue-options-api-demos/gauges/export-options/to-image/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/export-options/to-image/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/export-options/to-image/main.vue b/vue-options-api-demos/gauges/export-options/to-image/main.vue new file mode 100644 index 00000000..4715f7a0 --- /dev/null +++ b/vue-options-api-demos/gauges/export-options/to-image/main.vue @@ -0,0 +1,96 @@ + + + diff --git a/vue-options-api-demos/gauges/export-options/to-pdf/main.js b/vue-options-api-demos/gauges/export-options/to-pdf/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/export-options/to-pdf/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/export-options/to-pdf/main.vue b/vue-options-api-demos/gauges/export-options/to-pdf/main.vue new file mode 100644 index 00000000..3bd1b890 --- /dev/null +++ b/vue-options-api-demos/gauges/export-options/to-pdf/main.vue @@ -0,0 +1,92 @@ + + + diff --git a/vue-options-api-demos/gauges/export-options/to-svg/main.js b/vue-options-api-demos/gauges/export-options/to-svg/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/export-options/to-svg/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/export-options/to-svg/main.vue b/vue-options-api-demos/gauges/export-options/to-svg/main.vue new file mode 100644 index 00000000..38edb9db --- /dev/null +++ b/vue-options-api-demos/gauges/export-options/to-svg/main.vue @@ -0,0 +1,92 @@ + + + diff --git a/vue-options-api-demos/gauges/globalization/main.js b/vue-options-api-demos/gauges/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/globalization/main.vue b/vue-options-api-demos/gauges/globalization/main.vue new file mode 100644 index 00000000..ac5e257f --- /dev/null +++ b/vue-options-api-demos/gauges/globalization/main.vue @@ -0,0 +1,98 @@ + + + diff --git a/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.js b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.vue b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.vue new file mode 100644 index 00000000..af114d82 --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-options-api-demos/gauges/linear-gauge/orientation/main.js b/vue-options-api-demos/gauges/linear-gauge/orientation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/orientation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/linear-gauge/orientation/main.vue b/vue-options-api-demos/gauges/linear-gauge/orientation/main.vue new file mode 100644 index 00000000..a0381885 --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/orientation/main.vue @@ -0,0 +1,40 @@ + + + diff --git a/vue-options-api-demos/gauges/linear-gauge/overview/main.js b/vue-options-api-demos/gauges/linear-gauge/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/linear-gauge/overview/main.vue b/vue-options-api-demos/gauges/linear-gauge/overview/main.vue new file mode 100644 index 00000000..ad689dc1 --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/overview/main.vue @@ -0,0 +1,32 @@ + + + diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-options/main.js b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.vue new file mode 100644 index 00000000..8f6f8d20 --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.vue @@ -0,0 +1,207 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.js b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.vue b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.vue new file mode 100644 index 00000000..ed6c1d57 --- /dev/null +++ b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue-options-api-demos/gauges/overview/main.js b/vue-options-api-demos/gauges/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/overview/main.vue b/vue-options-api-demos/gauges/overview/main.vue new file mode 100644 index 00000000..ee78dc3c --- /dev/null +++ b/vue-options-api-demos/gauges/overview/main.vue @@ -0,0 +1,75 @@ + + + diff --git a/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.js b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.vue b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.vue new file mode 100644 index 00000000..83828659 --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.vue @@ -0,0 +1,38 @@ + + + diff --git a/vue-options-api-demos/gauges/radial-gauge/overview/main.js b/vue-options-api-demos/gauges/radial-gauge/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/radial-gauge/overview/main.vue b/vue-options-api-demos/gauges/radial-gauge/overview/main.vue new file mode 100644 index 00000000..4de54aa6 --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/overview/main.vue @@ -0,0 +1,30 @@ + + + diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-options/main.js b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.vue new file mode 100644 index 00000000..f9984c89 --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.vue @@ -0,0 +1,200 @@ + + + diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.js b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.vue b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.vue new file mode 100644 index 00000000..74c1603d --- /dev/null +++ b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.vue @@ -0,0 +1,52 @@ + + + diff --git a/vue-options-api-demos/gauges/rtl/main.js b/vue-options-api-demos/gauges/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/gauges/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/gauges/rtl/main.vue b/vue-options-api-demos/gauges/rtl/main.vue new file mode 100644 index 00000000..82ac669f --- /dev/null +++ b/vue-options-api-demos/gauges/rtl/main.vue @@ -0,0 +1,32 @@ + + + diff --git a/vue-options-api-demos/grid/basic/BudgetComponent.vue b/vue-options-api-demos/grid/basic/BudgetComponent.vue new file mode 100644 index 00000000..865b74a3 --- /dev/null +++ b/vue-options-api-demos/grid/basic/BudgetComponent.vue @@ -0,0 +1,23 @@ + + + diff --git a/vue-options-api-demos/grid/basic/ContactNameComponent.vue b/vue-options-api-demos/grid/basic/ContactNameComponent.vue new file mode 100644 index 00000000..66f551dc --- /dev/null +++ b/vue-options-api-demos/grid/basic/ContactNameComponent.vue @@ -0,0 +1,26 @@ + + + diff --git a/vue-options-api-demos/grid/basic/EngagementComponent.vue b/vue-options-api-demos/grid/basic/EngagementComponent.vue new file mode 100644 index 00000000..bfafa06c --- /dev/null +++ b/vue-options-api-demos/grid/basic/EngagementComponent.vue @@ -0,0 +1,48 @@ + + + diff --git a/vue-options-api-demos/grid/basic/FlagComponent.vue b/vue-options-api-demos/grid/basic/FlagComponent.vue new file mode 100644 index 00000000..a5881318 --- /dev/null +++ b/vue-options-api-demos/grid/basic/FlagComponent.vue @@ -0,0 +1,21 @@ + + + diff --git a/vue-options-api-demos/grid/basic/Grid.vue b/vue-options-api-demos/grid/basic/Grid.vue new file mode 100644 index 00000000..c41c8f2e --- /dev/null +++ b/vue-options-api-demos/grid/basic/Grid.vue @@ -0,0 +1,512 @@ + + + + + diff --git a/vue-options-api-demos/grid/basic/IsOnlineComponent.vue b/vue-options-api-demos/grid/basic/IsOnlineComponent.vue new file mode 100644 index 00000000..c41d77a8 --- /dev/null +++ b/vue-options-api-demos/grid/basic/IsOnlineComponent.vue @@ -0,0 +1,20 @@ + + + diff --git a/vue-options-api-demos/grid/basic/employees.json b/vue-options-api-demos/grid/basic/employees.json new file mode 100644 index 00000000..b1240ebd --- /dev/null +++ b/vue-options-api-demos/grid/basic/employees.json @@ -0,0 +1,1403 @@ +[ + { + "id": "848e6002-8a92-447d-951b-1ffd5e695578", + "full_name": "Sig Jeannel", + "job_title": "Human Resources Assistant III", + "country": "US", + "is_online": true, + "rating": 3, + "target": 100, + "budget": 47601, + "phone": "(936) 9429601", + "address": "138 Buhler Avenue", + "img_id": 1, + "gender": "M" + }, + { + "id": "19d18d40-0e64-4837-9420-92130a0ed253", + "full_name": "Shelden Greyes", + "job_title": "Operator", + "country": "GB", + "is_online": true, + "rating": 5, + "target": 40, + "budget": 12253, + "phone": "(343) 6656271", + "address": "2 Waxwing Point", + "img_id": 2, + "gender": "M" + }, + { + "id": "bebdc6eb-9179-484a-917d-2e16a23bfdfe", + "full_name": "Megen Cody", + "job_title": "Operator", + "country": "BR", + "is_online": true, + "rating": 1, + "target": 66, + "budget": 96183, + "phone": "(178) 2336256", + "address": "4082 Stephen Court", + "img_id": 6, + "gender": "F" + }, + { + "id": "38b08b88-e482-46fc-8976-83590c02ec23", + "full_name": "Clevey Thursfield", + "job_title": "VP Quality Control", + "country": "BR", + "is_online": true, + "rating": 2, + "target": 58, + "budget": 54936, + "phone": "(277) 7415010", + "address": "1563 Glacier Hill Parkway", + "img_id": 5, + "gender": "M" + }, + { + "id": "2aac53f8-b72d-4629-9082-6d8239a8fecf", + "full_name": "Ruthi Baldini", + "job_title": "Data Coordiator", + "country": "BR", + "is_online": true, + "rating": 3, + "target": 37, + "budget": 46572, + "phone": "(766) 5691615", + "address": "6 Laurel Avenue", + "img_id": 8, + "gender": "F" + }, + { + "id": "1aa789e5-de01-406e-a2ee-cc5ce20f7e34", + "full_name": "Annecorinne Morter", + "job_title": "Professor", + "country": "FR", + "is_online": false, + "rating": 2, + "target": 35, + "budget": 37198, + "phone": "(807) 2524830", + "address": "106 Green Street", + "img_id": 3, + "gender": "F" + }, + { + "id": "d2ff1b02-3808-44aa-9056-3b5df34bf865", + "full_name": "Gracia Punyer", + "job_title": "Assistant Manager", + "country": "ES", + "is_online": true, + "rating": 4, + "target": 64, + "budget": 84752, + "phone": "(515) 9749536", + "address": "69 Brentwood Alley", + "img_id": 2, + "gender": "F" + }, + { + "id": "26b2b760-27e8-47a6-81c2-07870d1b2b30", + "full_name": "Duky Hurring", + "job_title": "Account Executive", + "country": "BR", + "is_online": false, + "rating": 3, + "target": 61, + "budget": -1266, + "phone": "(897) 7202034", + "address": "39 Morning Circle", + "img_id": 3, + "gender": "M" + }, + { + "id": "91c6b652-4206-4a0c-bac6-dc21283a72d7", + "full_name": "Briana Shemelt", + "job_title": "Professor", + "country": "US", + "is_online": false, + "rating": 3, + "target": 63, + "budget": -9308, + "phone": "(205) 2560799", + "address": "11 Walton Court", + "img_id": 2, + "gender": "F" + }, + { + "id": "1e8289dc-2ef3-4045-ad6b-786d00368427", + "full_name": "Lexis Mostin", + "job_title": "Analyst Programmer", + "country": "FR", + "is_online": true, + "rating": 4, + "target": 81, + "budget": 38153, + "phone": "(903) 8388089", + "address": "38547 Westend Way", + "img_id": 4, + "gender": "F" + }, + { + "id": "797387bd-c247-48b3-97b6-5e75791f8809", + "full_name": "Felizio Gooda", + "job_title": "GIS Technical Architect", + "country": "DE", + "is_online": true, + "rating": 3, + "target": 89, + "budget": 81585, + "phone": "(372) 2389397", + "address": "9 Summer Ridge Circle", + "img_id": 2, + "gender": "M" + }, + { + "id": "24c541b0-4978-4072-84d0-abe94fcd0756", + "full_name": "Aubry Oxberry", + "job_title": "Financial Advisor", + "country": "BR", + "is_online": false, + "rating": 2, + "target": 3, + "budget": -6095, + "phone": "(665) 4176083", + "address": "06 Lerdahl Point", + "img_id": 10, + "gender": "F" + }, + { + "id": "d3416440-7411-42cc-a913-7dd319ca8311", + "full_name": "Orly Glasbey", + "job_title": "Environmental Tech", + "country": "BR", + "is_online": true, + "rating": 5, + "target": 63, + "budget": 63945, + "phone": "(449) 8482879", + "address": "4035 Porter Parkway", + "img_id": 6, + "gender": "F" + }, + { + "id": "139066b5-60c5-4cf5-9afe-fb4e5558b087", + "full_name": "Stephanus Culp", + "job_title": "Cost Accountant", + "country": "BR", + "is_online": false, + "rating": 2, + "target": 60, + "budget": 10613, + "phone": "(148) 3124030", + "address": "57028 Moland Terrace", + "img_id": 8, + "gender": "M" + }, + { + "id": "eb844971-b97d-4f79-bd5a-a266fcfaaf70", + "full_name": "Roseanna Janecek", + "job_title": "Database Administrator IV", + "country": "FR", + "is_online": false, + "rating": 4, + "target": 97, + "budget": 77351, + "phone": "(125) 4421623", + "address": "21973 Beilfuss Alley", + "img_id": 4, + "gender": "F" + }, + { + "id": "5cb391fe-4855-445c-a8b8-617c04d1d999", + "full_name": "Weidar McCombe", + "job_title": "Civil Engineer", + "country": "FR", + "is_online": true, + "rating": 1, + "target": 77, + "budget": 35924, + "phone": "(488) 7911627", + "address": "7 Dahle Terrace", + "img_id": 1, + "gender": "M" + }, + { + "id": "4ba9ad7e-d8b7-40e7-b8cd-67a8e743a249", + "full_name": "Evelin Spirritt", + "job_title": "Analyst Programmer", + "country": "BR", + "is_online": false, + "rating": 2, + "target": 18, + "budget": 58552, + "phone": "(821) 9538078", + "address": "89418 Knutson Pass", + "img_id": 1, + "gender": "M" + }, + { + "id": "e4a31407-39d1-4ab7-aad1-4e026a8c42fa", + "full_name": "Andria Helbeck", + "job_title": "Nurse Practicioner", + "country": "BR", + "is_online": true, + "rating": 4, + "target": 53, + "budget": 72526, + "phone": "(387) 9614638", + "address": "8589 Vernon Drive", + "img_id": 8, + "gender": "F" + }, + { + "id": "cd050499-dbf1-4a43-86ab-54feaacef401", + "full_name": "Mariellen Ravelus", + "job_title": "Systems Administrator I", + "country": "DE", + "is_online": true, + "rating": 2, + "target": 22, + "budget": -6659, + "phone": "(300) 6741661", + "address": "707 Gale Hill", + "img_id": 9, + "gender": "F" + }, + { + "id": "fda1c419-c0b8-4278-94b0-2ebef6bda164", + "full_name": "Corri Pergens", + "job_title": "Help Desk Operator", + "country": "BR", + "is_online": true, + "rating": 2, + "target": 74, + "budget": 12376, + "phone": "(769) 7145603", + "address": "856 Forest Crossing", + "img_id": 3, + "gender": "F" + }, + { + "id": "4a962db9-136e-4fcc-a683-2f961e27fb6e", + "full_name": "Friedrick Macknish", + "job_title": "Human Resources Assistant II", + "country": "FR", + "is_online": true, + "rating": 2, + "target": 38, + "budget": 97848, + "phone": "(196) 4156385", + "address": "157 Talisman Trail", + "img_id": 9, + "gender": "M" + }, + { + "id": "fa47e456-83c4-4fdc-b57b-07effb279967", + "full_name": "Georgette Trevorrow", + "job_title": "VP Accounting", + "country": "FR", + "is_online": true, + "rating": 3, + "target": 3, + "budget": 17327, + "phone": "(319) 1412549", + "address": "07 Marquette Point", + "img_id": 3, + "gender": "F" + }, + { + "id": "67656444-fbcd-4813-84e7-1bdcd82f803e", + "full_name": "Vanya Goalby", + "job_title": "Senior Cost Accountant", + "country": "FR", + "is_online": false, + "rating": 2, + "target": 77, + "budget": 33584, + "phone": "(496) 7538982", + "address": "2192 Iowa Lane", + "img_id": 6, + "gender": "F" + }, + { + "id": "05c098c2-9617-4e66-928a-e29b97297138", + "full_name": "Abel Ansell", + "job_title": "Actuary", + "country": "US", + "is_online": false, + "rating": 4, + "target": 52, + "budget": 12312, + "phone": "(571) 9908377", + "address": "4355 Iowa Parkway", + "img_id": 4, + "gender": "M" + }, + { + "id": "3b263e99-51bf-4461-bb20-d4303d326cd9", + "full_name": "Odille Barus", + "job_title": "Speech Pathologist", + "country": "FR", + "is_online": true, + "rating": 4, + "target": 60, + "budget": 46911, + "phone": "(974) 1137672", + "address": "496 Lotheville Avenue", + "img_id": 8, + "gender": "F" + }, + { + "id": "c09ddfaf-569e-4a75-8e53-1be27cf25927", + "full_name": "Rudolf Consadine", + "job_title": "Structural Analysis Engineer", + "country": "FR", + "is_online": true, + "rating": 4, + "target": 20, + "budget": 94258, + "phone": "(450) 7612220", + "address": "93 Thierer Park", + "img_id": 6, + "gender": "M" + }, + { + "id": "a48abbc9-6143-4f77-a720-0b76ad862a9a", + "full_name": "Christabel Bick", + "job_title": "Engineer III", + "country": "FR", + "is_online": true, + "rating": 5, + "target": 0, + "budget": 65359, + "phone": "(361) 5159566", + "address": "191 Bunting Pass", + "img_id": 5, + "gender": "F" + }, + { + "id": "d8816aee-4230-4392-a045-0a9c297451f7", + "full_name": "Lancelot Tanzer", + "job_title": "Senior Developer", + "country": "US", + "is_online": true, + "rating": 5, + "target": 80, + "budget": 13246, + "phone": "(502) 3949900", + "address": "4287 Corben Plaza", + "img_id": 8, + "gender": "M" + }, + { + "id": "9f5af32c-fb0d-4449-a658-f2c7f182b63a", + "full_name": "Bink Byk", + "job_title": "Software Engineer I", + "country": "FR", + "is_online": false, + "rating": 3, + "target": 17, + "budget": 56472, + "phone": "(475) 9070061", + "address": "075 Eggendart Avenue", + "img_id": 9, + "gender": "M" + }, + { + "id": "dbd7f48a-6540-4560-bb7c-cd60456b55b8", + "full_name": "Rhys Pheazey", + "job_title": "Speech Pathologist", + "country": "BR", + "is_online": false, + "rating": 5, + "target": 98, + "budget": 62483, + "phone": "(365) 8904529", + "address": "987 Carioca Lane", + "img_id": 9, + "gender": "M" + }, + { + "id": "844189fe-d36e-4e06-9761-932259701fc8", + "full_name": "Lyndell Howieson", + "job_title": "Speech Pathologist", + "country": "DE", + "is_online": true, + "rating": 2, + "target": 82, + "budget": 16694, + "phone": "(461) 3130038", + "address": "9 Pennsylvania Crossing", + "img_id": 8, + "gender": "F" + }, + { + "id": "5544d9d5-40ea-4e5a-8fb8-f5016b313b8f", + "full_name": "Cassey Fitchell", + "job_title": "Software Engineer III", + "country": "FR", + "is_online": true, + "rating": 2, + "target": 10, + "budget": 91253, + "phone": "(985) 5060547", + "address": "652 Merry Place", + "img_id": 9, + "gender": "F" + }, + { + "id": "1c669764-3cff-424a-b7e4-e7711d6c7d6c", + "full_name": "Coralyn Steljes", + "job_title": "Accounting Assistant III", + "country": "FR", + "is_online": false, + "rating": 2, + "target": 81, + "budget": -9871, + "phone": "(760) 5696853", + "address": "4 Norway Maple Pass", + "img_id": 9, + "gender": "F" + }, + { + "id": "4cc649dc-7f85-40ab-bc59-950f37268a65", + "full_name": "Bruis Creavin", + "job_title": "Nuclear Power Engineer", + "country": "BR", + "is_online": false, + "rating": 1, + "target": 59, + "budget": -5798, + "phone": "(570) 8801169", + "address": "71 Carioca Park", + "img_id": 6, + "gender": "M" + }, + { + "id": "8c9505f1-e8f8-4ba6-8c9a-5a1d089c6f09", + "full_name": "Adrianne Peery", + "job_title": "Chief Design Engineer", + "country": "FR", + "is_online": false, + "rating": 2, + "target": 2, + "budget": 56575, + "phone": "(793) 1143493", + "address": "3 2nd Drive", + "img_id": 7, + "gender": "F" + }, + { + "id": "ced0905e-44ac-4317-a203-76994e53a751", + "full_name": "Port Gerauld", + "job_title": "Senior Cost Accountant", + "country": "FR", + "is_online": true, + "rating": 2, + "target": 27, + "budget": 97919, + "phone": "(155) 5488067", + "address": "9 High Crossing Center", + "img_id": 5, + "gender": "M" + }, + { + "id": "f0bcc7cd-999e-4611-a04f-7bdc16bc6160", + "full_name": "Boy Antoszewski", + "job_title": "VP Accounting", + "country": "GB", + "is_online": true, + "rating": 2, + "target": 11, + "budget": 74779, + "phone": "(715) 9192627", + "address": "3773 Hazelcrest Road", + "img_id": 6, + "gender": "M" + }, + { + "id": "322540e3-b72e-4b7d-ae4a-d927911340b7", + "full_name": "Gib Yakebowitch", + "job_title": "Marketing Assistant", + "country": "BR", + "is_online": false, + "rating": 5, + "target": 57, + "budget": 89028, + "phone": "(923) 6953600", + "address": "7 Mariners Cove Point", + "img_id": 8, + "gender": "M" + }, + { + "id": "b1ed798d-6177-4a27-9571-2e02be932214", + "full_name": "Minerva Gilders", + "job_title": "Administrative Officer", + "country": "BR", + "is_online": false, + "rating": 3, + "target": 54, + "budget": 32267, + "phone": "(773) 8863232", + "address": "82 Annamark Way", + "img_id": 4, + "gender": "F" + }, + { + "id": "d26bcf84-a8b4-471c-a582-2de64d7e7715", + "full_name": "Wait Peperell", + "job_title": "Web Designer III", + "country": "US", + "is_online": true, + "rating": 4, + "target": 94, + "budget": 72251, + "phone": "(419) 5806752", + "address": "0355 Petterle Avenue", + "img_id": 8, + "gender": "M" + }, + { + "id": "da813d45-bd3b-4bfa-abdd-e12050a5da14", + "full_name": "Ailsun Esmead", + "job_title": "Software Test Engineer III", + "country": "FR", + "is_online": true, + "rating": 1, + "target": 12, + "budget": 69596, + "phone": "(852) 7039628", + "address": "0 Lunder Crossing", + "img_id": 8, + "gender": "F" + }, + { + "id": "944d8752-ef63-47bc-8db0-f40808d50b15", + "full_name": "Vallie Van der Velde", + "job_title": "Nurse", + "country": "GB", + "is_online": true, + "rating": 3, + "target": 89, + "budget": 19530, + "phone": "(331) 7690832", + "address": "2 Almo Lane", + "img_id": 4, + "gender": "F" + }, + { + "id": "3d2f991c-58ef-436d-912e-49496fd2065c", + "full_name": "Dov Amber", + "job_title": "Sales Representative", + "country": "FR", + "is_online": false, + "rating": 4, + "target": 55, + "budget": 61106, + "phone": "(793) 4768356", + "address": "4 Rockefeller Street", + "img_id": 3, + "gender": "M" + }, + { + "id": "29b406e9-ca20-45cb-8630-6df3a632276a", + "full_name": "Tedie Alu", + "job_title": "Business Systems Analyst", + "country": "FR", + "is_online": false, + "rating": 1, + "target": 76, + "budget": 3114, + "phone": "(602) 5831373", + "address": "28 Claremont Plaza", + "img_id": 5, + "gender": "M" + }, + { + "id": "767de27a-421c-4147-a552-26ac56390339", + "full_name": "Tally Rizzi", + "job_title": "Civil Engineer", + "country": "US", + "is_online": false, + "rating": 1, + "target": 5, + "budget": 78575, + "phone": "(302) 6856300", + "address": "1 Roth Park", + "img_id": 10, + "gender": "M" + }, + { + "id": "2b6e6902-11b5-4ca7-8a59-c32b3f57533b", + "full_name": "Ilise Lewnden", + "job_title": "Database Administrator I", + "country": "BR", + "is_online": false, + "rating": 4, + "target": 33, + "budget": -1059, + "phone": "(659) 8660881", + "address": "19 Stuart Alley", + "img_id": 2, + "gender": "F" + }, + { + "id": "c891e87f-b19b-4cb5-8902-b19c59e37494", + "full_name": "Farr Penwright", + "job_title": "Senior Editor", + "country": "US", + "is_online": true, + "rating": 3, + "target": 82, + "budget": 30505, + "phone": "(505) 3900066", + "address": "9200 Karstens Crossing", + "img_id": 6, + "gender": "M" + }, + { + "id": "65821428-adc7-4743-9dd8-cf62400e62f2", + "full_name": "Chantal Bidgod", + "job_title": "VP Sales", + "country": "BR", + "is_online": false, + "rating": 3, + "target": 62, + "budget": 25742, + "phone": "(746) 3962702", + "address": "8807 Kinsman Drive", + "img_id": 2, + "gender": "F" + }, + { + "id": "f42907e0-d92c-4fb0-b886-2e84331ffe28", + "full_name": "Johanna Bergin", + "job_title": "Electrical Engineer", + "country": "BR", + "is_online": false, + "rating": 2, + "target": 54, + "budget": 25864, + "phone": "(720) 6442547", + "address": "93166 Spohn Court", + "img_id": 3, + "gender": "F" + }, + { + "id": "4531be30-eec7-477f-bdc5-88acb8d902af", + "full_name": "Padriac Syphas", + "job_title": "Marketing Assistant", + "country": "BR", + "is_online": true, + "rating": 1, + "target": 50, + "budget": 20879, + "phone": "(606) 9062546", + "address": "50465 Buena Vista Plaza", + "img_id": 5, + "gender": "M" + }, + { + "id": "4f0ab8f6-7a36-4a5c-a513-d5495223a9cd", + "full_name": "Garey De Maria", + "job_title": "Operator", + "country": "US", + "is_online": true, + "rating": 2, + "target": 54, + "budget": 94251, + "phone": "(972) 1133958", + "address": "24 Maple Wood Terrace", + "img_id": 9, + "gender": "M" + }, + { + "id": "13556e73-d43a-485d-8603-cbf1769bd0ac", + "full_name": "Glenn Thorwarth", + "job_title": "Developer IV", + "country": "BR", + "is_online": false, + "rating": 5, + "target": 39, + "budget": 33511, + "phone": "(394) 3115946", + "address": "8 Dryden Park", + "img_id": 1, + "gender": "M" + }, + { + "id": "c8389213-a2cd-4bb8-ba99-9c29e9b70881", + "full_name": "Bron Crosson", + "job_title": "GIS Technical Architect", + "country": "FR", + "is_online": true, + "rating": 2, + "target": 80, + "budget": 62081, + "phone": "(686) 7934926", + "address": "974 Mayfield Place", + "img_id": 9, + "gender": "M" + }, + { + "id": "cd233a4e-0315-496d-8f5f-4c8787b0f1ba", + "full_name": "Garey Malecky", + "job_title": "Account Executive", + "country": "BR", + "is_online": false, + "rating": 5, + "target": 51, + "budget": 76354, + "phone": "(304) 6324519", + "address": "3 Paget Court", + "img_id": 9, + "gender": "M" + }, + { + "id": "339838eb-99dc-4fc0-8e18-060dbcf6bf78", + "full_name": "Elisabet Kimblin", + "job_title": "Automation Specialist I", + "country": "US", + "is_online": true, + "rating": 3, + "target": 35, + "budget": 26755, + "phone": "(904) 3334563", + "address": "75 Buell Court", + "img_id": 1, + "gender": "F" + }, + { + "id": "90a03a5a-1f16-4721-8c56-af4bb89a1f57", + "full_name": "Berk Uttley", + "job_title": "Health Coach IV", + "country": "FR", + "is_online": false, + "rating": 4, + "target": 58, + "budget": 82064, + "phone": "(200) 2124940", + "address": "4 Mockingbird Trail", + "img_id": 8, + "gender": "M" + }, + { + "id": "ce5ba778-43eb-4658-a6bd-56f04e6f125f", + "full_name": "Kenny Clackers", + "job_title": "Assistant Manager", + "country": "FR", + "is_online": true, + "rating": 4, + "target": 37, + "budget": 47477, + "phone": "(926) 3235464", + "address": "53315 Bashford Lane", + "img_id": 2, + "gender": "M" + }, + { + "id": "df3dffe4-6fb4-4a9c-8512-71f7cb508180", + "full_name": "Rickard Pingston", + "job_title": "Environmental Specialist", + "country": "BR", + "is_online": true, + "rating": 5, + "target": 72, + "budget": 94173, + "phone": "(902) 4658383", + "address": "8 Mesta Court", + "img_id": 2, + "gender": "M" + }, + { + "id": "2757a92d-5eed-4215-818f-fdf15b6b27d0", + "full_name": "Hobard Clabburn", + "job_title": "Systems Administrator I", + "country": "BR", + "is_online": true, + "rating": 2, + "target": 37, + "budget": 66166, + "phone": "(711) 6587550", + "address": "29796 Mcbride Court", + "img_id": 2, + "gender": "M" + }, + { + "id": "71ebd82a-f9f2-48ea-ada4-ce8db424df64", + "full_name": "Uri Champken", + "job_title": "Software Test Engineer IV", + "country": "BR", + "is_online": false, + "rating": 1, + "target": 39, + "budget": 65176, + "phone": "(514) 1953919", + "address": "78 Rowland Alley", + "img_id": 6, + "gender": "M" + }, + { + "id": "b7a77c35-1f9f-45c5-ba44-7622d279b377", + "full_name": "Obidiah Fold", + "job_title": "Budget/Accounting Analyst I", + "country": "FR", + "is_online": false, + "rating": 5, + "target": 66, + "budget": 74529, + "phone": "(747) 8711780", + "address": "58 Lakeland Court", + "img_id": 9, + "gender": "M" + }, + { + "id": "9c0fbca6-b793-4fdc-8dcf-5136cb5d049c", + "full_name": "Angelia Marconi", + "job_title": "Associate Professor", + "country": "FR", + "is_online": false, + "rating": 4, + "target": 91, + "budget": 38996, + "phone": "(530) 7506861", + "address": "7 Ohio Parkway", + "img_id": 2, + "gender": "F" + }, + { + "id": "9083010c-4f59-49e7-96c6-894cbf24ed75", + "full_name": "Ronda Lock", + "job_title": "Quality Engineer", + "country": "US", + "is_online": false, + "rating": 5, + "target": 36, + "budget": 69903, + "phone": "(916) 6819628", + "address": "802 American Ash Street", + "img_id": 6, + "gender": "F" + }, + { + "id": "4225013e-fd75-46f6-b678-b25675e131bc", + "full_name": "Rachele Fantham", + "job_title": "Business Systems Analyst", + "country": "FR", + "is_online": true, + "rating": 2, + "target": 100, + "budget": 79333, + "phone": "(652) 3112938", + "address": "62 Grim Center", + "img_id": 4, + "gender": "F" + }, + { + "id": "b75a42e9-db84-479c-96b0-d88109abfebb", + "full_name": "Emanuel Deery", + "job_title": "Electrical Engineer", + "country": "BR", + "is_online": false, + "rating": 3, + "target": 93, + "budget": 77477, + "phone": "(860) 8318923", + "address": "850 Mifflin Junction", + "img_id": 8, + "gender": "M" + }, + { + "id": "b2e28f42-7a35-4e23-b2e4-40fe3ed909ca", + "full_name": "Clay Ellins", + "job_title": "Design Engineer", + "country": "US", + "is_online": true, + "rating": 4, + "target": 98, + "budget": 4120, + "phone": "(682) 4688237", + "address": "458 Scoville Lane", + "img_id": 5, + "gender": "M" + }, + { + "id": "4239103e-80bc-4f09-8655-c2165b063027", + "full_name": "Bettina Menlove", + "job_title": "Senior Financial Analyst", + "country": "FR", + "is_online": false, + "rating": 5, + "target": 78, + "budget": 80574, + "phone": "(293) 8801412", + "address": "29 Onsgard Junction", + "img_id": 8, + "gender": "F" + }, + { + "id": "8442ff74-6f05-43f7-90de-b948a5c2c895", + "full_name": "Claiborne Willoughey", + "job_title": "Food Chemist", + "country": "US", + "is_online": true, + "rating": 5, + "target": 44, + "budget": 44673, + "phone": "(707) 3380798", + "address": "39114 Killdeer Terrace", + "img_id": 6, + "gender": "M" + }, + { + "id": "1701041a-2ede-4c1d-a51b-8fe4b3ec1c35", + "full_name": "Desmond Gritskov", + "job_title": "Pharmacist", + "country": "BR", + "is_online": false, + "rating": 4, + "target": 66, + "budget": 45319, + "phone": "(412) 1336481", + "address": "6912 Farwell Street", + "img_id": 6, + "gender": "M" + }, + { + "id": "609fd74e-e6c3-41ae-a227-d3d9caba0582", + "full_name": "Codee Maybery", + "job_title": "Clinical Specialist", + "country": "US", + "is_online": true, + "rating": 2, + "target": 26, + "budget": 43462, + "phone": "(682) 7969803", + "address": "4 Tennessee Plaza", + "img_id": 3, + "gender": "F" + }, + { + "id": "f535ef7f-c79d-4936-af40-d062d2b2d5c0", + "full_name": "Denys Beynke", + "job_title": "Occupational Therapist", + "country": "BR", + "is_online": true, + "rating": 4, + "target": 60, + "budget": 32402, + "phone": "(110) 4341370", + "address": "99 Trailsway Park", + "img_id": 4, + "gender": "M" + }, + { + "id": "ae126e65-b6ab-4388-ba5c-f6f5d54fc435", + "full_name": "Guthry Limpricht", + "job_title": "Geologist II", + "country": "DE", + "is_online": true, + "rating": 3, + "target": 65, + "budget": 68462, + "phone": "(100) 8946768", + "address": "3117 Commercial Crossing", + "img_id": 2, + "gender": "M" + }, + { + "id": "9b1efdfc-4cce-4350-9516-028884fb1725", + "full_name": "Cammie Knoble", + "job_title": "Community Outreach Specialist", + "country": "GB", + "is_online": false, + "rating": 2, + "target": 1, + "budget": 70198, + "phone": "(352) 1663192", + "address": "55 Longview Place", + "img_id": 4, + "gender": "F" + }, + { + "id": "a44c41e2-3adc-4d52-acb3-06f90e0214c9", + "full_name": "Kiri Espinal", + "job_title": "Accounting Assistant I", + "country": "FR", + "is_online": false, + "rating": 3, + "target": 47, + "budget": 3712, + "phone": "(946) 6686147", + "address": "90480 Chinook Drive", + "img_id": 4, + "gender": "F" + }, + { + "id": "9d6d3063-7be8-49fe-be31-64d0d5949f02", + "full_name": "Joy Tiddy", + "job_title": "Engineer III", + "country": "FR", + "is_online": true, + "rating": 5, + "target": 80, + "budget": 61355, + "phone": "(849) 1097790", + "address": "76 Summerview Hill", + "img_id": 9, + "gender": "F" + }, + { + "id": "44def3bb-7c65-45d3-aef6-bf8b49f934b3", + "full_name": "Arlene Karlsson", + "job_title": "Civil Engineer", + "country": "BR", + "is_online": true, + "rating": 4, + "target": 98, + "budget": 14267, + "phone": "(699) 4713080", + "address": "90 Dorton Point", + "img_id": 5, + "gender": "F" + }, + { + "id": "7b991e13-bef7-4f19-bd18-d5aa9d263cba", + "full_name": "Melony Millwater", + "job_title": "Chief Design Engineer", + "country": "US", + "is_online": true, + "rating": 2, + "target": 27, + "budget": 67126, + "phone": "(352) 5197697", + "address": "65242 Derek Place", + "img_id": 1, + "gender": "F" + }, + { + "id": "ab6704b8-20ed-4881-ab28-96e3d55f7792", + "full_name": "Mab Ballham", + "job_title": "Programmer Analyst II", + "country": "FR", + "is_online": false, + "rating": 1, + "target": 34, + "budget": 65648, + "phone": "(699) 9285470", + "address": "2579 Messerschmidt Crossing", + "img_id": 8, + "gender": "F" + }, + { + "id": "03f0f5a0-8b7c-486e-ae4b-c9e5858bbde8", + "full_name": "Nixie MacAskie", + "job_title": "Structural Analysis Engineer", + "country": "BR", + "is_online": true, + "rating": 2, + "target": 13, + "budget": -5312, + "phone": "(434) 6153212", + "address": "59672 Village Court", + "img_id": 4, + "gender": "F" + }, + { + "id": "6b63462d-b181-4055-813d-983002ea57b8", + "full_name": "Gianni Crafts", + "job_title": "Tax Accountant", + "country": "FR", + "is_online": false, + "rating": 3, + "target": 54, + "budget": 85744, + "phone": "(428) 3135618", + "address": "53766 Buhler Parkway", + "img_id": 8, + "gender": "M" + }, + { + "id": "dcafac96-c436-4232-8d0e-eda10d029e1d", + "full_name": "Moyra Summerlie", + "job_title": "Business Systems Analyst", + "country": "FR", + "is_online": true, + "rating": 5, + "target": 3, + "budget": 19109, + "phone": "(960) 7792763", + "address": "127 Spohn Crossing", + "img_id": 6, + "gender": "F" + }, + { + "id": "a765924f-8ffb-4186-8991-6000a6ce2652", + "full_name": "Hagan Trevers", + "job_title": "Mechanical Systems Engineer", + "country": "FR", + "is_online": false, + "rating": 2, + "target": 93, + "budget": 28290, + "phone": "(749) 8913157", + "address": "516 Clove Road", + "img_id": 7, + "gender": "M" + }, + { + "id": "2c3423dd-81d0-4e41-987e-1c39956c9ba8", + "full_name": "Sela Westmacott", + "job_title": "Account Executive", + "country": "BR", + "is_online": false, + "rating": 3, + "target": 29, + "budget": 58239, + "phone": "(130) 9778509", + "address": "81 Maple Point", + "img_id": 2, + "gender": "F" + }, + { + "id": "e8bce62e-3bf4-4232-801c-bbcc8dab2e74", + "full_name": "Lilia Wiz", + "job_title": "VP Product Management", + "country": "FR", + "is_online": false, + "rating": 1, + "target": 65, + "budget": 1438, + "phone": "(418) 5940094", + "address": "905 Hauk Point", + "img_id": 1, + "gender": "F" + }, + { + "id": "5b9b9235-e0f2-4102-b5f1-d512774e7191", + "full_name": "Orlan MacAlpin", + "job_title": "Statistician I", + "country": "US", + "is_online": false, + "rating": 1, + "target": 1, + "budget": 9094, + "phone": "(512) 7106617", + "address": "6055 Truax Way", + "img_id": 2, + "gender": "M" + }, + { + "id": "1124d1b2-6ac3-4f2f-ba35-1da116844b0e", + "full_name": "Ty Nutton", + "job_title": "Speech Pathologist", + "country": "FR", + "is_online": false, + "rating": 5, + "target": 88, + "budget": 76684, + "phone": "(250) 2530424", + "address": "37247 Merry Plaza", + "img_id": 1, + "gender": "M" + }, + { + "id": "01e7f525-ab3f-48b7-941f-c6ad601ea69f", + "full_name": "Mirelle Jandl", + "job_title": "Civil Engineer", + "country": "DE", + "is_online": true, + "rating": 3, + "target": 19, + "budget": 94486, + "phone": "(871) 7917453", + "address": "31 Anderson Hill", + "img_id": 10, + "gender": "F" + }, + { + "id": "078b38d3-79a5-4df1-bd97-f83e300224a4", + "full_name": "Diann Bertram", + "job_title": "Structural Engineer", + "country": "BR", + "is_online": true, + "rating": 2, + "target": 38, + "budget": 2769, + "phone": "(716) 9445650", + "address": "958 Swallow Drive", + "img_id": 4, + "gender": "F" + }, + { + "id": "7ca6af51-11bc-44f3-b92f-7af02923d040", + "full_name": "Cindra Slobom", + "job_title": "Web Designer III", + "country": "BR", + "is_online": true, + "rating": 5, + "target": 48, + "budget": 81624, + "phone": "(409) 9223432", + "address": "82525 Northridge Junction", + "img_id": 1, + "gender": "F" + }, + { + "id": "86a585e1-b76d-43b5-982d-e74b5b4b616b", + "full_name": "Tymon Mattheissen", + "job_title": "Dental Hygienist", + "country": "FR", + "is_online": false, + "rating": 2, + "target": 51, + "budget": 42972, + "phone": "(724) 3234885", + "address": "64363 Anzinger Plaza", + "img_id": 3, + "gender": "M" + }, + { + "id": "37e366fb-9371-4df5-980c-e9678ec9cde2", + "full_name": "Fancie Heighton", + "job_title": "Paralegal", + "country": "FR", + "is_online": true, + "rating": 5, + "target": 52, + "budget": 67403, + "phone": "(738) 9982239", + "address": "4353 Hermina Junction", + "img_id": 1, + "gender": "F" + }, + { + "id": "b7df7c2a-4d40-4c03-bfb6-ab6d6930340c", + "full_name": "Kit Utteridge", + "job_title": "Office Assistant I", + "country": "FR", + "is_online": true, + "rating": 4, + "target": 93, + "budget": 36268, + "phone": "(710) 2371400", + "address": "46806 Moland Center", + "img_id": 7, + "gender": "F" + }, + { + "id": "7d740468-fad9-4687-895b-cee07aa3bc3d", + "full_name": "Lea Willey", + "job_title": "VP Quality Control", + "country": "US", + "is_online": false, + "rating": 3, + "target": 19, + "budget": 54614, + "phone": "(304) 3327700", + "address": "1 Moland Crossing", + "img_id": 6, + "gender": "F" + }, + { + "id": "88df162f-24fa-495d-a65c-b948607193b8", + "full_name": "Arri Halton", + "job_title": "Staff Accountant II", + "country": "GB", + "is_online": true, + "rating": 5, + "target": 73, + "budget": 32500, + "phone": "(743) 8449571", + "address": "3 Starling Trail", + "img_id": 3, + "gender": "M" + }, + { + "id": "cb93d087-2f15-43cd-9bc3-89716e39a724", + "full_name": "Malva Pierpoint", + "job_title": "Operator", + "country": "US", + "is_online": true, + "rating": 4, + "target": 98, + "budget": 20312, + "phone": "(423) 8195288", + "address": "57584 Algoma Plaza", + "img_id": 1, + "gender": "F" + }, + { + "id": "b76e54a1-1c46-49aa-9464-7dd9aa738b65", + "full_name": "Dalston Sabben", + "job_title": "Social Worker", + "country": "BR", + "is_online": true, + "rating": 4, + "target": 85, + "budget": 99048, + "phone": "(388) 2523908", + "address": "53578 Clove Lane", + "img_id": 4, + "gender": "M" + }, + { + "id": "608f098b-16f8-4460-bb35-9599a8a74280", + "full_name": "Delinda Margrie", + "job_title": "Financial Advisor", + "country": "US", + "is_online": false, + "rating": 1, + "target": 1, + "budget": 8398, + "phone": "(702) 6480692", + "address": "9 Dapin Plaza", + "img_id": 9, + "gender": "F" + }, + { + "id": "23b426f8-76d5-4808-84cb-c42bde8362fd", + "full_name": "Meggi Westman", + "job_title": "Librarian", + "country": "US", + "is_online": true, + "rating": 3, + "target": 64, + "budget": 63413, + "phone": "(682) 3495155", + "address": "82 Duke Terrace", + "img_id": 7, + "gender": "F" + }, + { + "id": "7ecfb74e-64d9-43ee-a028-d2e3841acba9", + "full_name": "Bret Barnsdall", + "job_title": "Registered Nurse", + "country": "BR", + "is_online": true, + "rating": 3, + "target": 52, + "budget": 55153, + "phone": "(222) 2089814", + "address": "4 Corry Park", + "img_id": 8, + "gender": "M" + }, + { + "id": "cf505561-d9e1-4d2a-93d5-4745d50595c2", + "full_name": "Matthus Shyres", + "job_title": "Marketing Manager", + "country": "FR", + "is_online": false, + "rating": 3, + "target": 68, + "budget": 33697, + "phone": "(539) 9486139", + "address": "460 Norway Maple Junction", + "img_id": 1, + "gender": "M" + } + ] + \ No newline at end of file diff --git a/vue-options-api-demos/grid/basic/en-US.js b/vue-options-api-demos/grid/basic/en-US.js new file mode 100644 index 00000000..e4496d1f --- /dev/null +++ b/vue-options-api-demos/grid/basic/en-US.js @@ -0,0 +1,297 @@ +// Custom Messages +export const enCustomMessages = { + teamEfficiency: "Team Efficiency", + teamMembers: "Team Members", + dashboard: "Dashboard", + planning: "Planning", + profile: "Profile", + info: "Info", + language: "Language", + trend: "Trend", + volume: "Volume", + myTeam: "My Team", + allTeams: "All Teams", + teamCalendar: "Team Calendar", + saveChanges: "Save Changes", + cancel: "Cancel", + warehouse: "Coffee Warehouse", + startFreeTrial: "Start Free Trial", + buyNow: "Buy Now", + getSource: "Get the source code on GitHub", + demoInfo: + "This demo application is built using the following Kendo UI for Vue components.", + firstName: "First Name", + middleName: "Middle Name", + lastName: "Last Name", + email: "Email Address", + phoneNumber: "Phone Number", + country: "Country", + biography: "Short Biography", + public: "Include in public directory", + team: "Team", + employee: "Employee", + contactName: "Contact Name", + jobTitle: "Job Title", + status: "Status", + performance: "Performance", + rating: "Rating", + engagement: "Engagement", + budget: "Budget", + contacts: "Contacts", + address: "Address", + phone: "Phone", + gridSearch: "Search in all columns...", + exportExcel: "Export to Excel", + exportPdf: "Export to PDF" +}; + +// Kendo Component Messages +export const enComponentMessages = { + // Grid + "kendo.grid.groupPanelEmpty": + "Drag a column header and drop it here to group by that column", + "kendo.grid.noRecords": "No records available.", + "kendo.grid.pagerFirstPage": "Go to the first page", + "kendo.grid.pagerPreviousPage": "Go to the previous page", + "kendo.grid.pagerNextPage": "Go to the next page", + "kendo.grid.pagerLastPage": "Go to the last page", + "kendo.grid.pagerPage": "Page", + "kendo.grid.pagerOf": "of", + "kendo.grid.pagerItems": "items", + "kendo.grid.pagerItemsPerPage": "items per page", + "kendo.grid.pagerPageNumberInputTitle": "Page Number", + "kendo.grid.filter": "Filter", + "kendo.grid.filterEqOperator": "Is equal to", + "kendo.grid.filterNotEqOperator": "Is not equal to", + "kendo.grid.filterIsNullOperator": "Is null", + "kendo.grid.filterIsNotNullOperator": "Is not null", + "kendo.grid.filterIsEmptyOperator": "Is empty", + "kendo.grid.filterIsNotEmptyOperator": "Is not empty", + "kendo.grid.filterStartsWithOperator": "Starts with", + "kendo.grid.filterContainsOperator": "Contains", + "kendo.grid.filterNotContainsOperator": "Does not contain", + "kendo.grid.filterEndsWithOperator": "Ends with", + "kendo.grid.filterGteOperator": "Is greater than or equal to", + "kendo.grid.filterGtOperator": "Is greater than", + "kendo.grid.filterLteOperator": "Is less than or equal to", + "kendo.grid.filterLtOperator": "Is less than", + "kendo.grid.filterIsTrue": "is true", + "kendo.grid.filterIsFalse": "is false", + "kendo.grid.filterBooleanAll": "(All)", + "kendo.grid.filterAfterOrEqualOperator": "Is after or equal to", + "kendo.grid.filterAfterOperator": "Is after", + "kendo.grid.filterBeforeOperator": "Is before", + "kendo.grid.filterBeforeOrEqualOperator": "Is before or equal to", + "kendo.grid.filterFilterButton": "Filter", + "kendo.grid.filterClearButton": "Clear", + "kendo.grid.filterAndLogic": "And", + "kendo.grid.filterOrLogic": "Or", + "kendo.grid.filterDateToggle": "Toggle calendar", + "kendo.grid.filterDateToday": "Today", + "kendo.grid.filterNumericDecrement": "Decrease value", + "kendo.grid.filterNumericIncrement": "Increase value", + "kendo.grid.loading": "Loading", + "kendo.grid.sort": "Sort", + "kendo.grid.columnMenu": "Column Menu", + "kendo.grid.columns": "Columns", + "kendo.grid.lock": "Lock", + "kendo.grid.unlock": "Unlock", + "kendo.grid.stick": "Stick", + "kendo.grid.unstick": "Unstick", + "kendo.grid.setColumnPosition": "Set Column Position", + "kendo.grid.sortAscending": "Sort Ascending", + "kendo.grid.sortDescending": "Sort Descending", + "kendo.grid.columnsApply": "Apply", + "kendo.grid.columnsReset": "Reset", + "kendo.grid.sortable": "Sortable", + "kendo.grid.sortedAscending": "Sorted ascending", + "kendo.grid.sortedDescending": "Sorted descending", + "kendo.grid.sortedDefault": "Not sorted", + + // DropDowns + "kendo.autocomplete.noDataText": "No data found", + "kendo.autocomplete.clearTitle": "Clear", + "kendo.combobox.noDataText": "No data found", + "kendo.combobox.clearTitle": "Clear", + "kendo.dropdownlist.noDataText": "No data found", + "kendo.dropdownlist.clearTitle": "Clear", + + // Calendar + "kendo.calendar.today": "TODAY", + + // TextBox + "kendo.textbox.clearTitle": "Clear", + + // DatePicker + "kendo.datepicker.today": "TODAY", + "kendo.datepicker.toggle": "Toggle calendar", + + // DateInput + "kendo.dateinput.increment": "Increase value", + "kendo.dateinput.decrement": "Decrease value", + + // NumericTextBox + "kendo.numerictextbox.increment": "Increase value", + "kendo.numerictextbox.decrement": "Decrease value", + + // DateTimePicker + "kendo.datetimepicker.dateTab": "Date", + "kendo.datetimepicker.dateTabLabel": "Date tab", + "kendo.datetimepicker.timeTab": "Time", + "kendo.datetimepicker.timeTabLabel": "Time tab", + "kendo.datetimepicker.toggle": "Toggle popup", + "kendo.datetimepicker.accept": "Set", + "kendo.datetimepicker.acceptLabel": "Set", + "kendo.datetimepicker.cancel": "Cancel", + "kendo.datetimepicker.cancelLabel": "Cancel", + "kendo.datetimepicker.now": "NOW", + "kendo.datetimepicker.nowLabel": "Select now", + "kendo.datetimepicker.today": "TODAY", + "kendo.datetimepicker.prevButtonTitle": "Navigate to previous view", + "kendo.datetimepicker.nextButtonTitle": "Navigate to next view", + + // TimePicker + "kendo.timepicker.accept": "Set", + "kendo.timepicker.acceptLabel": "Set", + "kendo.timepicker.cancel": "Cancel", + "kendo.timepicker.cancelLabel": "Cancel", + "kendo.timepicker.now": "Now", + "kendo.timepicker.nowLabel": "Now", + "kendo.timepicker.toggle": "Toggle time list", + + // FileSelect + "kendo.fileselect.cancel": "Cancel", + "kendo.fileselect.clearSelectedFiles": "Clear", + "kendo.fileselect.dropFilesHere": "Drop files here to upload", + "kendo.fileselect.externalDropFilesHere": + "Drag and drop files here to upload", + "kendo.fileselect.filesBatchStatus": "files", + "kendo.fileselect.filesBatchStatusFailed": "files failed to upload.", + "kendo.fileselect.filesBatchStatusUploaded": "files successfully uploaded.", + "kendo.fileselect.fileStatusFailed": "File failed to upload.", + "kendo.fileselect.fileStatusUploaded": "File successfully uploaded.", + "kendo.fileselect.headerStatusPaused": "Paused", + "kendo.fileselect.headerStatusUploaded": "Done", + "kendo.fileselect.headerStatusUploading": "Uploading...", + "kendo.fileselect.invalidFileExtension": "File type not allowed.", + "kendo.fileselect.invalidMaxFileSize": "File size too large.", + "kendo.fileselect.invalidMinFileSize": "File size too small.", + "kendo.fileselect.remove": "Remove", + "kendo.fileselect.retry": "Retry", + "kendo.fileselect.select": "Select files...", + "kendo.fileselect.uploadSelectedFiles": "Upload files", + + // Scheduler + "kendo.scheduler.agendaViewTitle": "Agenda", + "kendo.scheduler.allDay": "all day", + "kendo.scheduler.allEvents": "All events", + "kendo.scheduler.calendarToday": "TODAY", + "kendo.scheduler.cancel": "Cancel", + "kendo.scheduler.save": "Save", + "kendo.scheduler.editorEventTitle": "Title", + "kendo.scheduler.editorEventStart": "Start", + "kendo.scheduler.editorEventStartTimeZone": "Start Time Zone", + "kendo.scheduler.editorEventEnd": "End", + "kendo.scheduler.editorEventEndTimeZone": "End Time Zone", + "kendo.scheduler.dateHeader": "Date", + "kendo.scheduler.dayViewTitle": "Day", + "kendo.scheduler.deleteConfirmation": + "Are you sure you want to delete this event?", + "kendo.scheduler.deleteDialogTitle": "Delete Event", + "kendo.scheduler.deleteOccurrence": "Delete current occurrence", + "kendo.scheduler.deleteRecurringConfirmation": + "Do you want to delete only this event occurrence or the whole series?", + "kendo.scheduler.deleteRecurringDialogTitle": "Delete Recurring Item", + "kendo.scheduler.deleteSeries": "Delete the series", + "kendo.scheduler.deleteTitle": "Delete", + "kendo.scheduler.destroy": "Delete", + "kendo.scheduler.editOccurrence": "Edit current occurrence", + "kendo.scheduler.editorEventAllDay": "All Day Event", + "kendo.scheduler.editorEventDescription": "Description", + "kendo.scheduler.editorEventSeparateTimeZones": "End in different Time Zone", + "kendo.scheduler.editorEventTimeZone": "Specify Time Zone", + "kendo.scheduler.editorTitle": "Event", + "kendo.scheduler.editRecurringConfirmation": + "Do you want to edit only this event occurrence or the whole series?", + "kendo.scheduler.editRecurringDialogTitle": "Edit Recurring Item", + "kendo.scheduler.editSeries": "Edit the series", + "kendo.scheduler.eventHeader": "Event", + "kendo.scheduler.monthViewTitle": "Month", + "kendo.scheduler.multiDayViewTitle": "Multi-Day", + "kendo.scheduler.nextTitle": "Next", + "kendo.scheduler.previousTitle": "Previous", + "kendo.scheduler.recurrenceEditorDailyInterval": "day(s)", + "kendo.scheduler.recurrenceEditorDailyRepeatEvery": "Repeat every", + "kendo.scheduler.recurrenceEditorEndAfter": "After", + "kendo.scheduler.recurrenceEditorEndLabel": "End", + "kendo.scheduler.recurrenceEditorEndNever": "Never", + "kendo.scheduler.recurrenceEditorEndOccurrence": "occurrence(s)", + "kendo.scheduler.recurrenceEditorEndOn": "On", + "kendo.scheduler.recurrenceEditorFrequenciesDaily": "Daily", + "kendo.scheduler.recurrenceEditorFrequenciesMonthly": "Monthly", + "kendo.scheduler.recurrenceEditorFrequenciesNever": "Never", + "kendo.scheduler.recurrenceEditorFrequenciesWeekly": "Weekly", + "kendo.scheduler.recurrenceEditorFrequenciesYearly": "Yearly", + "kendo.scheduler.recurrenceEditorMonthlyDay": "Day", + "kendo.scheduler.recurrenceEditorMonthlyInterval": "month(s)", + "kendo.scheduler.recurrenceEditorMonthlyRepeatEvery": "Repeat every", + "kendo.scheduler.recurrenceEditorMonthlyRepeatOn": "Repeat on", + "kendo.scheduler.recurrenceEditorOffsetPositionsFirst": "First", + "kendo.scheduler.recurrenceEditorOffsetPositionsFourth": "Fourth", + "kendo.scheduler.recurrenceEditorOffsetPositionsLast": "Last", + "kendo.scheduler.recurrenceEditorOffsetPositionsSecond": "Second", + "kendo.scheduler.recurrenceEditorOffsetPositionsThird": "Third", + "kendo.scheduler.recurrenceEditorRepeat": "Repeat", + "kendo.scheduler.recurrenceEditorWeekdaysDay": "Day", + "kendo.scheduler.recurrenceEditorWeekdaysWeekday": "Weekday", + "kendo.scheduler.recurrenceEditorWeekdaysWeekendday": "Weekend Day", + "kendo.scheduler.recurrenceEditorWeeklyInterval": "week(s)", + "kendo.scheduler.recurrenceEditorWeeklyRepeatEvery": "Repeat every", + "kendo.scheduler.recurrenceEditorWeeklyRepeatOn": "Repeat on", + "kendo.scheduler.recurrenceEditorYearlyInterval": "year(s)", + "kendo.scheduler.recurrenceEditorYearlyOf": "of", + "kendo.scheduler.recurrenceEditorYearlyRepeatEvery": "Repeat every", + "kendo.scheduler.recurrenceEditorYearlyRepeatOn": "Repeat on", + "kendo.scheduler.showFullDay": "Show full day", + "kendo.scheduler.showWorkDay": "Show business hours", + "kendo.scheduler.timeHeader": "Time", + "kendo.scheduler.timelineMonthViewTitle": "Timeline Month", + "kendo.scheduler.timelineViewTitle": "Timeline", + "kendo.scheduler.timelineWeekViewTitle": "Timeline Week", + "kendo.scheduler.today": "Today", + "kendo.scheduler.weekViewTitle": "Week", + "kendo.scheduler.workWeekViewTitle": "Work Week", + + // RecurrenceEditor + "kendo.recurrenceeditor.dailyInterval": "day(s)", + "kendo.recurrenceeditor.dailyRepeatEvery": "Repeat every", + "kendo.recurrenceeditor.endAfter": "After", + "kendo.recurrenceeditor.endLabel": "End", + "kendo.recurrenceeditor.endNever": "Never", + "kendo.recurrenceeditor.endOccurrence": "occurrence(s)", + "kendo.recurrenceeditor.endOn": "On", + "kendo.recurrenceeditor.frequenciesDaily": "Daily", + "kendo.recurrenceeditor.frequenciesMonthly": "Monthly", + "kendo.recurrenceeditor.frequenciesNever": "Never", + "kendo.recurrenceeditor.frequenciesWeekly": "Weekly", + "kendo.recurrenceeditor.frequenciesYearly": "Yearly", + "kendo.recurrenceeditor.monthlyDay": "Day", + "kendo.recurrenceeditor.monthlyInterval": "month(s)", + "kendo.recurrenceeditor.monthlyRepeatEvery": "Repeat every", + "kendo.recurrenceeditor.monthlyRepeatOn": "Repeat on", + "kendo.recurrenceeditor.offsetPositionsFourth": "Fourth", + "kendo.recurrenceeditor.offsetPositionsLast": "Last", + "kendo.recurrenceeditor.offsetPositionsSecond": "Second", + "kendo.recurrenceeditor.offsetPositionsThird": "Third", + "kendo.recurrenceeditor.repeat": "Repeat", + "kendo.recurrenceeditor.weekdaysDay": "Day", + "kendo.recurrenceeditor.weekdaysWeekday": "Weekday", + "kendo.recurrenceeditor.weekdaysWeekendday": "Weekend Day", + "kendo.recurrenceeditor.weeklyInterval": "week(s)", + "kendo.recurrenceeditor.weeklyRepeatEvery": "Repeat every", + "kendo.recurrenceeditor.weeklyRepeatOn": "Repeat on", + "kendo.recurrenceeditor.yearlyInterval": "year(s)", + "kendo.recurrenceeditor.yearlyOf": "of", + "kendo.recurrenceeditor.yearlyRepeatEvery": "Repeat every", + "kendo.recurrenceeditor.yearlyRepeatOn": "Repeat on" +}; diff --git a/vue-options-api-demos/grid/basic/es.js b/vue-options-api-demos/grid/basic/es.js new file mode 100644 index 00000000..ce6e3fab --- /dev/null +++ b/vue-options-api-demos/grid/basic/es.js @@ -0,0 +1,122 @@ +// Custom Messages +export const esCustomMessages = { + teamEfficiency: "Eficiencia del equipo", + teamMembers: "Miembros del equipo", + dashboard: "Tablero", + planning: "Planificación", + info: "Informacion", + profile: "Perfil", + language: "Idioma", + trend: "Tendencia", + volume: "Volumen", + myTeam: "Mi equipo", + allTeams: "Todos los equipos", + teamCalendar: "Calendario del equipo", + saveChanges: "Guardar cambios", + cancel: "Cancelar", + warehouse: "Almacén De Café", + startFreeTrial: "Iniciar prueba gratuita", + buyNow: "Comprar ahora", + getSource: "Obtenga el código fuente en GitHub", + demoInfo: + "Esta aplicación de demostración está construida utilizando los siguientes componentes de Kendo UI for Vue.", + firstName: "Primer nombre", + middleName: "Segundo nombre", + lastName: "Apellido", + email: "Dirección de correo electrónico", + phoneNumber: "Número de teléfono", + country: "País", + biography: "Biografía corta", + public: "Incluir en directorio público", + team: "Equipo", + employee: "Empleado", + contactName: "Nombre de contacto", + jobTitle: "Título del trabajo", + status: "Estado", + performance: "Rendimiento", + rating: "Clasificación", + engagement: "Compromiso", + budget: "Presupuesto", + contacts: "Contactos", + address: "Dirección", + phone: "Teléfono", + gridSearch: "Buscar en todas las columnas ...", + exportExcel: "Exportar a Excel", + exportPdf: "Exportar a PDF" +}; + +// Kendo Vue Component Messages +export const esComponentMessages = { + datepicker: { + toggleCalendar: "Alternar calendario" + }, + calendar: { + today: "Hoy" + }, + dateinput: { + increment: "Incrementar valor", + decrement: "Disminuir valor" + }, + datetimepicker: { + date: "Fecha", + time: "Hora", + cancel: "Cancelar", + set: "Establecer" + }, + numerictextbox: { + increment: "Incrementar valor", + decrement: "Disminuir valor" + }, + timepicker: { + now: "AHORA", + set: "Establecer", + cancel: "Cancelar" + }, + grid: { + groupPanelEmpty: + "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio", + noRecords: "No hay datos disponibles.", + pagerFirstPage: "Ir a la primera página", + pagerPreviousPage: "Ir a la página anterior", + pagerNextPage: "Ir a la página siguiente", + pagerLastPage: "Ir a la última página", + pagerPage: "Página", + pagerOf: "de", + pagerItems: "ítems", + pagerInfo: "{0} - {1} de {2} ítems", + pagerItemsPerPage: "ítems por página", + filterEqOperator: "Es igual a", + filterNotEqOperator: "No es igual a", + filterIsNullOperator: "Es nulo", + filterIsNotNullOperator: "No es nulo", + filterIsEmptyOperator: "Está vacío", + filterIsNotEmptyOperator: "No está vacío", + filterStartsWithOperator: "Comienza con", + filterContainsOperator: "Contiene", + filterNotContainsOperator: "No contiene", + filterEndsWithOperator: "Termina en", + filterGteOperator: "Es mayor o igual que", + filterGtOperator: "Es mayor que", + filterLteOperator: "Es menor o igual que", + filterLtOperator: "Es menor o igual que", + filterIsTrue: "Sí", + filterIsFalse: "No", + filterBooleanAll: "(Todas)", + filterAfterOrEqualOperator: "Es posterior o igual a", + filterAfterOperator: "Es posterior", + filterBeforeOperator: "Es anterior", + filterBeforeOrEqualOperator: "Es anterior o igual a", + filterSubmitButton: "Filtrar", + filterClearButton: "Limpiar", + filterAndLogic: "Y", + filterOrLogic: "O", + filterTitle: "Filtros", + sortAscending: "Orden ascendente", + sortDescending: "Orden descendente" + }, + upload: { + cancel: "Cancelar", + dropFilesHere: "Arrastre los archivos aquí para subirlos", + select: "Seleccione..." + } +}; diff --git a/vue-options-api-demos/grid/basic/fr.js b/vue-options-api-demos/grid/basic/fr.js new file mode 100644 index 00000000..83cdcbf5 --- /dev/null +++ b/vue-options-api-demos/grid/basic/fr.js @@ -0,0 +1,123 @@ +// Custom Messages +export const frCustomMessages = { + teamEfficiency: "Efficacité de l'équipe", + teamMembers: "Membres de l'équipe", + dashboard: "Tableau de bord", + planning: "Planification", + info: "Info", + profile: "Profil", + language: "Langue", + trend: "Tendance", + volume: "Le volume", + myTeam: "Mon équipe", + allTeams: "Toutes les équipes", + teamCalendar: "Calendrier d'équipe", + saveChanges: "Sauvegarder les modifications", + cancel: "Annuler", + warehouse: "Entrepôt De Café", + startFreeTrial: "Démarrer l'essai gratuit", + buyNow: "Acheter maintenant", + getSource: "Récupérer le code source sur GitHub", + demoInfo: + "Cette application de démonstration est construite à l'aide des composants Kendo UI for Vue.", + firstName: "Prénom", + middleName: "Deuxième nom", + lastName: "Nom de famille", + email: "Adresse e-mail", + phoneNumber: "Numéro de téléphone", + country: "Pays", + biography: "Biographie courte", + public: "Inclure dans le répertoire public", + team: "Équipe", + employee: "Employé", + contactName: "Nom du contact", + jobTitle: "Titre du poste", + status: "Statut", + performance: "Performance", + rating: "Évaluation", + engagement: "Engagement", + budget: "Budget", + contacts: "Contacts", + address: "Adresse", + phone: "Téléphone", + gridSearch: "Rechercher dans toutes les colonnes ...", + exportExcel: "Exporter vers Excel", + exportPdf: "Exporter au format PDF" +}; + +export const frComponentMessages = { + grid: { + groupPanelEmpty: + "Faites glisser un en-tête de colonne et déposez-le ici pour grouper par cette colonne", + pagerItemsPerPage: "éléments par page", + pagerInfo: "{0} - {1} sur {2} éléments", + pagerFirstPage: "Aller à la première page", + pagerPreviousPage: "Aller à la page précédente", + pagerNextPage: "Aller à la page suivante", + pagerLastPage: "Aller à la dernière page", + pagerPage: "Page", + pagerOf: "de", + filterClearButton: "Effacer", + filterEqOperator: "Est égal à", + filterNotEqOperator: "N'est pas égal à", + filterIsNullOperator: "Est nulle", + filterIsNotNullOperator: "Est non nulle", + filterIsEmptyOperator: "Est vide", + filterIsNotEmptyOperator: "N'est pas vide", + filterStartsWithOperator: "Commence par", + filterContainsOperator: "Contient", + filterNotContainsOperator: "Ne contient pas", + filterEndsWithOperator: "Se termine par", + filterGteOperator: "Est supérieur ou égal à", + filterGtOperator: "Est supérieur à", + filterLteOperator: "Est inférieur ou égal à", + filterLtOperator: "Est inférieur à", + filterIsTrue: "Est vrai", + filterIsFalse: "Est faux", + filterBooleanAll: "(Tous)", + filterAfterOrEqualOperator: "Est postérieur ou égal à", + filterAfterOperator: "Est postérieur", + filterBeforeOperator: "Est antérieur", + filterBeforeOrEqualOperator: "Est antérieur ou égal à", + noRecords: "Aucun enregistrement disponible." + }, + dateinput: { + increment: "Augmenter la valeur", + decrement: "Diminuer la valeur" + }, + calendar: { + today: "AUJOURD'HUI" + }, + datepicker: { + toggleCalendar: "Basculer le calendrier" + }, + dropdowns: { + nodata: "AUCUNE DONNÉE DISPONIBLE.", + clear: "Effacer" + }, + numerictextbox: { + increment: "Augmenter la valeur", + decrement: "Diminuer la valeur" + }, + upload: { + cancel: "Cancel", + clearSelectedFiles: "Effacer", + dropFilesHere: "Déposer des fichiers ici pour télécharger", + headerStatusUploaded: "Terminé", + headerStatusUploading: "Téléchargement...", + invalidFileExtension: "Type de fichier non autorisé.", + invalidFiles: + "Fichier(s) invalide(s). Veuillez vérifier les exigences de téléchargement de fichier.", + invalidMaxFileSize: "La taille du fichier est trop grande.", + invalidMinFileSize: "La taille du fichier est trop petite.", + remove: "Retirer", + retry: "Réessayez", + select: "Sélectionnez les fichiers...", + uploadSelectedFiles: "Télécharger", + total: "Total", + files: "fichiers" + }, + sortable: { + noData: "Aucune donnée" + } +}; diff --git a/vue-options-api-demos/grid/basic/images.js b/vue-options-api-demos/grid/basic/images.js new file mode 100644 index 00000000..5b2915f9 --- /dev/null +++ b/vue-options-api-demos/grid/basic/images.js @@ -0,0 +1,79 @@ +export const images = { + "10F": + "url('data:image/jpeg;base64,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')", + + "10M": + "url('data:image/jpeg;base64,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')", + + "1F": + "url('data:image/jpeg;base64,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')", + + "1M": + "url('data:image/jpeg;base64,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')", + + "2F": + "url('data:image/jpeg;base64,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')", + + "2M": + "url('data:image/jpeg;base64,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')", + + "3F": + "url('data:image/jpeg;base64,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')", + + "3M": + "url('data:image/jpeg;base64,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')", + + "4F": + "url('data:image/jpeg;base64,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')", + + "4M": + "url('data:image/jpeg;base64,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')", + + "5F": + "url('data:image/jpeg;base64,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')", + + "5M": + "url('data:image/jpeg;base64,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')", + + "6F": + "url('data:image/jpeg;base64,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')", + + "6M": + "url('data:image/jpeg;base64,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')", + + "7F": + "url('data:image/jpeg;base64,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')", + + "7M": + "url('data:image/jpeg;base64,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')", + + "8F": + "url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAAEASABIAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/2wCEAAUFBQgFCAwHBwwMCQkJDA0MDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0BBQgICgcKDAcHDA0MCgwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/AABEIAG4AZAMBEQACEQEDEQH/2gAMAwEAAhEDEQA/AOV+PXiefV9cfSkceRZ4RQOivtDSMfU5yCfRFHrWEneXkjsiuWPm/wCkeLwFUZVIJL/LHhdzbRwWGSMZxjdlejY98X/w5stPXod7p+mS3ZWOFW6AFQMjLZ/ixhgP4sE7ievTHK2d0VZaHvPhD4aQxKJrtTIxG4qcjPoCMYA9cHGBjGOKxcuiN0lHWR65HoVsowI0GP8AZHXpn8BwPQcVnqw9py7EsWi28JyEAPrikl3H7Z9LIu/Y0AwABkY6darVbGftH1OX1jwvbXiH5ApIIyB6jB/z2NNScdzVNT06nzv4z8Di0jaVVPA4VeB17nOT26DrW8ZprQzlTs9T5y1O1e3umXnCnA4I6dh0x+FdyaSseVKL5rl+3iMwG9XZTxlSQw9x0BI9Dyf7w5Bi9vIfLc29O3afOpD70ZhnjOVB+8VOV3DlSp9SMYNWmTax9TeFJbOCxUQ3AhVjv2ebJtUsqEhfkyFz0B+7yB8oBrojZIyk3c+evH8MsWv6jLeKY2eckDB3FXy/Xj+AbiffgYNYyVrlR6Efh3SG1BonZduQFBHAVc57g9e/fGB3IPBUlbRHp0oaJ9T6s8G+FbeyVZiuWwMFuf8AP0rkcjsa5UesxRjGBxVxVzzpSsWBFit+Qy5hrR0uUal2I2GOOwrN6ehoiFl3cdqVrmifKcdr2mJexmPHXt/nrWHwvQ9KPvRsz5c8W+EUtp2lZCFzn2Oev+f511KTZzOCRwNwIIDsEbRbjgNnerez7VHHpndj2raPk/kckrLS3z/4Yp2EyrMEQch+U9eQcq2QMZAw2RjoQV69MdDldtrWPu3wlo2j3elW/wBtggeaFDCwuI0EqeWzAIwbkYGMD0IxXckrbHE209Dx/wDaE0yGO6sboqqy3AmDBerhBEoBPHZlUnvxjgGuerojairuxkfDzSVvbpYRysQyT2J9v5/SvDlq/I+gh7quz6btrdYFCrwAMVkZTk5GnE2K6YOxxSRb3Cum6MLWEL54o5r6AlYqucVgzoiiAy44pc1jRRKEy7ulYvyOuDscV4l0dLq3Y4+bBqo6aGktdUfIHiq1awmaI/JnJG3j2I+XA+n5dhnsgedU0K3w5s5NW8QWlkwMqmTzBg/wxq0jckgEAKcg8nkDJxXbFaqxwOVk0/kfonZ6NHZoUTABOcEZxgBQAcg4CqAB0HRcKAB2bHIfPn7RSMsmmyn/AFai6x7uPJYL7cDPvg9wK5a2yOqhuX/hHpvk2RuyOZTgH2AH9ePwrwJPWx7+0LntAwKRzFlK3ijFlxE44rrjHQ5m7MjKkGps0WmiFuTWTNVoQsgHNTymib2KcjqOKzdkdEUzF1P50IFZN9jrgtNT5X+KFgQGcDkD8j1yP1/SuulLVHFXhZM5D4K34t/GOnCXAEjSx+257eVR6feYgfj36V60N7o8Ke1mfo6K6TA8H/aA04XekQT9DazMw467oypGe3GT+Fc9X4fmdNHSRa+GbqPD9tIMYKt+jsP0xXz8lZt+Z9D8Sil2Otku5C2YxkDpXOm+h0qnFK0twGtPbYWdMZ79h+Nae0cdGiXhYz96EjoLO+WVdycg12QqaXR5dWi4OzLckvy8Vq56GEYWdihNOIwWY4ArmbsdcIOWkTBl1h5G2RAY6f57Vi5vZHpRw8YK8nr+A1fOmB8z5TS1e+hV4QtymVc3iofKc4Y9Pepv0NuXS6PGfibCHgD9AwZT9QMj+R/A10U9HocVVXjc+bfCV3Jpet2l7GNzWlzHKF/vbZVJX/gWSuexOe1e0naz9D5txu2vU/U6NgygjoRkfjXYcp5l8WNFuda0ow24ZsHJAPGenIyM5UkA84PHevPxHNHlkr8uz7K+1z1sIoTjODsqmjjfdpbpPo/LqvQ5r4e2htvDdtDLkld5PbP7xiBXj1fwuetSurW7Ec3jG8kuZbHRLXzHgR2kkkOxF2jtxucg8YUHnjjrWlGm5bWQqzjBXmnL8jAi8T65qNyLdooZCY4pPlU7G8xmXYrNwXAAcgsvyndnBGLdNN2TV9dHbp3XTyOeniVGyUZJO2qb69v1PR9HuG8sNtMZzhk7Z747j6dv1rktybad0enNc6s9dLp9fmdmnzR5rpjrE8Z+7Oxxl/O93KYUyETlscFvbPYeprB3eh7EEqa82cfqNnqc1uZ4nFpa+aiB4wfMx1Eg6EKGAALE7yQQqj73TCl7vP8Ah5dzjxFf2b9mt+rfTy/zOJt5fEEqfaDevBJGm54pgrR7/MZY4yykNmWNd+ASVHBB61qqUHFyd12eqv8AJ3OWnXqSlyxStbbR2+aO/wDD7X2oxB9TRRKhIJHKt/tL7HsOvrzmvPkrO3Q9lPTszlviHYiaxlUDmM7l/l/Imrg7NGVRe60eB+A9Ga4vo7lo98RkVAx52sx8zjp8w2DnsD6kV2Vqjgoxj3Msvw0arq1J7Rjp63/yP0WgBEahuoAz9cc17i2Pknu7bXY68TfE6+qn+VZzXNCS8ma0ny1Iv+8jzywtVsYRbj5UVpMAdhvOP0xXzU1pY+qStql2LLaPazlWZcFfusuQwJ6kMCCCe/50QbhtoZSqOzTs+6f+Rl/8IdZW0gnikmVhuwqyyYy2c4G7AyCQfUcHiutzb1v69zCHKnf2cVbr0Ne308WijOR/vHJOOh556cVyS3vr8zsdXm92NreSta+/4mrBKfKI9K1htZHHOPvmJYKryNuwQxIPuDURtfXud9VOKutHo/uLJ0C2DEjcobqFY4x6cnoe/rXZZL4XY4nWcviSb7tEMHh6xsDut4QGweQMnnr7An9eM1lKQKd9NEvuX4FuXZaJtRdp/I/4VzS09TWCc3vp+B5Z4lQS2tyG4HlSH8lJ/TFRDdHfJWTv2Oc+FOmGaOG0ZAI43SQnHVhhmP12jb+Arvpr2tVReyd/u1Jqf7HheaOkpRd/WSt+F/wPqdRxXvHw5O44xSA4LUofs85QdOo+hr53EQ5JuK23XofXYaftKam99n6o0LB9gx2rOnpoctdXZbchMsR+FbtJatHPFXsk/mZcshYkn8q5pO7O+EUlZEkRJQjtWsUTJWZj2xCSMM45yKy2bR31FeKfkdFFlR1yK1Wh5MrdNPwHBscAU0uxFur0MfUj1zxxWU1a56OH8jzTVovtscsBOBKrIT6Bhgn8jms4I7p9jtvAeirZRmZBtjA2Rj1/vMfU8BQf94V7WFp8qdTvov1PEzOvzctG+vxS8uy/X7j05RxXonzhO4pIDitcG24U/wCyP5mvGxa99en+Z9LgdaTXaT/JDLWbZx2rhi7G1WF9Sa61IRjYg+Y8D1rSVXSyMqWHu+aWyMttxJJ5rOx3qyVloXoAyJyDg1rtscs7OWm6MO6QRTg/3geKykrM9Gm+aOm6HaTfuC8bnKK+FPsef0JIqU+Uzr0lL3oqz6nRC4xyK6FKx5jp9DC1S5DKT3rCbuelQhyHHRWjXcqwJgNIwXJ6DPU/gPzq6UeaSguuhdafsoOp/Lqe0WVulrGsMYwiKFA9h/U9/U19OkopRjsj4icnUk5y1bd2aQFIglbpSWgHI+II/mRx6Efkc/1rycYrcsvJo+gy+Wk4+af3/wDDGNEDivKPVlYrwJ50jO5AKnAH60lG7uaTlyRUIrdXZopEJD6YrVX6HK5ciJzDcRfKmCvbn+db2ZkpU5ay0foYf9lSSymSd8/7I6Y+tZpdzs9tFK0NF06E8r29kmZGSNR1JIAxQ1YIqdR+6mxlnOLtRJAweNs7SDkcdeelRtp0KqR9npNWel/nsyO9gGMHrUSLpyv6GfpUOdRiUdiWP4KT/OurCq9WPld/gcuNly0ZL0X4o9WiGBX0TPjSekMnNIDF1e28+E7fvJ8w/r+n8q5cRT9pTdt1qjvwlT2VVX2lo/0/E5iAflXzx9DP8TI8RaImo2jeUTFPEfMjkQkMpxg4I5II4I6EVrDZrqbYaty1FGp8Elyvy7P1KnhORNVjENxI8F5EQsm1tqykLkvGjM52kkA55BBGMYJuDvLlehri1WwfxxjVg17snFa9tVaz30udidFvGC4um5OG+RTgeoP+NdnI3Z3/AAPJWLoRcr0Forr3pK77Nf5Fa50hLXe1zdSkKN+0ELlB97hRuPf7vPTHNS4ct7vzNIYtzsqVCCvdN2bs+nxO3bc8T8QaMnibVI7S2Ui1tZd5kLF/OLKjLkkltsR3cH7zY7A55ldXXXv2R9HQhKUPreMk/ZRV4017qnJeSsrJ+Wr8ke2WVpHZW6RRrhYl2j9P19amW587UqSqTcn9p3+XZeXYpXIz8x49KyOunp7qE8O2++aS7boPkT+bH9APzr1sFTsnUfov1PJzCqvdor1f6HdI4FeqeAS7qQDmlA46U7AcLrvxG0Lw/L9mvLkeaPvJGrylfZtgYKf9knd7VhKtTpu0n+v5Hr0MtxWJj7SjTfL0bajf0u0367HM+HPGdl4pluBYJLHHA4Cl1wGDdCCMgHOfkJ3AYJ68eBU5XJyp/CfQVcLUwsYRruLm462e3r/ns9TsC361ktDhscdqOiGOb7Vako4OcjqpPXHqD3B4raye/wB/Y+ioYtSh7DEJSjtr1/yfZrU04Ne1OBArCKX0IbyyAOxUnP6Ae1brnWzX32OOeCwk5Xi6kO6ceZeqa/zKtxc32qnD7YhggmPlyD/DvPQeoFKzekn92/3m0KWGwusU5vopaRT78q3fqS6XpsdkSVGPT61DaWkVZGWIryrJJ7L5G8ZcLt9TWLPMUdbowdUvPLUgcmpOmK5dtzl7W4uoP39u7RuDnGcq3sy9CD09R2weacasqTvB2/L7jGpSjUVpq/n1XzOw03xa0yK1xEVyPvJyP++T/QmvWp42Ml+8VvT/ACPHngWtabv5P/M6WPX7Vlz5ir7NkH8jXcqtN6qS/I4HQqRduV/I+FNa8U6hr9417ezM0p+7glVQdlRQcKB6D6nJ5r5+dSUnzN/8A/Y6GGo4eCoU4pRX4+b7vzMqCOS5lWJRmSVgijPVmIA/Mmsbtna1GlFztZJN79Efavhzw/D4esYrGEf6tfnbu7nl2PuzZ+gwOgrS3Q/Oq1Z1pyqPdv7l0XyNoyBXMY6gA/nkD+VR1suhgldXJDggH2qlpsSrp2Hx2Ky/MMfyrqUbkyrOGmoxrbyztGKlxa0RSqXV2NkUQL71k1YqLc35GBcXpLYTt0qDotbQqPbGRdzVDLStoLaWRjTkViVoXNKsx9nXjHf8CaqCujKTUX95oHTUbnH863sZc6Pg4nA55FR6H6a7LdXO5+Hdot54gso2+6shkx7xozjt/eUU46s83MJezw87dUl97V/1Pspeta7H589ChMuJmxx8qfzasX8Tt2X6m8Ph+b/QnVtpGec1rHuS1daaGrHOqrhRiupTsrI8+VNt3bKksgX5gMVLfU6Yx6XMS5lad/LHA/pWD1Z3KKhHTdj4bNTzRYzb5SzLEAvoKzYRlqLJEI4iV44wPqeP/r1LVo3EpXlZ/wBdS9b24iVUHRQAK1jG1l20OWU76lsRitbGPMf/2Q==')", + + "8M": + "url('data:image/jpeg;base64,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')", + + "9F": + "url('data:image/jpeg;base64,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')", + + "9M": + "url('data:image/jpeg;base64,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')", + + BR: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAtCAIAAACRYfoNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJGNTM2NzBBMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJGNTM2NzBCMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkY1MzY3MDgwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkY1MzY3MDkwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4SeXTsAAAKC0lEQVR42uxZ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", + + DE: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAmCAIAAAD7pgrOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjZFMUI5MDQ1MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjZFMUI5MDQ2MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NkUxQjkwNDMwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NkUxQjkwNDQwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6gw/inAAAAVklEQVR42uzWUQ2AMAxF0Y5MxCThDI1TMAXwCXjg74VzHZw0TVslSZL039qeDljhgH6FA7YCAAAAAABIvsR3OmAc4c/cM8MnUKclBgAAAAAAAPjaK8AAbScGyes+6bEAAAAASUVORK5CYII5OTg=", + + ES: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRGRTFGQzcyMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRGRTFGQzczMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REZFMUZDNzAwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REZFMUZDNzEwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5CGIEmAAAD1UlEQVR42uyYy28bRRzHfzOzD7/Wie3EdtIkdkwSkTRt0iRSlJKKJqhCnJBAiAM3JLhx4QQ3uCP+A269IIGQECFItEhBrVFJBQ1NaVqTuCHOy0lsK2t7nzPDxs0BboYgY4sdzUr7mFnNZ3+v76yQ9vdBKzcMLd5cABfABXABXIAzNYFqqLUBwjNaSwMgvtziLgTGWfBrnbViEKOTqZxBXsVAaq9B/5UF/v7SOce6JaiGvF8Rf9oOzQ/kFYF5RMvpzrPmBkBQNaStY6+qiUS3pLLu14Dl9PskFG4zvQJPRhyLsCYGwHBoeDJfIfEhOgoIeMOrTVd+vNVujVF6iKovku450YMN4E0YA46Li+C4e7ytIoWMrIEqPqM6bnFcKE0w1TIfW6S7s+yRTZBqIxuXRm/VtXpG0c1vBUzghWsWeGHpLlnelAUdhQ71ShsIfnZlmA8PQ7mAbtwQB1J09BIFu5lciAL/nVoEgWGg1et+lseeLGKbHM+/3HdpjCq7WpewVV732Ytrquk3YLS5YoCDgGBwcp5yG8P3W4v+LY9u9uo9m3Lb+UlPcgZ+Xs+pHeJoLKosnp97rVO8ByzTXDGAZAjHXpXJS1YVEQ8tDsv58YAaAIEgdlDyFagSVhAxWBUFg2/7lPGT4tBEFhBhY0nK3vsECE0Xg+YRqDy0pyu9PLu3komNjJjtomLTfMaf/05SfR9qfDt8jXSkGhEG9VmAwHGOkok3yOzrz1xVcZTF8uX+uyyT7PlI969++bU9mSj45M4hs+sCD7zy3rE8YZVYY6Q6+eDNOkYxCPXD3sP24jcPUjMbBwSJx/Y5c/uOPb31bF9sdWWwuKD/tiTt3/ZiNfMF67/4ZGg6h1jzuJAMa5/jQt6feCvaPXRz5VeK44BlcnUnnUxvTkWzzK6IVWA7fOgdabd3Kvtpti+Cuib4mZTivwlgQOoKpeFZRlVmAndyKkOUknhXKSEXZL93JxLpqFQ5WGBx+cLlgeByJJh2rprGAgyUGGi5jy2L4hSAjRwd6hzURhUpIWm52AZYDAsRZLPK0dq7/YHHUhCaqZARuL/bf/2Xy05JjirGyMXN2yVsMMWMTZl4xH50x6dlRKINzukL67MLj0bC3oH3lc/afZUG6Lp6C1lA1GZ795164AEtOUbb4vqBltwVO3aK2cT0uVjxSVfPvq+Dx9dLz/cdeYQydkK4IZKuPi30NN+SU1Fx8l2FU9c63ccINYehtZOnd2xoDIDgZJh/XjnIX235Z3NKjVKjD56LtvamvvCDt7UBiJe3NID7b9QFcAFcABfg/w3whwADALA9jy2I9PhSAAAAAElFTkSuQmCCMTg5Mw==", + + FR: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJENDg5REJDMEM3MDExRTZBM0QzODREQzFFNDczOURFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJENDg5REJEMEM3MDExRTZBM0QzODREQzFFNDczOURFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkQ0ODlEQkEwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkQ0ODlEQkIwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5eKs0eAAAAZUlEQVR42uzPMQ2AQBAAwXu610EwQxCAAnrE0GAAETR4IqGABg/XfTIrYJMp0W+R7vmOfZynIT14z+te1lJr+tBF4wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTVL8AAJaAJpU7NMCAAAAAASUVORK5CYIIxMDEz", + + GB: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFERTU2NTJEMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFERTU2NTJFMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MURFNTY1MkIwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MURFNTY1MkMwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4LW+oDAAAIsElEQVR42sxZ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", + + US: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAiCAIAAABgN0jYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFBOEQ0MUQxMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkFBOEQ0MUQyMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUE4RDQxQ0YwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUE4RDQxRDAwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6Xh7i9AAAGGElEQVR42uxX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" +}; diff --git a/vue-options-api-demos/grid/basic/main.js b/vue-options-api-demos/grid/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/basic/main.vue b/vue-options-api-demos/grid/basic/main.vue new file mode 100644 index 00000000..03eb1f54 --- /dev/null +++ b/vue-options-api-demos/grid/basic/main.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/vue-options-api-demos/grid/columns/column-menu/basic/main.js b/vue-options-api-demos/grid/columns/column-menu/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/column-menu/basic/main.vue b/vue-options-api-demos/grid/columns/column-menu/basic/main.vue new file mode 100644 index 00000000..6890f218 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/basic/main.vue @@ -0,0 +1,68 @@ + + diff --git a/vue-options-api-demos/grid/columns/column-menu/basic/products.js b/vue-options-api-demos/grid/columns/column-menu/basic/products.js new file mode 100644 index 00000000..6387e1d9 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/basic/products.js @@ -0,0 +1,139 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }]; + +export { products }; diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/ColumnMenu.vue b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/ColumnMenu.vue new file mode 100644 index 00000000..36652cb5 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/ColumnMenu.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.js b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.vue b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.vue new file mode 100644 index 00000000..4ac4be86 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.vue @@ -0,0 +1,90 @@ + + diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/products.js b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/products.js new file mode 100644 index 00000000..6387e1d9 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/products.js @@ -0,0 +1,139 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }]; + +export { products }; diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/main.js b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/main.vue b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.vue new file mode 100644 index 00000000..1822f6ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.vue @@ -0,0 +1,111 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/products.js b/vue-options-api-demos/grid/columns/column-menu/custom-style/products.js new file mode 100644 index 00000000..6387e1d9 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/products.js @@ -0,0 +1,139 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }]; + +export { products }; diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/styles.css b/vue-options-api-demos/grid/columns/column-menu/custom-style/styles.css new file mode 100644 index 00000000..61adda33 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/styles.css @@ -0,0 +1,4 @@ +th.k-header.active > div > a, th.k-header.active > div > a.k-grid-column-menu:hover { + color: #fff; + background-color: #ff6358; +} \ No newline at end of file diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/ColumnMenu.vue b/vue-options-api-demos/grid/columns/column-menu/custom/ColumnMenu.vue new file mode 100644 index 00000000..befea2bf --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom/ColumnMenu.vue @@ -0,0 +1,155 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/main.js b/vue-options-api-demos/grid/columns/column-menu/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/main.vue b/vue-options-api-demos/grid/columns/column-menu/custom/main.vue new file mode 100644 index 00000000..380dc05d --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom/main.vue @@ -0,0 +1,111 @@ + + diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/products.js b/vue-options-api-demos/grid/columns/column-menu/custom/products.js new file mode 100644 index 00000000..6387e1d9 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/custom/products.js @@ -0,0 +1,139 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }]; + +export { products }; diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/ColumnMenu.vue b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/ColumnMenu.vue new file mode 100644 index 00000000..9e59222e --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/ColumnMenu.vue @@ -0,0 +1,118 @@ + + diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.js b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.vue b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.vue new file mode 100644 index 00000000..67ade191 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.vue @@ -0,0 +1,143 @@ + + + diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/products.js b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/products.js new file mode 100644 index 00000000..6387e1d9 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/products.js @@ -0,0 +1,139 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }]; + +export { products }; diff --git a/vue-options-api-demos/grid/columns/column-virtualization/main.js b/vue-options-api-demos/grid/columns/column-virtualization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-virtualization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/column-virtualization/main.vue b/vue-options-api-demos/grid/columns/column-virtualization/main.vue new file mode 100644 index 00000000..0f7ea5f6 --- /dev/null +++ b/vue-options-api-demos/grid/columns/column-virtualization/main.vue @@ -0,0 +1,63 @@ + + diff --git a/vue-options-api-demos/grid/columns/dynamic-column-generation/main.js b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/dynamic-column-generation/main.vue b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.vue new file mode 100644 index 00000000..fa66d1ca --- /dev/null +++ b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.vue @@ -0,0 +1,84 @@ + + diff --git a/vue-options-api-demos/grid/columns/headers/main.js b/vue-options-api-demos/grid/columns/headers/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/headers/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/headers/main.vue b/vue-options-api-demos/grid/columns/headers/main.vue new file mode 100644 index 00000000..3f4d69bd --- /dev/null +++ b/vue-options-api-demos/grid/columns/headers/main.vue @@ -0,0 +1,53 @@ + + diff --git a/vue-options-api-demos/grid/columns/hidden/Header.vue b/vue-options-api-demos/grid/columns/hidden/Header.vue new file mode 100644 index 00000000..6c446a82 --- /dev/null +++ b/vue-options-api-demos/grid/columns/hidden/Header.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/grid/columns/hidden/main.js b/vue-options-api-demos/grid/columns/hidden/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/hidden/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/hidden/main.vue b/vue-options-api-demos/grid/columns/hidden/main.vue new file mode 100644 index 00000000..cd813180 --- /dev/null +++ b/vue-options-api-demos/grid/columns/hidden/main.vue @@ -0,0 +1,95 @@ + + diff --git a/vue-options-api-demos/grid/columns/locked/main.js b/vue-options-api-demos/grid/columns/locked/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/locked/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/locked/main.vue b/vue-options-api-demos/grid/columns/locked/main.vue new file mode 100644 index 00000000..4dbae164 --- /dev/null +++ b/vue-options-api-demos/grid/columns/locked/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/grid/columns/locked/products.js b/vue-options-api-demos/grid/columns/locked/products.js new file mode 100644 index 00000000..2a1ce279 --- /dev/null +++ b/vue-options-api-demos/grid/columns/locked/products.js @@ -0,0 +1,1313 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +]; + +export { products }; diff --git a/vue-options-api-demos/grid/columns/reordering/main.js b/vue-options-api-demos/grid/columns/reordering/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/reordering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/reordering/main.vue b/vue-options-api-demos/grid/columns/reordering/main.vue new file mode 100644 index 00000000..f1eeadaf --- /dev/null +++ b/vue-options-api-demos/grid/columns/reordering/main.vue @@ -0,0 +1,44 @@ + + diff --git a/vue-options-api-demos/grid/columns/resizing/main.js b/vue-options-api-demos/grid/columns/resizing/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/resizing/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/resizing/main.vue b/vue-options-api-demos/grid/columns/resizing/main.vue new file mode 100644 index 00000000..8943c9aa --- /dev/null +++ b/vue-options-api-demos/grid/columns/resizing/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.js b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.vue b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.vue new file mode 100644 index 00000000..ef3ff5fc --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.vue @@ -0,0 +1,74 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/products.json b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/columns/widths/minimum-width/main.js b/vue-options-api-demos/grid/columns/widths/minimum-width/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/minimum-width/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/widths/minimum-width/main.vue b/vue-options-api-demos/grid/columns/widths/minimum-width/main.vue new file mode 100644 index 00000000..f983ed12 --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/minimum-width/main.vue @@ -0,0 +1,96 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/columns/widths/minimum-width/products.json b/vue-options-api-demos/grid/columns/widths/minimum-width/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/minimum-width/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.js b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.vue b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.vue new file mode 100644 index 00000000..b37a3937 --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.vue @@ -0,0 +1,69 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/products.json b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/columns/widths/percentage-width/main.js b/vue-options-api-demos/grid/columns/widths/percentage-width/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/percentage-width/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/columns/widths/percentage-width/main.vue b/vue-options-api-demos/grid/columns/widths/percentage-width/main.vue new file mode 100644 index 00000000..d323f2a1 --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/percentage-width/main.vue @@ -0,0 +1,62 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/columns/widths/percentage-width/products.json b/vue-options-api-demos/grid/columns/widths/percentage-width/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/columns/widths/percentage-width/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/common/es.json b/vue-options-api-demos/grid/common/es.json new file mode 100644 index 00000000..72eb2b1c --- /dev/null +++ b/vue-options-api-demos/grid/common/es.json @@ -0,0 +1,55 @@ +{ + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "numerictextbox": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "grid": { + "groupPanelEmpty": "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio", + "noRecords": "No hay datos disponibles.", + "pagerFirstPage": "Ir a la primera página", + "pagerPreviousPage": "Ir a la página anterior", + "pagerNextPage": "Ir a la página siguiente", + "pagerLastPage": "Ir a la última página", + "pagerPage": "Página", + "pagerOf": "de", + "pagerTotalPages": "{0}", + "pagerItems": "ítems", + "pagerInfo": "{0} - {1} de {2} ítems", + "pagerItemsPerPage": "ítems por página", + "filterEqOperator": "Es igual a", + "filterNotEqOperator": "No es igual a", + "filterIsNullOperator": "Es nulo", + "filterIsNotNullOperator": "No es nulo", + "filterIsEmptyOperator": "Está vacío", + "filterIsNotEmptyOperator": "No está vacío", + "filterStartsWithOperator": "Comienza con", + "filterContainsOperator": "Contiene", + "filterNotContainsOperator": "No contiene", + "filterEndsWithOperator": "Termina en", + "filterGteOperator": "Es mayor o igual que", + "filterGtOperator": "Es mayor que", + "filterLteOperator": "Es menor o igual que", + "filterLtOperator": "Es menor o igual que", + "filterIsTrue": "Sí", + "filterIsFalse": "No", + "filterBooleanAll": "(Todas)", + "filterAfterOrEqualOperator": "Es posterior o igual a", + "filterAfterOperator": "Es posterior", + "filterBeforeOperator": "Es anterior", + "filterBeforeOrEqualOperator": "Es anterior o igual a", + "filterFilterButton": "Filtrar", + "filterClearButton": "Limpiar filtros", + "filterAndLogic": "Y", + "filterOrLogic": "O" + } +} diff --git a/vue-options-api-demos/grid/common/northwind/categories.json b/vue-options-api-demos/grid/common/northwind/categories.json new file mode 100644 index 00000000..9b40e6e0 --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/categories.json @@ -0,0 +1,43 @@ + +[ + { + "categoryID" : 2, + "description" : "Sweet and savory sauces relishes spreads and seasonings", + "name" : "Condiments" + }, + { + "categoryID" : 1, + "description" : "Soft drinks coffees teas beers and ales", + "name" : "Beverages" + }, + { + "categoryID" : 3, + "description" : "Desserts candies and sweet breads", + "name" : "Confections" + }, + { + "categoryID" : 4, + "description" : "Cheeses", + "name" : "Dairy Products" + }, + { + "categoryID" : 5, + "description" : "Breads crackers pasta and cereal", + "name" : "Grains/Cereals" + }, + { + "categoryID" : 6, + "description" : "Prepared meats", + "name" : "Meat/Poultry" + }, + { + "categoryID" : 7, + "description" : "Dried fruit and bean curd", + "name" : "Produce" + }, + { + "categoryID" : 8, + "description" : "Seaweed and fish", + "name" : "Seafood" + } +] diff --git a/vue-options-api-demos/grid/common/northwind/customers.json b/vue-options-api-demos/grid/common/northwind/customers.json new file mode 100644 index 00000000..ccf51582 --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/customers.json @@ -0,0 +1,1277 @@ + +[ + { + "customerID" : "AROUT", + "companyName" : "Around the Horn", + "contactName" : "Thomas Hardy", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "120 Hanover Sq.", + "city" : "London", + "region" : "NULL", + "postalCode" : "WA1 1DP", + "country" : "UK", + "phone" : "(171) 555-7788" + } + }, + { + "customerID" : "BERGS", + "companyName" : "Berglunds snabbköp", + "contactName" : "Christina Berglund", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "Berguvsvägen 8", + "city" : "Luleå", + "region" : "NULL", + "postalCode" : "S-958 22", + "country" : "Sweden", + "phone" : "0921-12 34 65" + } + }, + { + "customerID" : "BLAUS", + "companyName" : "Blauer See Delikatessen", + "contactName" : "Hanna Moos", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Forsterstr. 57", + "city" : "Mannheim", + "region" : "NULL", + "postalCode" : 68306, + "country" : "Germany", + "phone" : "0621-08460" + } + }, + { + "customerID" : "BLONP", + "companyName" : "Blondesddsl père et fils", + "contactName" : "Frédérique Citeaux", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "24 place Kléber", + "city" : "Strasbourg", + "region" : "NULL", + "postalCode" : 67000, + "country" : "France", + "phone" : "88.60.15.31" + } + }, + { + "customerID" : "BOLID", + "companyName" : "Bólido Comidas preparadas", + "contactName" : "Martín Sommer", + "contactTitle" : "Owner", + "address" : { + "street" : "67C Araquil", + "city" : "Madrid", + "region" : "NULL", + "postalCode" : 28023, + "country" : "Spain", + "phone" : "(91) 555 22 82" + } + }, + { + "customerID" : "BONAP", + "companyName" : "Bon app'", + "contactName" : "Laurence Lebihan", + "contactTitle" : "Owner", + "address" : { + "street" : "12 rue des Bouchers", + "city" : "Marseille", + "region" : "NULL", + "postalCode" : 13008, + "country" : "France", + "phone" : "91.24.45.40" + } + }, + { + "customerID" : "ANTON", + "companyName" : "Antonio Moreno Taquería", + "contactName" : "Antonio Moreno", + "contactTitle" : "Owner", + "address" : { + "street" : "Mataderos 2312", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5023, + "country" : "Mexico", + "phone" : "(5) 555-3932" + } + }, + { + "customerID" : "ANATR", + "companyName" : "Ana Trujillo Emparedados y helados", + "contactName" : "Ana Trujillo", + "contactTitle" : "Owner", + "address" : { + "street" : "Avda. de la Constitución 2222", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5021, + "country" : "Mexico", + "phone" : "(5) 555-4729" + } + }, + { + "customerID" : "CACTU", + "companyName" : "Cactus Comidas para llevar", + "contactName" : "Patricio Simpson", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Cerrito 333", + "city" : "Buenos Aires", + "region" : "NULL", + "postalCode" : 1010, + "country" : "Argentina", + "phone" : "(1) 135-5555" + } + }, + { + "customerID" : "BSBEV", + "companyName" : "B's Beverages", + "contactName" : "Victoria Ashworth", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Fauntleroy Circus", + "city" : "London", + "region" : "NULL", + "postalCode" : "EC2 5NT", + "country" : "UK", + "phone" : "(171) 555-1212" + } + }, + { + "customerID" : "CENTC", + "companyName" : "Centro comercial Moctezuma", + "contactName" : "Francisco Chang", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Sierras de Granada 9993", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5022, + "country" : "Mexico", + "phone" : "(5) 555-3392" + } + }, + { + "customerID" : "CHOPS", + "companyName" : "Chop-suey Chinese", + "contactName" : "Yang Wang", + "contactTitle" : "Owner", + "address" : { + "street" : "Hauptstr. 29", + "city" : "Bern", + "region" : "NULL", + "postalCode" : 3012, + "country" : "Switzerland", + "phone" : "0452-076545" + } + }, + { + "customerID" : "COMMI", + "companyName" : "Comércio Mineiro", + "contactName" : "Pedro Afonso", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "23 Av. dos Lusíadas", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05432-043", + "country" : "Brazil", + "phone" : "(11) 555-7647" + } + }, + { + "customerID" : "CONSH", + "companyName" : "Consolidated Holdings", + "contactName" : "Elizabeth Brown", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Berkeley Gardens 12 Brewery", + "city" : "London", + "region" : "NULL", + "postalCode" : "WX1 6LT", + "country" : "UK", + "phone" : "(171) 555-2282" + } + }, + { + "customerID" : "ALFKI", + "companyName" : "Alfreds Futterkiste", + "contactName" : "Maria Anders", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Obere Str. 57", + "city" : "Berlin", + "region" : "NULL", + "postalCode" : 12209, + "country" : "Germany", + "phone" : "030-0074321" + } + }, + { + "customerID" : "BOTTM", + "companyName" : "Bottom-Dollar Markets", + "contactName" : "Elizabeth Lincoln", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "23 Tsawassen Blvd.", + "city" : "Tsawassen", + "region" : "BC", + "postalCode" : "T2F 8M4", + "country" : "Canada", + "phone" : "(604) 555-4729" + } + }, + { + "customerID" : "DRACD", + "companyName" : "Drachenblut Delikatessen", + "contactName" : "Sven Ottlieb", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "Walserweg 21", + "city" : "Aachen", + "region" : "NULL", + "postalCode" : 52066, + "country" : "Germany", + "phone" : "0241-039123" + } + }, + { + "customerID" : "DUMON", + "companyName" : "Du monde entier", + "contactName" : "Janine Labrune", + "contactTitle" : "Owner", + "address" : { + "street" : "67 rue des Cinquante Otages", + "city" : "Nantes", + "region" : "NULL", + "postalCode" : 44000, + "country" : "France", + "phone" : "40.67.88.88" + } + }, + { + "customerID" : "FAMIA", + "companyName" : "Familia Arquibaldo", + "contactName" : "Aria Cruz", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "Rua Orós 92", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05442-030", + "country" : "Brazil", + "phone" : "(11) 555-9857" + } + }, + { + "customerID" : "FISSA", + "companyName" : "FISSA Fabrica Inter. Salchichas S.A.", + "contactName" : "Diego Roel", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "C/ Moralzarzal 86", + "city" : "Madrid", + "region" : "NULL", + "postalCode" : 28034, + "country" : "Spain", + "phone" : "(91) 555 94 44" + } + }, + { + "customerID" : "FOLIG", + "companyName" : "Folies gourmandes", + "contactName" : "Martine Rancé", + "contactTitle" : "Assistant Sales Agent", + "address" : { + "street" : "184 chaussée de Tournai", + "city" : "Lille", + "region" : "NULL", + "postalCode" : 59000, + "country" : "France", + "phone" : "20.16.10.16" + } + }, + { + "customerID" : "FOLKO", + "companyName" : "Folk och fä HB", + "contactName" : "Maria Larsson", + "contactTitle" : "Owner", + "address" : { + "street" : "Åkergatan 24", + "city" : "Bräcke", + "region" : "NULL", + "postalCode" : "S-844 67", + "country" : "Sweden", + "phone" : "0695-34 67 21" + } + }, + { + "customerID" : "FRANK", + "companyName" : "Frankenversand", + "contactName" : "Peter Franken", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Berliner Platz 43", + "city" : "München", + "region" : "NULL", + "postalCode" : 80805, + "country" : "Germany", + "phone" : "089-0877310" + } + }, + { + "customerID" : "FRANR", + "companyName" : "France restauration", + "contactName" : "Carine Schmitt", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "54 rue Royale", + "city" : "Nantes", + "region" : "NULL", + "postalCode" : 44000, + "country" : "France", + "phone" : "40.32.21.21" + } + }, + { + "customerID" : "EASTC", + "companyName" : "Eastern Connection", + "contactName" : "Ann Devon", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "35 King George", + "city" : "London", + "region" : "NULL", + "postalCode" : "WX3 6FW", + "country" : "UK", + "phone" : "(171) 555-0297" + } + }, + { + "customerID" : "ERNSH", + "companyName" : "Ernst Handel", + "contactName" : "Roland Mendel", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Kirchgasse 6", + "city" : "Graz", + "region" : "NULL", + "postalCode" : 8010, + "country" : "Austria", + "phone" : "7675-3425" + } + }, + { + "customerID" : "FRANS", + "companyName" : "Franchi S.p.A.", + "contactName" : "Paolo Accorti", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Via Monte Bianco 34", + "city" : "Torino", + "region" : "NULL", + "postalCode" : 10100, + "country" : "Italy", + "phone" : "011-4988260" + } + }, + { + "customerID" : "FURIB", + "companyName" : "Furia Bacalhau e Frutos do Mar", + "contactName" : "Lino Rodriguez", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Jardim das rosas n. 32", + "city" : "Lisboa", + "region" : "NULL", + "postalCode" : 1675, + "country" : "Portugal", + "phone" : "(1) 354-2534" + } + }, + { + "customerID" : "GALED", + "companyName" : "Galería del gastrónomo", + "contactName" : "Eduardo Saavedra", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Rambla de Cataluña 23", + "city" : "Barcelona", + "region" : "NULL", + "postalCode" : 8022, + "country" : "Spain", + "phone" : "(93) 203 4560" + } + }, + { + "customerID" : "GODOS", + "companyName" : "Godos Cocina Típica", + "contactName" : "José Pedro Freyre", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "C/ Romero 33", + "city" : "Sevilla", + "region" : "NULL", + "postalCode" : 41101, + "country" : "Spain", + "phone" : "(95) 555 82 82" + } + }, + { + "customerID" : "GOURL", + "companyName" : "Gourmet Lanchonetes", + "contactName" : "André Fonseca", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "Av. Brasil 442", + "city" : "Campinas", + "region" : "SP", + "postalCode" : "04876-786", + "country" : "Brazil", + "phone" : "(11) 555-9482" + } + }, + { + "customerID" : "HILAA", + "companyName" : "HILARION-Abastos", + "contactName" : "Carlos Hernández", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Carrera 22 con Ave. Carlos Soublette #8-35", + "city" : "San Cristóbal", + "region" : "Táchira", + "postalCode" : 5022, + "country" : "Venezuela", + "phone" : "(5) 555-1340" + } + }, + { + "customerID" : "HUNGC", + "companyName" : "Hungry Coyote Import Store", + "contactName" : "Yoshi Latimer", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "City Center Plaza 516 Main St.", + "city" : "Elgin", + "region" : "OR", + "postalCode" : 97827, + "country" : "USA", + "phone" : "(503) 555-6874" + } + }, + { + "customerID" : "HUNGO", + "companyName" : "Hungry Owl All-Night Grocers", + "contactName" : "Patricia McKenna", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "8 Johnstown Road", + "city" : "Cork", + "region" : "Co. Cork", + "postalCode" : "NULL", + "country" : "Ireland", + "phone" : "2967 542" + } + }, + { + "customerID" : "ISLAT", + "companyName" : "Island Trading", + "contactName" : "Helen Bennett", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Garden House Crowther Way", + "city" : "Cowes", + "region" : "Isle of Wight", + "postalCode" : "PO31 7PJ", + "country" : "UK", + "phone" : "(198) 555-8888" + } + }, + { + "customerID" : "KOENE", + "companyName" : "Königlich Essen", + "contactName" : "Philip Cramer", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "Maubelstr. 90", + "city" : "Brandenburg", + "region" : "NULL", + "postalCode" : 14776, + "country" : "Germany", + "phone" : "0555-09876" + } + }, + { + "customerID" : "LACOR", + "companyName" : "La corne d'abondance", + "contactName" : "Daniel Tonini", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "67 avenue de l'Europe", + "city" : "Versailles", + "region" : "NULL", + "postalCode" : 78000, + "country" : "France", + "phone" : "30.59.84.10" + } + }, + { + "customerID" : "GROSR", + "companyName" : "GROSELLA-Restaurante", + "contactName" : "Manuel Pereira", + "contactTitle" : "Owner", + "address" : { + "street" : "5ª Ave. Los Palos Grandes", + "city" : "Caracas", + "region" : "DF", + "postalCode" : 1081, + "country" : "Venezuela", + "phone" : "(2) 283-2951" + } + }, + { + "customerID" : "HANAR", + "companyName" : "Hanari Carnes", + "contactName" : "Mario Pontes", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Rua do Paço 67", + "city" : "Rio de Janeiro", + "region" : "RJ", + "postalCode" : "05454-876", + "country" : "Brazil", + "phone" : "(21) 555-0091" + } + }, + { + "customerID" : "LAUGB", + "companyName" : "Laughing Bacchus Wine Cellars", + "contactName" : "Yoshi Tannamuri", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "1900 Oak St.", + "city" : "Vancouver", + "region" : "BC", + "postalCode" : "V3F 2K1", + "country" : "Canada", + "phone" : "(604) 555-3392" + } + }, + { + "customerID" : "LAZYK", + "companyName" : "Lazy K Kountry Store", + "contactName" : "John Steel", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "12 Orchestra Terrace", + "city" : "Walla Walla", + "region" : "WA", + "postalCode" : 99362, + "country" : "USA", + "phone" : "(509) 555-7969" + } + }, + { + "customerID" : "LEHMS", + "companyName" : "Lehmanns Marktstand", + "contactName" : "Renate Messner", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Magazinweg 7", + "city" : "Frankfurt a.M.", + "region" : "NULL", + "postalCode" : 60528, + "country" : "Germany", + "phone" : "069-0245984" + } + }, + { + "customerID" : "GREAL", + "companyName" : "Great Lakes Food Market", + "contactName" : "Howard Snyder", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "2732 Baker Blvd.", + "city" : "Eugene", + "region" : "OR", + "postalCode" : 97403, + "country" : "USA", + "phone" : "(503) 555-7555" + } + }, + { + "customerID" : "LAMAI", + "companyName" : "La maison d'Asie", + "contactName" : "Annette Roulet", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "1 rue Alsace-Lorraine", + "city" : "Toulouse", + "region" : "NULL", + "postalCode" : 31000, + "country" : "France", + "phone" : "61.77.61.10" + } + }, + { + "customerID" : "LETSS", + "companyName" : "Let's Stop N Shop", + "contactName" : "Jaime Yorres", + "contactTitle" : "Owner", + "address" : { + "street" : "87 Polk St. Suite 5", + "city" : "San Francisco", + "region" : "CA", + "postalCode" : 94117, + "country" : "USA", + "phone" : "(415) 555-5938" + } + }, + { + "customerID" : "MAGAA", + "companyName" : "Magazzini Alimentari Riuniti", + "contactName" : "Giovanni Rovelli", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Via Ludovico il Moro 22", + "city" : "Bergamo", + "region" : "NULL", + "postalCode" : 24100, + "country" : "Italy", + "phone" : "035-640230" + } + }, + { + "customerID" : "MAISD", + "companyName" : "Maison Dewey", + "contactName" : "Catherine Dewey", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Rue Joseph-Bens 532", + "city" : "Bruxelles", + "region" : "NULL", + "postalCode" : "B-1180", + "country" : "Belgium", + "phone" : "(02) 201 24 67" + } + }, + { + "customerID" : "MEREP", + "companyName" : "Mère Paillarde", + "contactName" : "Jean Fresnière", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "43 rue St. Laurent", + "city" : "Montréal", + "region" : "Québec", + "postalCode" : "H1J 1C3", + "country" : "Canada", + "phone" : "(514) 555-8054" + } + }, + { + "customerID" : "MORGK", + "companyName" : "Morgenstern Gesundkost", + "contactName" : "Alexander Feuer", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "Heerstr. 22", + "city" : "Leipzig", + "region" : "NULL", + "postalCode" : 4179, + "country" : "Germany", + "phone" : "0342-023176" + } + }, + { + "customerID" : "NORTS", + "companyName" : "North/South", + "contactName" : "Simon Crowther", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "South House 300 Queensbridge", + "city" : "London", + "region" : "NULL", + "postalCode" : "SW7 1RZ", + "country" : "UK", + "phone" : "(171) 555-7733" + } + }, + { + "customerID" : "OCEAN", + "companyName" : "Océano Atlántico Ltda.", + "contactName" : "Yvonne Moncada", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Ing. Gustavo Moncada 8585 Piso 20-A", + "city" : "Buenos Aires", + "region" : "NULL", + "postalCode" : 1010, + "country" : "Argentina", + "phone" : "(1) 135-5333" + } + }, + { + "customerID" : "LINOD", + "companyName" : "LINO-Delicateses", + "contactName" : "Felipe Izquierdo", + "contactTitle" : "Owner", + "address" : { + "street" : "Ave. 5 de Mayo Porlamar", + "city" : "I. de Margarita", + "region" : "Nueva Esparta", + "postalCode" : 4980, + "country" : "Venezuela", + "phone" : "(8) 34-56-12" + } + }, + { + "customerID" : "LILAS", + "companyName" : "LILA-Supermercado", + "contactName" : "Carlos González", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city" : "Barquisimeto", + "region" : "Lara", + "postalCode" : 3508, + "country" : "Venezuela", + "phone" : "(9) 331-6954" + } + }, + { + "customerID" : "OLDWO", + "companyName" : "Old World Delicatessen", + "contactName" : "Rene Phillips", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "2743 Bering St.", + "city" : "Anchorage", + "region" : "AK", + "postalCode" : 99508, + "country" : "USA", + "phone" : "(907) 555-7584" + } + }, + { + "customerID" : "OTTIK", + "companyName" : "Ottilies Käseladen", + "contactName" : "Henriette Pfalzheim", + "contactTitle" : "Owner", + "address" : { + "street" : "Mehrheimerstr. 369", + "city" : "Köln", + "region" : "NULL", + "postalCode" : 50739, + "country" : "Germany", + "phone" : "0221-0644327" + } + }, + { + "customerID" : "PICCO", + "companyName" : "Piccolo und mehr", + "contactName" : "Georg Pipps", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Geislweg 14", + "city" : "Salzburg", + "region" : "NULL", + "postalCode" : 5020, + "country" : "Austria", + "phone" : "6562-9722" + } + }, + { + "customerID" : "PARIS", + "companyName" : "Paris spécialités", + "contactName" : "Marie Bertrand", + "contactTitle" : "Owner", + "address" : { + "street" : "265 boulevard Charonne", + "city" : "Paris", + "region" : "NULL", + "postalCode" : 75012, + "country" : "France", + "phone" : "(1) 42.34.22.66" + } + }, + { + "customerID" : "PERIC", + "companyName" : "Pericles Comidas clásicas", + "contactName" : "Guillermo Fernández", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Calle Dr. Jorge Cash 321", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5033, + "country" : "Mexico", + "phone" : "(5) 552-3745" + } + }, + { + "customerID" : "PRINI", + "companyName" : "Princesa Isabel Vinhos", + "contactName" : "Isabel de Castro", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Estrada da saúde n. 58", + "city" : "Lisboa", + "region" : "NULL", + "postalCode" : 1756, + "country" : "Portugal", + "phone" : "(1) 356-5634" + } + }, + { + "customerID" : "LONEP", + "companyName" : "Lonesome Pine Restaurant", + "contactName" : "Fran Wilson", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "89 Chiaroscuro Rd.", + "city" : "Portland", + "region" : "OR", + "postalCode" : 97219, + "country" : "USA", + "phone" : "(503) 555-9573" + } + }, + { + "customerID" : "QUEEN", + "companyName" : "Queen Cozinha", + "contactName" : "Lúcia Carvalho", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "Alameda dos Canàrios 891", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05487-020", + "country" : "Brazil", + "phone" : "(11) 555-1189" + } + }, + { + "customerID" : "RATTC", + "companyName" : "Rattlesnake Canyon Grocery", + "contactName" : "Paula Wilson", + "contactTitle" : "Assistant Sales Representative", + "address" : { + "street" : "2817 Milton Dr.", + "city" : "Albuquerque", + "region" : "NM", + "postalCode" : 87110, + "country" : "USA", + "phone" : "(505) 555-5939" + } + }, + { + "customerID" : "REGGC", + "companyName" : "Reggiani Caseifici", + "contactName" : "Maurizio Moroni", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "Strada Provinciale 124", + "city" : "Reggio Emilia", + "region" : "NULL", + "postalCode" : 42100, + "country" : "Italy", + "phone" : "0522-556721" + } + }, + { + "customerID" : "QUEDE", + "companyName" : "Que Delícia", + "contactName" : "Bernardo Batista", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Rua da Panificadora", + "city" : "12Rio de Janeiro", + "region" : "RJ", + "postalCode" : "02389-673", + "country" : "Brazil", + "phone" : "(21) 555-4252" + } + }, + { + "customerID" : "RANCH", + "companyName" : "Rancho grande", + "contactName" : "Sergio Gutiérrez", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Av. del Libertador 900", + "city" : "Buenos Aires", + "region" : "NULL", + "postalCode" : 1010, + "country" : "Argentina", + "phone" : "(1) 123-5555" + } + }, + { + "customerID" : "ROMEY", + "companyName" : "Romero y tomillo", + "contactName" : "Alejandra Camino", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Gran Vía 1", + "city" : "Madrid", + "region" : "NULL", + "postalCode" : 28001, + "country" : "Spain", + "phone" : "(91) 745 6200" + } + }, + { + "customerID" : "QUICK", + "companyName" : "QUICK-Stop", + "contactName" : "Horst Kloss", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Taucherstraße 10", + "city" : "Cunewalde", + "region" : "NULL", + "postalCode" : 1307, + "country" : "Germany", + "phone" : "0372-035188" + } + }, + { + "customerID" : "RICAR", + "companyName" : "Ricardo Adocicados", + "contactName" : "Janete Limeira", + "contactTitle" : "Assistant Sales Agent", + "address" : { + "street" : "Av. Copacabana 267", + "city" : "Rio de Janeiro", + "region" : "RJ", + "postalCode" : "02389-890", + "country" : "Brazil", + "phone" : "(21) 555-3412" + } + }, + { + "customerID" : "RICSU", + "companyName" : "Richter Supermarkt", + "contactName" : "Michael Holz", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Grenzacherweg 237", + "city" : "Genève", + "region" : "NULL", + "postalCode" : 1203, + "country" : "Switzerland", + "phone" : "0897-034214" + } + }, + { + "customerID" : "SANTG", + "companyName" : "Santé Gourmet", + "contactName" : "Jonas Bergulfsen", + "contactTitle" : "Owner", + "address" : { + "street" : "Erling Skakkes gate 78", + "city" : "Stavern", + "region" : "NULL", + "postalCode" : 4110, + "country" : "Norway", + "phone" : "07-98 92 35" + } + }, + { + "customerID" : "SAVEA", + "companyName" : "Save-a-lot Markets", + "contactName" : "Jose Pavarotti", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "187 Suffolk Ln.", + "city" : "Boise", + "region" : "ID", + "postalCode" : 83720, + "country" : "USA", + "phone" : "(208) 555-8097" + } + }, + { + "customerID" : "SEVES", + "companyName" : "Seven Seas Imports", + "contactName" : "Hari Kumar", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "90 Wadhurst Rd.", + "city" : "London", + "region" : "NULL", + "postalCode" : "OX15 4NB", + "country" : "UK", + "phone" : "(171) 555-1717" + } + }, + { + "customerID" : "SIMOB", + "companyName" : "Simons bistro", + "contactName" : "Jytte Petersen", + "contactTitle" : "Owner", + "address" : { + "street" : "Vinbæltet 34", + "city" : "Kobenhavn", + "region" : "NULL", + "postalCode" : 1734, + "country" : "Denmark", + "phone" : "31 12 34 56" + } + }, + { + "customerID" : "SPECD", + "companyName" : "Spécialités du monde", + "contactName" : "Dominique Perrier", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "25 rue Lauriston", + "city" : "Paris", + "region" : "NULL", + "postalCode" : 75016, + "country" : "France", + "phone" : "(1) 47.55.60.10" + } + }, + { + "customerID" : "SPLIR", + "companyName" : "Split Rail Beer & Ale", + "contactName" : "Art Braunschweiger", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "P.O. Box 555", + "city" : "Lander", + "region" : "WY", + "postalCode" : 82520, + "country" : "USA", + "phone" : "(307) 555-4680" + } + }, + { + "customerID" : "SUPRD", + "companyName" : "Suprêmes délices", + "contactName" : "Pascale Cartrain", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Boulevard Tirou 255", + "city" : "Charleroi", + "region" : "NULL", + "postalCode" : "B-6000", + "country" : "Belgium", + "phone" : "(071) 23 67 22 20" + } + }, + { + "customerID" : "THEBI", + "companyName" : "The Big Cheese", + "contactName" : "Liz Nixon", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "89 Jefferson Way Suite 2", + "city" : "Portland", + "region" : "OR", + "postalCode" : 97201, + "country" : "USA", + "phone" : "(503) 555-3612" + } + }, + { + "customerID" : "THECR", + "companyName" : "The Cracker Box", + "contactName" : "Liu Wong", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "55 Grizzly Peak Rd.", + "city" : "Butte", + "region" : "MT", + "postalCode" : 59801, + "country" : "USA", + "phone" : "(406) 555-5834" + } + }, + { + "customerID" : "TOMSP", + "companyName" : "Toms Spezialitäten", + "contactName" : "Karin Josephs", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Luisenstr. 48", + "city" : "Münster", + "region" : "NULL", + "postalCode" : 44087, + "country" : "Germany", + "phone" : "0251-031259" + } + }, + { + "customerID" : "TORTU", + "companyName" : "Tortuga Restaurante", + "contactName" : "Miguel Angel Paolino", + "contactTitle" : "Owner", + "address" : { + "street" : "Avda. Azteca 123", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5033, + "country" : "Mexico", + "phone" : "(5) 555-2933" + } + }, + { + "customerID" : "TRADH", + "companyName" : "Tradição Hipermercados", + "contactName" : "Anabela Domingues", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Av. Inês de Castro 414", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05634-030", + "country" : "Brazil", + "phone" : "(11) 555-2167" + } + }, + { + "customerID" : "TRAIH", + "companyName" : "Trail's Head Gourmet Provisioners", + "contactName" : "Helvetius Nagy", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "722 DaVinci Blvd.", + "city" : "Kirkland", + "region" : "WA", + "postalCode" : 98034, + "country" : "USA", + "phone" : "(206) 555-8257" + } + }, + { + "customerID" : "VAFFE", + "companyName" : "Vaffeljernet", + "contactName" : "Palle Ibsen", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Smagsloget 45", + "city" : "Århus", + "region" : "NULL", + "postalCode" : 8200, + "country" : "Denmark", + "phone" : "86 21 32 43" + } + }, + { + "customerID" : "VICTE", + "companyName" : "Victuailles en stock", + "contactName" : "Mary Saveley", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "2 rue du Commerce", + "city" : "Lyon", + "region" : "NULL", + "postalCode" : 69004, + "country" : "France", + "phone" : "78.32.54.86" + } + }, + { + "customerID" : "VINET", + "companyName" : "Vins et alcools Chevalier", + "contactName" : "Paul Henriot", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "59 rue de l'Abbaye", + "city" : "Reims", + "region" : "NULL", + "postalCode" : 51100, + "country" : "France", + "phone" : "26.47.15.10" + } + }, + { + "customerID" : "WANDK", + "companyName" : "Die Wandernde Kuh", + "contactName" : "Rita Müller", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Adenauerallee 900", + "city" : "Stuttgart", + "region" : "NULL", + "postalCode" : 70563, + "country" : "Germany", + "phone" : "0711-020361" + } + }, + { + "customerID" : "WARTH", + "companyName" : "Wartian Herkku", + "contactName" : "Pirkko Koskitalo", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Torikatu 38", + "city" : "Oulu", + "region" : "NULL", + "postalCode" : 90110, + "country" : "Finland", + "phone" : "981-443655" + } + }, + { + "customerID" : "WELLI", + "companyName" : "Wellington Importadora", + "contactName" : "Paula Parente", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Rua do Mercado 12", + "city" : "Resende", + "region" : "SP", + "postalCode" : "08737-363", + "country" : "Brazil", + "phone" : "(14) 555-8122" + } + }, + { + "customerID" : "WHITC", + "companyName" : "White Clover Markets", + "contactName" : "Karl Jablonski", + "contactTitle" : "Owner", + "address" : { + "street" : "305 - 14th Ave. S. Suite 3B", + "city" : "Seattle", + "region" : "WA", + "postalCode" : 98128, + "country" : "USA", + "phone" : "(206) 555-4112" + } + }, + { + "customerID" : "WILMK", + "companyName" : "Wilman Kala", + "contactName" : "Matti Karttunen", + "contactTitle" : "Owner/Marketing Assistant", + "address" : { + "street" : "Keskuskatu 45", + "city" : "Helsinki", + "region" : "NULL", + "postalCode" : 21240, + "country" : "Finland", + "phone" : "90-224 8858" + } + }, + { + "customerID" : "WOLZA", + "companyName" : "Wolski Zajazd", + "contactName" : "Zbyszek Piestrzeniewicz", + "contactTitle" : "Owner", + "address" : { + "street" : "ul. Filtrowa 68", + "city" : "Warszawa", + "region" : "NULL", + "postalCode" : "01-012", + "country" : "Poland", + "phone" : "(26) 642-7012" + } + } +] diff --git a/vue-options-api-demos/grid/common/northwind/employees.json b/vue-options-api-demos/grid/common/northwind/employees.json new file mode 100644 index 00000000..ca4d4a8b --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/employees.json @@ -0,0 +1,241 @@ + +[ + { + "employeeID" : 2, + "lastName" : "Fuller", + "firstName" : "Andrew", + "title" : "Vice President Sales", + "titleOfCourtesy" : "Dr.", + "birthDate" : "1952-02-19 00:00:00.000", + "hireDate" : "1992-08-14 00:00:00.000", + "address" : { + "street" : "908 W. Capital Way", + "city" : "Tacoma", + "region" : "WA", + "postalCode" : 98401, + "country" : "USA", + "phone" : "(206) 555-9482" + }, + "notes" : "Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative was promoted to sales manager", + "reportsTo" : "NULL", + "territoryIDs" : [ + 1730, + 1833, + 2116, + 2139, + 2184, + 40222, + 1581 + ] + }, + { + "employeeID" : 5, + "lastName" : "Buchanan", + "firstName" : "Steven", + "title" : "Sales Manager", + "titleOfCourtesy" : "Mr.", + "birthDate" : "1955-03-04 00:00:00.000", + "hireDate" : "1993-10-17 00:00:00.000", + "address" : { + "street" : "14 Garrett Hill", + "city" : "London", + "region" : "NULL", + "postalCode" : "SW1 8JR", + "country" : "UK", + "phone" : "(71) 555-4848" + }, + "notes" : "Steven Buchanan graduated from St. Andrews University in Scotland with a BSC degree in 1976. Upon joining the company as a sales representative in 1992 he spent 6 months in an orientation program at the Seattle office.", + "reportsTo" : 2, + "territoryIDs" : [ + 2903, + 7960, + 8837, + 10019, + 10038, + 11747, + 14450 + ] + }, + { + "employeeID" : 1, + "lastName" : "Davolio", + "firstName" : "Nancy", + "title" : "Sales Representative", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1948-12-08 00:00:00.000", + "hireDate" : "1992-05-01 00:00:00.000", + "address" : { + "street" : "507 20th Ave. E. Apt. 2A", + "city" : "Seattle", + "region" : "WA", + "postalCode" : 98122, + "country" : "USA", + "phone" : "(206) 555-9857" + }, + "notes" : "Education includes a BA in psychology from Colorado State University in 1970. She also completed The Art of the Cold Call. Nancy is a member of Toastmasters International.", + "reportsTo" : 2, + "territoryIDs" : [ + 6897, + 19713 + ] + }, + { + "employeeID" : 3, + "lastName" : "Leverling", + "firstName" : "Janet", + "title" : "Sales Representative", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1963-08-30 00:00:00.000", + "hireDate" : "1992-04-01 00:00:00.000", + "address" : { + "street" : "722 Moss Bay Blvd.", + "city" : "Kirkland", + "region" : "WA", + "postalCode" : 98033, + "country" : "USA", + "phone" : "(206) 555-3412" + }, + "notes" : "Janet has a BS degree in chemistry from Boston College (1984). She has also completed a certificate program in food retailing management. Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.", + "reportsTo" : 2, + "territoryIDs" : [ + 30346, + 31406, + 32859, + 33607 + ] + }, + { + "employeeID" : 4, + "lastName" : "Peacock", + "firstName" : "Margaret", + "title" : "Sales Representative", + "titleOfCourtesy" : "Mrs.", + "birthDate" : "1937-09-19 00:00:00.000", + "hireDate" : "1993-05-03 00:00:00.000", + "address" : { + "street" : "4110 Old Redmond Rd.", + "city" : "Redmond", + "region" : "WA", + "postalCode" : 98052, + "country" : "USA", + "phone" : "(206) 555-8122" + }, + "notes" : "Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966). She was assigned to the London office temporarily from July through November 1992.", + "reportsTo" : 2, + "territoryIDs" : [ + 20852, + 27403, + 27511 + ] + }, + { + "employeeID" : 6, + "lastName" : "Suyama", + "firstName" : "Michael", + "title" : "Sales Representative", + "titleOfCourtesy" : "Mr.", + "birthDate" : "1963-07-02 00:00:00.000", + "hireDate" : "1993-10-17 00:00:00.000", + "address" : { + "street" : "Coventry House Miner Rd.", + "city" : "London", + "region" : "NULL", + "postalCode" : "EC2 7JR", + "country" : "UK", + "phone" : "(71) 555-7773" + }, + "notes" : "Michael is a graduate of Sussex University (MA Economics 1983) and the University of California at Los Angeles (MBA marketing 1986). He has also taken the courses Multi-Cultural Selling and Time Management for the Sales Professional.", + "reportsTo" : 5, + "territoryIDs" : [ + 85014, + 85251, + 98004, + 98104, + 98052 + ] + }, + { + "employeeID" : 7, + "lastName" : "King", + "firstName" : "Robert", + "title" : "Sales Representative", + "titleOfCourtesy" : "Mr.", + "birthDate" : "1960-05-29 00:00:00.000", + "hireDate" : "1994-01-02 00:00:00.000", + "address" : { + "street" : "Edgeham Hollow Winchester Way", + "city" : "London", + "region" : "NULL", + "postalCode" : "RG1 9SP", + "country" : "UK", + "phone" : "(71) 555-5598" + }, + "notes" : "Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992 the year he joined the company.", + "reportsTo" : 5, + "territoryIDs" : [ + 60601, + 80202, + 80909, + 90405, + 94025, + 94105, + 95008, + 95054, + 95060, + 60179 + ] + }, + { + "employeeID" : 8, + "lastName" : "Callahan", + "firstName" : "Laura", + "title" : "Inside Sales Coordinator", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1958-01-09 00:00:00.000", + "hireDate" : "1994-03-05 00:00:00.000", + "address" : { + "street" : "4726 11th Ave. N.E.", + "city" : "Seattle", + "region" : "WA", + "postalCode" : 98105, + "country" : "USA", + "phone" : "(206) 555-1189" + }, + "notes" : "Laura received a BA in psychology from the University of Washington. She has also completed a course in business French. She reads and writes French.", + "reportsTo" : 2, + "territoryIDs" : [ + 19428, + 44122, + 45839, + 53404 + ] + }, + { + "employeeID" : 9, + "lastName" : "Dodsworth", + "firstName" : "Anne", + "title" : "Sales Representative", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1966-01-27 00:00:00.000", + "hireDate" : "1994-11-15 00:00:00.000", + "address" : { + "street" : "7 Houndstooth Rd.", + "city" : "London", + "region" : "NULL", + "postalCode" : "WG2 7LT", + "country" : "UK", + "phone" : "(71) 555-4444" + }, + "notes" : "Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.", + "reportsTo" : 5, + "territoryIDs" : [ + 3049, + 3801, + 48075, + 48084, + 48304, + 55113, + 55439 + ] + } +] diff --git a/vue-options-api-demos/grid/common/northwind/orders.json b/vue-options-api-demos/grid/common/northwind/orders.json new file mode 100644 index 00000000..9d8d8ac9 --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/orders.json @@ -0,0 +1,25576 @@ +[ + { + "orderID": 10271, + "customerID": "SPLIR", + "employeeID": 6, + "orderDate": "1996-08-01 00:00:00.000", + "requiredDate": "1996-08-29 00:00:00.000", + "shippedDate": "1996-08-30 00:00:00.000", + "shipVia": 2, + "freight": 4.54, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10266, + "customerID": "WARTH", + "employeeID": 3, + "orderDate": "1996-07-26 00:00:00.000", + "requiredDate": "1996-09-06 00:00:00.000", + "shippedDate": "1996-07-31 00:00:00.000", + "shipVia": 3, + "freight": 25.73, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 12, + "unitPrice": 30.4, + "quantity": 12, + "discount": 0.05 + } + ] + }, + { + "orderID": 10279, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1996-08-13 00:00:00.000", + "requiredDate": "1996-09-10 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 2, + "freight": 25.83, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10292, + "customerID": "TRADH", + "employeeID": 1, + "orderDate": "1996-08-28 00:00:00.000", + "requiredDate": "1996-09-25 00:00:00.000", + "shippedDate": "1996-09-02 00:00:00.000", + "shipVia": 2, + "freight": 1.35, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10295, + "customerID": "VINET", + "employeeID": 2, + "orderDate": "1996-09-02 00:00:00.000", + "requiredDate": "1996-09-30 00:00:00.000", + "shippedDate": "1996-09-10 00:00:00.000", + "shipVia": 2, + "freight": 1.15, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10313, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1996-09-24 00:00:00.000", + "requiredDate": "1996-10-22 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 1.96, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10317, + "customerID": "LONEP", + "employeeID": 6, + "orderDate": "1996-09-30 00:00:00.000", + "requiredDate": "1996-10-28 00:00:00.000", + "shippedDate": "1996-10-10 00:00:00.000", + "shipVia": 1, + "freight": 12.69, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10322, + "customerID": "PERIC", + "employeeID": 7, + "orderDate": "1996-10-04 00:00:00.000", + "requiredDate": "1996-11-01 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 3, + "freight": 0.4, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10320, + "customerID": "WARTH", + "employeeID": 5, + "orderDate": "1996-10-03 00:00:00.000", + "requiredDate": "1996-10-17 00:00:00.000", + "shippedDate": "1996-10-18 00:00:00.000", + "shipVia": 3, + "freight": 34.57, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10321, + "customerID": "ISLAT", + "employeeID": 3, + "orderDate": "1996-10-03 00:00:00.000", + "requiredDate": "1996-10-31 00:00:00.000", + "shippedDate": "1996-10-11 00:00:00.000", + "shipVia": 2, + "freight": 3.43, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10336, + "customerID": "PRINI", + "employeeID": 7, + "orderDate": "1996-10-23 00:00:00.000", + "requiredDate": "1996-11-20 00:00:00.000", + "shippedDate": "1996-10-25 00:00:00.000", + "shipVia": 2, + "freight": 15.51, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10349, + "customerID": "SPLIR", + "employeeID": 7, + "orderDate": "1996-11-08 00:00:00.000", + "requiredDate": "1996-12-06 00:00:00.000", + "shippedDate": "1996-11-15 00:00:00.000", + "shipVia": 1, + "freight": 8.63, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10331, + "customerID": "BONAP", + "employeeID": 9, + "orderDate": "1996-10-16 00:00:00.000", + "requiredDate": "1996-11-27 00:00:00.000", + "shippedDate": "1996-10-21 00:00:00.000", + "shipVia": 1, + "freight": 10.19, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10365, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1996-11-27 00:00:00.000", + "requiredDate": "1996-12-25 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 2, + "freight": 22, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10371, + "customerID": "LAMAI", + "employeeID": 1, + "orderDate": "1996-12-03 00:00:00.000", + "requiredDate": "1996-12-31 00:00:00.000", + "shippedDate": "1996-12-24 00:00:00.000", + "shipVia": 1, + "freight": 0.45, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10376, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1996-12-09 00:00:00.000", + "requiredDate": "1997-01-06 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 2, + "freight": 20.39, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 42, + "discount": 0.05 + } + ] + }, + { + "orderID": 10378, + "customerID": "FOLKO", + "employeeID": 5, + "orderDate": "1996-12-10 00:00:00.000", + "requiredDate": "1997-01-07 00:00:00.000", + "shippedDate": "1996-12-19 00:00:00.000", + "shipVia": 3, + "freight": 5.44, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10392, + "customerID": "PICCO", + "employeeID": 2, + "orderDate": "1996-12-24 00:00:00.000", + "requiredDate": "1997-01-21 00:00:00.000", + "shippedDate": "1997-01-01 00:00:00.000", + "shipVia": 3, + "freight": 122.46, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10391, + "customerID": "DRACD", + "employeeID": 3, + "orderDate": "1996-12-23 00:00:00.000", + "requiredDate": "1997-01-20 00:00:00.000", + "shippedDate": "1996-12-31 00:00:00.000", + "shipVia": 3, + "freight": 5.45, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10405, + "customerID": "LINOD", + "employeeID": 1, + "orderDate": "1997-01-06 00:00:00.000", + "requiredDate": "1997-02-03 00:00:00.000", + "shippedDate": "1997-01-22 00:00:00.000", + "shipVia": 1, + "freight": 34.82, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 3, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10412, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-01-13 00:00:00.000", + "requiredDate": "1997-02-10 00:00:00.000", + "shippedDate": "1997-01-15 00:00:00.000", + "shipVia": 2, + "freight": 3.77, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10422, + "customerID": "FRANS", + "employeeID": 2, + "orderDate": "1997-01-22 00:00:00.000", + "requiredDate": "1997-02-19 00:00:00.000", + "shippedDate": "1997-01-31 00:00:00.000", + "shipVia": 1, + "freight": 3.02, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10433, + "customerID": "PRINI", + "employeeID": 3, + "orderDate": "1997-02-03 00:00:00.000", + "requiredDate": "1997-03-03 00:00:00.000", + "shippedDate": "1997-03-04 00:00:00.000", + "shipVia": 3, + "freight": 73.83, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10427, + "customerID": "PICCO", + "employeeID": 4, + "orderDate": "1997-01-27 00:00:00.000", + "requiredDate": "1997-02-24 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 2, + "freight": 31.29, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10437, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-02-05 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-02-12 00:00:00.000", + "shipVia": 1, + "freight": 19.97, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10428, + "customerID": "REGGC", + "employeeID": 7, + "orderDate": "1997-01-28 00:00:00.000", + "requiredDate": "1997-02-25 00:00:00.000", + "shippedDate": "1997-02-04 00:00:00.000", + "shipVia": 1, + "freight": 11.09, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10441, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1997-02-10 00:00:00.000", + "requiredDate": "1997-03-24 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 73.02, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10457, + "customerID": "KOENE", + "employeeID": 2, + "orderDate": "1997-02-25 00:00:00.000", + "requiredDate": "1997-03-25 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 1, + "freight": 11.57, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10478, + "customerID": "VICTE", + "employeeID": 2, + "orderDate": "1997-03-18 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-26 00:00:00.000", + "shipVia": 3, + "freight": 4.81, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10482, + "customerID": "LAZYK", + "employeeID": 1, + "orderDate": "1997-03-21 00:00:00.000", + "requiredDate": "1997-04-18 00:00:00.000", + "shippedDate": "1997-04-10 00:00:00.000", + "shipVia": 3, + "freight": 7.48, + "shipName": "Lazy K Kountry Store", + "shipAddress": { + "street": "12 Orchestra Terrace", + "city": "Walla Walla", + "region": "WA", + "postalCode": 99362, + "country": "USA" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10494, + "customerID": "COMMI", + "employeeID": 4, + "orderDate": "1997-04-02 00:00:00.000", + "requiredDate": "1997-04-30 00:00:00.000", + "shippedDate": "1997-04-09 00:00:00.000", + "shipVia": 2, + "freight": 65.99, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10501, + "customerID": "BLAUS", + "employeeID": 9, + "orderDate": "1997-04-09 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 3, + "freight": 8.85, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10496, + "customerID": "TRADH", + "employeeID": 7, + "orderDate": "1997-04-04 00:00:00.000", + "requiredDate": "1997-05-02 00:00:00.000", + "shippedDate": "1997-04-07 00:00:00.000", + "shipVia": 2, + "freight": 46.77, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10509, + "customerID": "BLAUS", + "employeeID": 4, + "orderDate": "1997-04-17 00:00:00.000", + "requiredDate": "1997-05-15 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 1, + "freight": 0.15, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10505, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-04-14 00:00:00.000", + "requiredDate": "1997-05-12 00:00:00.000", + "shippedDate": "1997-04-21 00:00:00.000", + "shipVia": 3, + "freight": 7.13, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10545, + "customerID": "LAZYK", + "employeeID": 8, + "orderDate": "1997-05-22 00:00:00.000", + "requiredDate": "1997-06-19 00:00:00.000", + "shippedDate": "1997-06-26 00:00:00.000", + "shipVia": 2, + "freight": 11.92, + "shipName": "Lazy K Kountry Store", + "shipAddress": { + "street": "12 Orchestra Terrace", + "city": "Walla Walla", + "region": "WA", + "postalCode": 99362, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10556, + "customerID": "SIMOB", + "employeeID": 2, + "orderDate": "1997-06-03 00:00:00.000", + "requiredDate": "1997-07-15 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 1, + "freight": 9.8, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10568, + "customerID": "GALED", + "employeeID": 3, + "orderDate": "1997-06-13 00:00:00.000", + "requiredDate": "1997-07-11 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 3, + "freight": 6.54, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10581, + "customerID": "FAMIA", + "employeeID": 3, + "orderDate": "1997-06-26 00:00:00.000", + "requiredDate": "1997-07-24 00:00:00.000", + "shippedDate": "1997-07-02 00:00:00.000", + "shipVia": 1, + "freight": 3.01, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10585, + "customerID": "WELLI", + "employeeID": 7, + "orderDate": "1997-07-01 00:00:00.000", + "requiredDate": "1997-07-29 00:00:00.000", + "shippedDate": "1997-07-10 00:00:00.000", + "shipVia": 1, + "freight": 13.41, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10586, + "customerID": "REGGC", + "employeeID": 9, + "orderDate": "1997-07-02 00:00:00.000", + "requiredDate": "1997-07-30 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 1, + "freight": 0.48, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 4, + "discount": 0.15 + } + ] + }, + { + "orderID": 10589, + "customerID": "GREAL", + "employeeID": 8, + "orderDate": "1997-07-04 00:00:00.000", + "requiredDate": "1997-08-01 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 2, + "freight": 4.42, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10584, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1997-06-30 00:00:00.000", + "requiredDate": "1997-07-28 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 1, + "freight": 59.14, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0.05 + } + ] + }, + { + "orderID": 10599, + "customerID": "BSBEV", + "employeeID": 6, + "orderDate": "1997-07-15 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-07-21 00:00:00.000", + "shipVia": 3, + "freight": 29.98, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10602, + "customerID": "VAFFE", + "employeeID": 8, + "orderDate": "1997-07-17 00:00:00.000", + "requiredDate": "1997-08-14 00:00:00.000", + "shippedDate": "1997-07-22 00:00:00.000", + "shipVia": 2, + "freight": 2.92, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 77, + "unitPrice": 13, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10608, + "customerID": "TOMSP", + "employeeID": 4, + "orderDate": "1997-07-23 00:00:00.000", + "requiredDate": "1997-08-20 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 27.79, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10610, + "customerID": "LAMAI", + "employeeID": 8, + "orderDate": "1997-07-25 00:00:00.000", + "requiredDate": "1997-08-22 00:00:00.000", + "shippedDate": "1997-08-06 00:00:00.000", + "shipVia": 1, + "freight": 26.78, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 21, + "discount": 0.25 + } + ] + }, + { + "orderID": 10615, + "customerID": "WILMK", + "employeeID": 2, + "orderDate": "1997-07-30 00:00:00.000", + "requiredDate": "1997-08-27 00:00:00.000", + "shippedDate": "1997-08-06 00:00:00.000", + "shipVia": 3, + "freight": 0.75, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10617, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1997-07-31 00:00:00.000", + "requiredDate": "1997-08-28 00:00:00.000", + "shippedDate": "1997-08-04 00:00:00.000", + "shipVia": 2, + "freight": 18.53, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10628, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1997-08-12 00:00:00.000", + "requiredDate": "1997-09-09 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 3, + "freight": 30.36, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10631, + "customerID": "LAMAI", + "employeeID": 8, + "orderDate": "1997-08-14 00:00:00.000", + "requiredDate": "1997-09-11 00:00:00.000", + "shippedDate": "1997-08-15 00:00:00.000", + "shipVia": 1, + "freight": 0.87, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 8, + "discount": 0.1 + } + ] + }, + { + "orderID": 10639, + "customerID": "SANTG", + "employeeID": 7, + "orderDate": "1997-08-20 00:00:00.000", + "requiredDate": "1997-09-17 00:00:00.000", + "shippedDate": "1997-08-27 00:00:00.000", + "shipVia": 3, + "freight": 38.64, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10655, + "customerID": "REGGC", + "employeeID": 1, + "orderDate": "1997-09-03 00:00:00.000", + "requiredDate": "1997-10-01 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 2, + "freight": 4.41, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10660, + "customerID": "HUNGC", + "employeeID": 8, + "orderDate": "1997-09-08 00:00:00.000", + "requiredDate": "1997-10-06 00:00:00.000", + "shippedDate": "1997-10-15 00:00:00.000", + "shipVia": 1, + "freight": 111.29, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10662, + "customerID": "LONEP", + "employeeID": 3, + "orderDate": "1997-09-09 00:00:00.000", + "requiredDate": "1997-10-07 00:00:00.000", + "shippedDate": "1997-09-18 00:00:00.000", + "shipVia": 2, + "freight": 1.28, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10669, + "customerID": "SIMOB", + "employeeID": 2, + "orderDate": "1997-09-15 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-09-22 00:00:00.000", + "shipVia": 1, + "freight": 24.39, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10679, + "customerID": "BLONP", + "employeeID": 8, + "orderDate": "1997-09-23 00:00:00.000", + "requiredDate": "1997-10-21 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 3, + "freight": 27.94, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10683, + "customerID": "DUMON", + "employeeID": 2, + "orderDate": "1997-09-26 00:00:00.000", + "requiredDate": "1997-10-24 00:00:00.000", + "shippedDate": "1997-10-01 00:00:00.000", + "shipVia": 1, + "freight": 4.4, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10674, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-09-18 00:00:00.000", + "requiredDate": "1997-10-16 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 2, + "freight": 0.9, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10692, + "customerID": "ALFKI", + "employeeID": 4, + "orderDate": "1997-10-03 00:00:00.000", + "requiredDate": "1997-10-31 00:00:00.000", + "shippedDate": "1997-10-13 00:00:00.000", + "shipVia": 2, + "freight": 61.02, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10689, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-10-01 00:00:00.000", + "requiredDate": "1997-10-29 00:00:00.000", + "shippedDate": "1997-10-07 00:00:00.000", + "shipVia": 2, + "freight": 13.42, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10699, + "customerID": "MORGK", + "employeeID": 3, + "orderDate": "1997-10-09 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-13 00:00:00.000", + "shipVia": 3, + "freight": 0.58, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10721, + "customerID": "QUICK", + "employeeID": 5, + "orderDate": "1997-10-29 00:00:00.000", + "requiredDate": "1997-11-26 00:00:00.000", + "shippedDate": "1997-10-31 00:00:00.000", + "shipVia": 3, + "freight": 48.92, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 50, + "discount": 0.05 + } + ] + }, + { + "orderID": 10723, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1997-10-30 00:00:00.000", + "requiredDate": "1997-11-27 00:00:00.000", + "shippedDate": "1997-11-25 00:00:00.000", + "shipVia": 1, + "freight": 21.72, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10738, + "customerID": "SPECD", + "employeeID": 2, + "orderDate": "1997-11-12 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 1, + "freight": 2.91, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10741, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1997-11-14 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 3, + "freight": 10.96, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10732, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1997-11-06 00:00:00.000", + "requiredDate": "1997-12-04 00:00:00.000", + "shippedDate": "1997-11-07 00:00:00.000", + "shipVia": 1, + "freight": 16.97, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10743, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-11-17 00:00:00.000", + "requiredDate": "1997-12-15 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 23.72, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 46, + "unitPrice": 12, + "quantity": 28, + "discount": 0.05 + } + ] + }, + { + "orderID": 10754, + "customerID": "MAGAA", + "employeeID": 6, + "orderDate": "1997-11-25 00:00:00.000", + "requiredDate": "1997-12-23 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 3, + "freight": 2.38, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10744, + "customerID": "VAFFE", + "employeeID": 6, + "orderDate": "1997-11-17 00:00:00.000", + "requiredDate": "1997-12-15 00:00:00.000", + "shippedDate": "1997-11-24 00:00:00.000", + "shipVia": 1, + "freight": 69.19, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10765, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1997-12-04 00:00:00.000", + "requiredDate": "1998-01-01 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 3, + "freight": 42.74, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 80, + "discount": 0.1 + } + ] + }, + { + "orderID": 10770, + "customerID": "HANAR", + "employeeID": 8, + "orderDate": "1997-12-09 00:00:00.000", + "requiredDate": "1998-01-06 00:00:00.000", + "shippedDate": "1997-12-17 00:00:00.000", + "shipVia": 3, + "freight": 5.32, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10771, + "customerID": "ERNSH", + "employeeID": 9, + "orderDate": "1997-12-10 00:00:00.000", + "requiredDate": "1998-01-07 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 2, + "freight": 11.19, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10767, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1997-12-05 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 3, + "freight": 1.59, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10782, + "customerID": "CACTU", + "employeeID": 9, + "orderDate": "1997-12-17 00:00:00.000", + "requiredDate": "1998-01-14 00:00:00.000", + "shippedDate": "1997-12-22 00:00:00.000", + "shipVia": 3, + "freight": 1.1, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10777, + "customerID": "GOURL", + "employeeID": 7, + "orderDate": "1997-12-15 00:00:00.000", + "requiredDate": "1997-12-29 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 2, + "freight": 3.01, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10778, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1998-01-13 00:00:00.000", + "shippedDate": "1997-12-24 00:00:00.000", + "shipVia": 1, + "freight": 6.79, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10797, + "customerID": "DRACD", + "employeeID": 7, + "orderDate": "1997-12-25 00:00:00.000", + "requiredDate": "1998-01-22 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 2, + "freight": 33.35, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10807, + "customerID": "FRANS", + "employeeID": 4, + "orderDate": "1997-12-31 00:00:00.000", + "requiredDate": "1998-01-28 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 1.36, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10809, + "customerID": "WELLI", + "employeeID": 7, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 1, + "freight": 4.87, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10815, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 3, + "freight": 14.62, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10820, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 37.52, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10843, + "customerID": "VICTE", + "employeeID": 4, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-18 00:00:00.000", + "shippedDate": "1998-01-26 00:00:00.000", + "shipVia": 2, + "freight": 9.26, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 4, + "discount": 0.25 + } + ] + }, + { + "orderID": 10844, + "customerID": "PICCO", + "employeeID": 8, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-18 00:00:00.000", + "shippedDate": "1998-01-26 00:00:00.000", + "shipVia": 2, + "freight": 25.22, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10853, + "customerID": "BLAUS", + "employeeID": 9, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-03 00:00:00.000", + "shipVia": 2, + "freight": 53.83, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10874, + "customerID": "GODOS", + "employeeID": 5, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-02-11 00:00:00.000", + "shipVia": 2, + "freight": 19.58, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10867, + "customerID": "LONEP", + "employeeID": 6, + "orderDate": "1998-02-03 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-11 00:00:00.000", + "shipVia": 1, + "freight": 1.93, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10878, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-10 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 46.69, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10883, + "customerID": "LONEP", + "employeeID": 8, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 3, + "freight": 0.53, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10887, + "customerID": "GALED", + "employeeID": 8, + "orderDate": "1998-02-13 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-02-16 00:00:00.000", + "shipVia": 3, + "freight": 1.25, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10891, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1998-02-17 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 2, + "freight": 20.37, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10892, + "customerID": "MAISD", + "employeeID": 4, + "orderDate": "1998-02-17 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 2, + "freight": 120.27, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10881, + "customerID": "CACTU", + "employeeID": 4, + "orderDate": "1998-02-11 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 2.84, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 73, + "unitPrice": 15, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10900, + "customerID": "WELLI", + "employeeID": 1, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 2, + "freight": 1.66, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 3, + "discount": 0.25 + } + ] + }, + { + "orderID": 10905, + "customerID": "WELLI", + "employeeID": 9, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 13.72, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10914, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 1, + "freight": 21.19, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10906, + "customerID": "WOLZA", + "employeeID": 4, + "orderDate": "1998-02-25 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 3, + "freight": 26.29, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10907, + "customerID": "SPECD", + "employeeID": 6, + "orderDate": "1998-02-25 00:00:00.000", + "requiredDate": "1998-03-25 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 9.19, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10920, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-03-31 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 2, + "freight": 29.61, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10934, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-12 00:00:00.000", + "shipVia": 3, + "freight": 32.01, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10936, + "customerID": "GREAL", + "employeeID": 3, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 2, + "freight": 33.68, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10942, + "customerID": "REGGC", + "employeeID": 9, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 17.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 49, + "unitPrice": 20, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10947, + "customerID": "BSBEV", + "employeeID": 3, + "orderDate": "1998-03-13 00:00:00.000", + "requiredDate": "1998-04-10 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 2, + "freight": 3.26, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10955, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-03-17 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-20 00:00:00.000", + "shipVia": 2, + "freight": 3.26, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 12, + "discount": 0.2 + } + ] + }, + { + "orderID": 10950, + "customerID": "MAGAA", + "employeeID": 1, + "orderDate": "1998-03-16 00:00:00.000", + "requiredDate": "1998-04-13 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 2, + "freight": 2.5, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10963, + "customerID": "FURIB", + "employeeID": 9, + "orderDate": "1998-03-19 00:00:00.000", + "requiredDate": "1998-04-16 00:00:00.000", + "shippedDate": "1998-03-26 00:00:00.000", + "shipVia": 3, + "freight": 2.7, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 60, + "unitPrice": 34, + "quantity": 2, + "discount": 0.15 + } + ] + }, + { + "orderID": 10969, + "customerID": "COMMI", + "employeeID": 1, + "orderDate": "1998-03-23 00:00:00.000", + "requiredDate": "1998-04-20 00:00:00.000", + "shippedDate": "1998-03-30 00:00:00.000", + "shipVia": 2, + "freight": 0.21, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 46, + "unitPrice": 12, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10970, + "customerID": "BOLID", + "employeeID": 9, + "orderDate": "1998-03-24 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-04-24 00:00:00.000", + "shipVia": 1, + "freight": 16.16, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10971, + "customerID": "FRANR", + "employeeID": 2, + "orderDate": "1998-03-24 00:00:00.000", + "requiredDate": "1998-04-21 00:00:00.000", + "shippedDate": "1998-04-02 00:00:00.000", + "shipVia": 2, + "freight": 121.82, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10965, + "customerID": "OLDWO", + "employeeID": 6, + "orderDate": "1998-03-20 00:00:00.000", + "requiredDate": "1998-04-17 00:00:00.000", + "shippedDate": "1998-03-30 00:00:00.000", + "shipVia": 3, + "freight": 144.38, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10974, + "customerID": "SPLIR", + "employeeID": 3, + "orderDate": "1998-03-25 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-04-03 00:00:00.000", + "shipVia": 3, + "freight": 12.96, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10980, + "customerID": "FOLKO", + "employeeID": 4, + "orderDate": "1998-03-27 00:00:00.000", + "requiredDate": "1998-05-08 00:00:00.000", + "shippedDate": "1998-04-17 00:00:00.000", + "shipVia": 1, + "freight": 1.26, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10981, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1998-03-27 00:00:00.000", + "requiredDate": "1998-04-24 00:00:00.000", + "shippedDate": "1998-04-02 00:00:00.000", + "shipVia": 2, + "freight": 193.37, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10959, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1998-03-18 00:00:00.000", + "requiredDate": "1998-04-29 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 2, + "freight": 4.98, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10992, + "customerID": "THEBI", + "employeeID": 1, + "orderDate": "1998-04-01 00:00:00.000", + "requiredDate": "1998-04-29 00:00:00.000", + "shippedDate": "1998-04-03 00:00:00.000", + "shipVia": 3, + "freight": 4.27, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10994, + "customerID": "VAFFE", + "employeeID": 2, + "orderDate": "1998-04-02 00:00:00.000", + "requiredDate": "1998-04-16 00:00:00.000", + "shippedDate": "1998-04-09 00:00:00.000", + "shipVia": 3, + "freight": 65.53, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 18, + "discount": 0.05 + } + ] + }, + { + "orderID": 10996, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1998-04-02 00:00:00.000", + "requiredDate": "1998-04-30 00:00:00.000", + "shippedDate": "1998-04-10 00:00:00.000", + "shipVia": 2, + "freight": 1.12, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 11014, + "customerID": "LINOD", + "employeeID": 2, + "orderDate": "1998-04-10 00:00:00.000", + "requiredDate": "1998-05-08 00:00:00.000", + "shippedDate": "1998-04-15 00:00:00.000", + "shipVia": 3, + "freight": 23.6, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 28, + "discount": 0.1 + } + ] + }, + { + "orderID": 11020, + "customerID": "OTTIK", + "employeeID": 2, + "orderDate": "1998-04-14 00:00:00.000", + "requiredDate": "1998-05-12 00:00:00.000", + "shippedDate": "1998-04-16 00:00:00.000", + "shipVia": 2, + "freight": 43.3, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 24, + "discount": 0.15 + } + ] + }, + { + "orderID": 11040, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-04-22 00:00:00.000", + "requiredDate": "1998-05-20 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 18.84, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 11043, + "customerID": "SPECD", + "employeeID": 5, + "orderDate": "1998-04-22 00:00:00.000", + "requiredDate": "1998-05-20 00:00:00.000", + "shippedDate": "1998-04-29 00:00:00.000", + "shipVia": 2, + "freight": 8.8, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 11044, + "customerID": "WOLZA", + "employeeID": 4, + "orderDate": "1998-04-23 00:00:00.000", + "requiredDate": "1998-05-21 00:00:00.000", + "shippedDate": "1998-05-01 00:00:00.000", + "shipVia": 1, + "freight": 8.72, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 11048, + "customerID": "BOTTM", + "employeeID": 7, + "orderDate": "1998-04-24 00:00:00.000", + "requiredDate": "1998-05-22 00:00:00.000", + "shippedDate": "1998-04-30 00:00:00.000", + "shipVia": 3, + "freight": 24.12, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 42, + "discount": 0 + } + ] + }, + { + "orderID": 11037, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1998-04-21 00:00:00.000", + "requiredDate": "1998-05-19 00:00:00.000", + "shippedDate": "1998-04-27 00:00:00.000", + "shipVia": 1, + "freight": 3.2, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 11050, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-04-27 00:00:00.000", + "requiredDate": "1998-05-25 00:00:00.000", + "shippedDate": "1998-05-05 00:00:00.000", + "shipVia": 2, + "freight": 59.41, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0.1 + } + ] + }, + { + "orderID": 11057, + "customerID": "NORTS", + "employeeID": 3, + "orderDate": "1998-04-29 00:00:00.000", + "requiredDate": "1998-05-27 00:00:00.000", + "shippedDate": "1998-05-01 00:00:00.000", + "shipVia": 3, + "freight": 4.13, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 11061, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-04-30 00:00:00.000", + "requiredDate": "1998-06-11 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 14.01, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 11051, + "customerID": "LAMAI", + "employeeID": 7, + "orderDate": "1998-04-27 00:00:00.000", + "requiredDate": "1998-05-25 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 2.79, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 11067, + "customerID": "DRACD", + "employeeID": 1, + "orderDate": "1998-05-04 00:00:00.000", + "requiredDate": "1998-05-18 00:00:00.000", + "shippedDate": "1998-05-06 00:00:00.000", + "shipVia": 2, + "freight": 7.98, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 11069, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1998-05-04 00:00:00.000", + "requiredDate": "1998-06-01 00:00:00.000", + "shippedDate": "1998-05-06 00:00:00.000", + "shipVia": 2, + "freight": 15.67, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 11074, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1998-05-06 00:00:00.000", + "requiredDate": "1998-06-03 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 2, + "freight": 18.44, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10248, + "customerID": "VINET", + "employeeID": 5, + "orderDate": "1996-07-04 00:00:00.000", + "requiredDate": "1996-08-01 00:00:00.000", + "shippedDate": "1996-07-16 00:00:00.000", + "shipVia": 3, + "freight": 32.38, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 14, + "quantity": 12, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 9.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10249, + "customerID": "TOMSP", + "employeeID": 6, + "orderDate": "1996-07-05 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-10 00:00:00.000", + "shipVia": 1, + "freight": 11.61, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 9, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10250, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1996-07-08 00:00:00.000", + "requiredDate": "1996-08-05 00:00:00.000", + "shippedDate": "1996-07-12 00:00:00.000", + "shipVia": 2, + "freight": 65.83, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10252, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1996-07-09 00:00:00.000", + "requiredDate": "1996-08-06 00:00:00.000", + "shippedDate": "1996-07-11 00:00:00.000", + "shipVia": 2, + "freight": 51.3, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10253, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1996-07-10 00:00:00.000", + "requiredDate": "1996-07-24 00:00:00.000", + "shippedDate": "1996-07-16 00:00:00.000", + "shipVia": 2, + "freight": 58.17, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 42, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10251, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1996-07-08 00:00:00.000", + "requiredDate": "1996-08-05 00:00:00.000", + "shippedDate": "1996-07-15 00:00:00.000", + "shipVia": 1, + "freight": 41.34, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 22, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0.05 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10257, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1996-07-16 00:00:00.000", + "requiredDate": "1996-08-13 00:00:00.000", + "shippedDate": "1996-07-22 00:00:00.000", + "shipVia": 3, + "freight": 81.91, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 25, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10258, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1996-07-17 00:00:00.000", + "requiredDate": "1996-08-14 00:00:00.000", + "shippedDate": "1996-07-23 00:00:00.000", + "shipVia": 1, + "freight": 140.51, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 5, + "unitPrice": 17, + "quantity": 65, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10259, + "customerID": "CENTC", + "employeeID": 4, + "orderDate": "1996-07-18 00:00:00.000", + "requiredDate": "1996-08-15 00:00:00.000", + "shippedDate": "1996-07-25 00:00:00.000", + "shipVia": 3, + "freight": 3.25, + "shipName": "Centro comercial Moctezuma", + "shipAddress": { + "street": "Sierras de Granada 9993", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5022, + "country": "Mexico" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10260, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1996-07-19 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-29 00:00:00.000", + "shipVia": 1, + "freight": 55.09, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 16, + "discount": 0.25 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 50, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 21, + "discount": 0.25 + } + ] + }, + { + "orderID": 10261, + "customerID": "QUEDE", + "employeeID": 4, + "orderDate": "1996-07-19 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-30 00:00:00.000", + "shipVia": 2, + "freight": 3.05, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10262, + "customerID": "RATTC", + "employeeID": 8, + "orderDate": "1996-07-22 00:00:00.000", + "requiredDate": "1996-08-19 00:00:00.000", + "shippedDate": "1996-07-25 00:00:00.000", + "shipVia": 3, + "freight": 48.29, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 5, + "unitPrice": 17, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 7, + "unitPrice": 24, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10256, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1996-07-15 00:00:00.000", + "requiredDate": "1996-08-12 00:00:00.000", + "shippedDate": "1996-07-17 00:00:00.000", + "shipVia": 2, + "freight": 13.97, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10255, + "customerID": "RICSU", + "employeeID": 9, + "orderDate": "1996-07-12 00:00:00.000", + "requiredDate": "1996-08-09 00:00:00.000", + "shippedDate": "1996-07-15 00:00:00.000", + "shipVia": 3, + "freight": 148.33, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 35, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10264, + "customerID": "FOLKO", + "employeeID": 6, + "orderDate": "1996-07-24 00:00:00.000", + "requiredDate": "1996-08-21 00:00:00.000", + "shippedDate": "1996-08-23 00:00:00.000", + "shipVia": 3, + "freight": 3.67, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 35, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10265, + "customerID": "BLONP", + "employeeID": 2, + "orderDate": "1996-07-25 00:00:00.000", + "requiredDate": "1996-08-22 00:00:00.000", + "shippedDate": "1996-08-12 00:00:00.000", + "shipVia": 1, + "freight": 55.28, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10254, + "customerID": "CHOPS", + "employeeID": 5, + "orderDate": "1996-07-11 00:00:00.000", + "requiredDate": "1996-08-08 00:00:00.000", + "shippedDate": "1996-07-23 00:00:00.000", + "shipVia": 2, + "freight": 22.98, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10263, + "customerID": "ERNSH", + "employeeID": 9, + "orderDate": "1996-07-23 00:00:00.000", + "requiredDate": "1996-08-20 00:00:00.000", + "shippedDate": "1996-07-31 00:00:00.000", + "shipVia": 3, + "freight": 146.06, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 28, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 36, + "discount": 0.25 + } + ] + }, + { + "orderID": 10268, + "customerID": "GROSR", + "employeeID": 8, + "orderDate": "1996-07-30 00:00:00.000", + "requiredDate": "1996-08-27 00:00:00.000", + "shippedDate": "1996-08-02 00:00:00.000", + "shipVia": 3, + "freight": 66.29, + "shipName": "GROSELLA-Restaurante", + "shipAddress": { + "street": "5ª Ave. Los Palos Grandes", + "city": "Caracas", + "region": "DF", + "postalCode": 1081, + "country": "Venezuela" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10267, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-07-29 00:00:00.000", + "requiredDate": "1996-08-26 00:00:00.000", + "shippedDate": "1996-08-06 00:00:00.000", + "shipVia": 1, + "freight": 208.58, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 50, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10270, + "customerID": "WARTH", + "employeeID": 1, + "orderDate": "1996-08-01 00:00:00.000", + "requiredDate": "1996-08-29 00:00:00.000", + "shippedDate": "1996-08-02 00:00:00.000", + "shipVia": 1, + "freight": 136.54, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10274, + "customerID": "VINET", + "employeeID": 6, + "orderDate": "1996-08-06 00:00:00.000", + "requiredDate": "1996-09-03 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 1, + "freight": 6.01, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10275, + "customerID": "MAGAA", + "employeeID": 1, + "orderDate": "1996-08-07 00:00:00.000", + "requiredDate": "1996-09-04 00:00:00.000", + "shippedDate": "1996-08-09 00:00:00.000", + "shipVia": 1, + "freight": 26.93, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 6, + "discount": 0.05 + } + ] + }, + { + "orderID": 10276, + "customerID": "TORTU", + "employeeID": 8, + "orderDate": "1996-08-08 00:00:00.000", + "requiredDate": "1996-08-22 00:00:00.000", + "shippedDate": "1996-08-14 00:00:00.000", + "shipVia": 3, + "freight": 13.84, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10277, + "customerID": "MORGK", + "employeeID": 2, + "orderDate": "1996-08-09 00:00:00.000", + "requiredDate": "1996-09-06 00:00:00.000", + "shippedDate": "1996-08-13 00:00:00.000", + "shipVia": 3, + "freight": 125.77, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10273, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1996-08-05 00:00:00.000", + "requiredDate": "1996-09-02 00:00:00.000", + "shippedDate": "1996-08-12 00:00:00.000", + "shipVia": 3, + "freight": 76.07, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 33, + "discount": 0.05 + }, + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10272, + "customerID": "RATTC", + "employeeID": 6, + "orderDate": "1996-08-02 00:00:00.000", + "requiredDate": "1996-08-30 00:00:00.000", + "shippedDate": "1996-08-06 00:00:00.000", + "shipVia": 2, + "freight": 98.03, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10278, + "customerID": "BERGS", + "employeeID": 8, + "orderDate": "1996-08-12 00:00:00.000", + "requiredDate": "1996-09-09 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 2, + "freight": 92.69, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 73, + "unitPrice": 12, + "quantity": 25, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 15, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 8, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10269, + "customerID": "WHITC", + "employeeID": 5, + "orderDate": "1996-07-31 00:00:00.000", + "requiredDate": "1996-08-14 00:00:00.000", + "shippedDate": "1996-08-09 00:00:00.000", + "shipVia": 1, + "freight": 4.56, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10280, + "customerID": "BERGS", + "employeeID": 2, + "orderDate": "1996-08-14 00:00:00.000", + "requiredDate": "1996-09-11 00:00:00.000", + "shippedDate": "1996-09-12 00:00:00.000", + "shipVia": 1, + "freight": 8.98, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 12, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10281, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1996-08-14 00:00:00.000", + "requiredDate": "1996-08-28 00:00:00.000", + "shippedDate": "1996-08-21 00:00:00.000", + "shipVia": 1, + "freight": 2.94, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 1, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10282, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1996-08-15 00:00:00.000", + "requiredDate": "1996-09-12 00:00:00.000", + "shippedDate": "1996-08-21 00:00:00.000", + "shipVia": 1, + "freight": 12.69, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10283, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-08-16 00:00:00.000", + "requiredDate": "1996-09-13 00:00:00.000", + "shippedDate": "1996-08-23 00:00:00.000", + "shipVia": 3, + "freight": 84.81, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 15, + "unitPrice": 12.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 18, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 3, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10284, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1996-08-19 00:00:00.000", + "requiredDate": "1996-09-16 00:00:00.000", + "shippedDate": "1996-08-27 00:00:00.000", + "shipVia": 1, + "freight": 76.56, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 21, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 67, + "unitPrice": 11.2, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10285, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1996-08-20 00:00:00.000", + "requiredDate": "1996-09-17 00:00:00.000", + "shippedDate": "1996-08-26 00:00:00.000", + "shipVia": 2, + "freight": 76.83, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 36, + "discount": 0.2 + } + ] + }, + { + "orderID": 10286, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1996-08-21 00:00:00.000", + "requiredDate": "1996-09-18 00:00:00.000", + "shippedDate": "1996-08-30 00:00:00.000", + "shipVia": 3, + "freight": 229.24, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 100, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10287, + "customerID": "RICAR", + "employeeID": 8, + "orderDate": "1996-08-22 00:00:00.000", + "requiredDate": "1996-09-19 00:00:00.000", + "shippedDate": "1996-08-28 00:00:00.000", + "shipVia": 3, + "freight": 12.76, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10288, + "customerID": "REGGC", + "employeeID": 4, + "orderDate": "1996-08-23 00:00:00.000", + "requiredDate": "1996-09-20 00:00:00.000", + "shippedDate": "1996-09-03 00:00:00.000", + "shipVia": 1, + "freight": 7.45, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 3, + "discount": 0.1 + } + ] + }, + { + "orderID": 10289, + "customerID": "BSBEV", + "employeeID": 7, + "orderDate": "1996-08-26 00:00:00.000", + "requiredDate": "1996-09-23 00:00:00.000", + "shippedDate": "1996-08-28 00:00:00.000", + "shipVia": 3, + "freight": 22.77, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 3, + "unitPrice": 8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10290, + "customerID": "COMMI", + "employeeID": 8, + "orderDate": "1996-08-27 00:00:00.000", + "requiredDate": "1996-09-24 00:00:00.000", + "shippedDate": "1996-09-03 00:00:00.000", + "shipVia": 1, + "freight": 79.7, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 5, + "unitPrice": 17, + "quantity": 20, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 15, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10291, + "customerID": "QUEDE", + "employeeID": 6, + "orderDate": "1996-08-27 00:00:00.000", + "requiredDate": "1996-09-24 00:00:00.000", + "shippedDate": "1996-09-04 00:00:00.000", + "shipVia": 2, + "freight": 6.4, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 24, + "discount": 0.1 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10296, + "customerID": "LILAS", + "employeeID": 6, + "orderDate": "1996-09-03 00:00:00.000", + "requiredDate": "1996-10-01 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 1, + "freight": 0.12, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10297, + "customerID": "BLONP", + "employeeID": 5, + "orderDate": "1996-09-04 00:00:00.000", + "requiredDate": "1996-10-16 00:00:00.000", + "shippedDate": "1996-09-10 00:00:00.000", + "shipVia": 2, + "freight": 5.74, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 60, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10298, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1996-09-05 00:00:00.000", + "requiredDate": "1996-10-03 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 2, + "freight": 168.22, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10299, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1996-09-06 00:00:00.000", + "requiredDate": "1996-10-04 00:00:00.000", + "shippedDate": "1996-09-13 00:00:00.000", + "shipVia": 2, + "freight": 29.76, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10300, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1996-09-09 00:00:00.000", + "requiredDate": "1996-10-07 00:00:00.000", + "shippedDate": "1996-09-18 00:00:00.000", + "shipVia": 2, + "freight": 17.68, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10301, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1996-09-09 00:00:00.000", + "requiredDate": "1996-10-07 00:00:00.000", + "shippedDate": "1996-09-17 00:00:00.000", + "shipVia": 2, + "freight": 45.08, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10293, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1996-08-29 00:00:00.000", + "requiredDate": "1996-09-26 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 3, + "freight": 21.18, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 12, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 5, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10294, + "customerID": "RATTC", + "employeeID": 4, + "orderDate": "1996-08-30 00:00:00.000", + "requiredDate": "1996-09-27 00:00:00.000", + "shippedDate": "1996-09-05 00:00:00.000", + "shipVia": 2, + "freight": 147.26, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 18, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 21, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10302, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1996-09-10 00:00:00.000", + "requiredDate": "1996-10-08 00:00:00.000", + "shippedDate": "1996-10-09 00:00:00.000", + "shipVia": 2, + "freight": 6.27, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 28, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10303, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1996-09-11 00:00:00.000", + "requiredDate": "1996-10-09 00:00:00.000", + "shippedDate": "1996-09-18 00:00:00.000", + "shipVia": 2, + "freight": 107.83, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10304, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1996-09-12 00:00:00.000", + "requiredDate": "1996-10-10 00:00:00.000", + "shippedDate": "1996-09-17 00:00:00.000", + "shipVia": 2, + "freight": 63.79, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 10, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10306, + "customerID": "ROMEY", + "employeeID": 1, + "orderDate": "1996-09-16 00:00:00.000", + "requiredDate": "1996-10-14 00:00:00.000", + "shippedDate": "1996-09-23 00:00:00.000", + "shipVia": 3, + "freight": 7.56, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10305, + "customerID": "OLDWO", + "employeeID": 8, + "orderDate": "1996-09-13 00:00:00.000", + "requiredDate": "1996-10-11 00:00:00.000", + "shippedDate": "1996-10-09 00:00:00.000", + "shipVia": 3, + "freight": 257.62, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 18, + "unitPrice": 50, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10307, + "customerID": "LONEP", + "employeeID": 2, + "orderDate": "1996-09-17 00:00:00.000", + "requiredDate": "1996-10-15 00:00:00.000", + "shippedDate": "1996-09-25 00:00:00.000", + "shipVia": 2, + "freight": 0.56, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 10, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10308, + "customerID": "ANATR", + "employeeID": 7, + "orderDate": "1996-09-18 00:00:00.000", + "requiredDate": "1996-10-16 00:00:00.000", + "shippedDate": "1996-09-24 00:00:00.000", + "shipVia": 3, + "freight": 1.61, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 1, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10309, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1996-09-19 00:00:00.000", + "requiredDate": "1996-10-17 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 1, + "freight": 47.3, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 6, + "unitPrice": 20, + "quantity": 30, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10310, + "customerID": "THEBI", + "employeeID": 8, + "orderDate": "1996-09-20 00:00:00.000", + "requiredDate": "1996-10-18 00:00:00.000", + "shippedDate": "1996-09-27 00:00:00.000", + "shipVia": 2, + "freight": 17.52, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10314, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1996-09-25 00:00:00.000", + "requiredDate": "1996-10-23 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 74.16, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10315, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1996-09-26 00:00:00.000", + "requiredDate": "1996-10-24 00:00:00.000", + "shippedDate": "1996-10-03 00:00:00.000", + "shipVia": 2, + "freight": 41.76, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 14, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10316, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1996-09-27 00:00:00.000", + "requiredDate": "1996-10-25 00:00:00.000", + "shippedDate": "1996-10-08 00:00:00.000", + "shipVia": 3, + "freight": 150.15, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 70, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10311, + "customerID": "DUMON", + "employeeID": 1, + "orderDate": "1996-09-20 00:00:00.000", + "requiredDate": "1996-10-04 00:00:00.000", + "shippedDate": "1996-09-26 00:00:00.000", + "shipVia": 3, + "freight": 24.69, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 6, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10312, + "customerID": "WANDK", + "employeeID": 2, + "orderDate": "1996-09-23 00:00:00.000", + "requiredDate": "1996-10-21 00:00:00.000", + "shippedDate": "1996-10-03 00:00:00.000", + "shipVia": 2, + "freight": 40.26, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10319, + "customerID": "TORTU", + "employeeID": 7, + "orderDate": "1996-10-02 00:00:00.000", + "requiredDate": "1996-10-30 00:00:00.000", + "shippedDate": "1996-10-11 00:00:00.000", + "shipVia": 3, + "freight": 64.5, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 8, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 14, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10318, + "customerID": "ISLAT", + "employeeID": 8, + "orderDate": "1996-10-01 00:00:00.000", + "requiredDate": "1996-10-29 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 4.73, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 20, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10326, + "customerID": "BOLID", + "employeeID": 4, + "orderDate": "1996-10-10 00:00:00.000", + "requiredDate": "1996-11-07 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 2, + "freight": 77.92, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 24, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 16, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10323, + "customerID": "KOENE", + "employeeID": 4, + "orderDate": "1996-10-07 00:00:00.000", + "requiredDate": "1996-11-04 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 1, + "freight": 4.88, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 15, + "unitPrice": 12.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 4, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10327, + "customerID": "FOLKO", + "employeeID": 2, + "orderDate": "1996-10-11 00:00:00.000", + "requiredDate": "1996-11-08 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 1, + "freight": 63.36, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10328, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1996-10-14 00:00:00.000", + "requiredDate": "1996-11-11 00:00:00.000", + "shippedDate": "1996-10-17 00:00:00.000", + "shipVia": 3, + "freight": 87.03, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 40, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10330, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-10-16 00:00:00.000", + "requiredDate": "1996-11-13 00:00:00.000", + "shippedDate": "1996-10-28 00:00:00.000", + "shipVia": 1, + "freight": 12.75, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 50, + "discount": 0.15 + } + ] + }, + { + "orderID": 10329, + "customerID": "SPLIR", + "employeeID": 4, + "orderDate": "1996-10-15 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 2, + "freight": 191.67, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 12, + "discount": 0.05 + } + ] + }, + { + "orderID": 10324, + "customerID": "SAVEA", + "employeeID": 9, + "orderDate": "1996-10-08 00:00:00.000", + "requiredDate": "1996-11-05 00:00:00.000", + "shippedDate": "1996-10-10 00:00:00.000", + "shipVia": 1, + "freight": 214.27, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 70, + "discount": 0.15 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 80, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 40, + "discount": 0.15 + } + ] + }, + { + "orderID": 10333, + "customerID": "WARTH", + "employeeID": 5, + "orderDate": "1996-10-18 00:00:00.000", + "requiredDate": "1996-11-15 00:00:00.000", + "shippedDate": "1996-10-25 00:00:00.000", + "shipVia": 3, + "freight": 0.59, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 40, + "discount": 0.1 + } + ] + }, + { + "orderID": 10334, + "customerID": "VICTE", + "employeeID": 8, + "orderDate": "1996-10-21 00:00:00.000", + "requiredDate": "1996-11-18 00:00:00.000", + "shippedDate": "1996-10-28 00:00:00.000", + "shipVia": 2, + "freight": 8.56, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 10, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10335, + "customerID": "HUNGO", + "employeeID": 7, + "orderDate": "1996-10-22 00:00:00.000", + "requiredDate": "1996-11-19 00:00:00.000", + "shippedDate": "1996-10-24 00:00:00.000", + "shipVia": 2, + "freight": 42.11, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 48, + "discount": 0.2 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 7, + "discount": 0.2 + } + ] + }, + { + "orderID": 10337, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-10-24 00:00:00.000", + "requiredDate": "1996-11-21 00:00:00.000", + "shippedDate": "1996-10-29 00:00:00.000", + "shipVia": 3, + "freight": 108.26, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 24, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 28, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10338, + "customerID": "OLDWO", + "employeeID": 4, + "orderDate": "1996-10-25 00:00:00.000", + "requiredDate": "1996-11-22 00:00:00.000", + "shippedDate": "1996-10-29 00:00:00.000", + "shipVia": 3, + "freight": 84.21, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10339, + "customerID": "MEREP", + "employeeID": 2, + "orderDate": "1996-10-28 00:00:00.000", + "requiredDate": "1996-11-25 00:00:00.000", + "shippedDate": "1996-11-04 00:00:00.000", + "shipVia": 2, + "freight": 15.66, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10340, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1996-10-29 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 166.31, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10341, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1996-10-29 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-05 00:00:00.000", + "shipVia": 3, + "freight": 26.78, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 8, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0.15 + } + ] + }, + { + "orderID": 10342, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-10-30 00:00:00.000", + "requiredDate": "1996-11-13 00:00:00.000", + "shippedDate": "1996-11-04 00:00:00.000", + "shipVia": 2, + "freight": 54.83, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 56, + "discount": 0.2 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10343, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1996-10-31 00:00:00.000", + "requiredDate": "1996-11-28 00:00:00.000", + "shippedDate": "1996-11-06 00:00:00.000", + "shipVia": 1, + "freight": 110.37, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 4, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10344, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1996-11-01 00:00:00.000", + "requiredDate": "1996-11-29 00:00:00.000", + "shippedDate": "1996-11-05 00:00:00.000", + "shipVia": 2, + "freight": 23.29, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 35, + "discount": 0 + }, + { + "productID": 8, + "unitPrice": 32, + "quantity": 70, + "discount": 0.25 + } + ] + }, + { + "orderID": 10345, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1996-11-04 00:00:00.000", + "requiredDate": "1996-12-02 00:00:00.000", + "shippedDate": "1996-11-11 00:00:00.000", + "shipVia": 2, + "freight": 249.06, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 8, + "unitPrice": 32, + "quantity": 70, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 80, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10346, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1996-11-05 00:00:00.000", + "requiredDate": "1996-12-17 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 142.08, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 36, + "discount": 0.1 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10347, + "customerID": "FAMIA", + "employeeID": 4, + "orderDate": "1996-11-06 00:00:00.000", + "requiredDate": "1996-12-04 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 3.1, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 4, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0.15 + } + ] + }, + { + "orderID": 10348, + "customerID": "WANDK", + "employeeID": 4, + "orderDate": "1996-11-07 00:00:00.000", + "requiredDate": "1996-12-05 00:00:00.000", + "shippedDate": "1996-11-15 00:00:00.000", + "shipVia": 2, + "freight": 0.78, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10325, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1996-10-09 00:00:00.000", + "requiredDate": "1996-10-23 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 3, + "freight": 64.86, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 9, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 4, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 40, + "discount": 0 + }, + { + "productID": 6, + "unitPrice": 20, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10350, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1996-11-11 00:00:00.000", + "requiredDate": "1996-12-09 00:00:00.000", + "shippedDate": "1996-12-03 00:00:00.000", + "shipVia": 2, + "freight": 64.19, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 50, + "unitPrice": 13, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10332, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1996-10-17 00:00:00.000", + "requiredDate": "1996-11-28 00:00:00.000", + "shippedDate": "1996-10-21 00:00:00.000", + "shipVia": 2, + "freight": 52.84, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 16, + "discount": 0.2 + } + ] + }, + { + "orderID": 10351, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1996-11-11 00:00:00.000", + "requiredDate": "1996-12-09 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 1, + "freight": 162.33, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 13, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 77, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10355, + "customerID": "AROUT", + "employeeID": 6, + "orderDate": "1996-11-15 00:00:00.000", + "requiredDate": "1996-12-13 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 1, + "freight": 41.95, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10356, + "customerID": "WANDK", + "employeeID": 6, + "orderDate": "1996-11-18 00:00:00.000", + "requiredDate": "1996-12-16 00:00:00.000", + "shippedDate": "1996-11-27 00:00:00.000", + "shipVia": 2, + "freight": 36.71, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10357, + "customerID": "LILAS", + "employeeID": 1, + "orderDate": "1996-11-19 00:00:00.000", + "requiredDate": "1996-12-17 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 34.88, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 16, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 8, + "discount": 0.2 + } + ] + }, + { + "orderID": 10358, + "customerID": "LAMAI", + "employeeID": 5, + "orderDate": "1996-11-20 00:00:00.000", + "requiredDate": "1996-12-18 00:00:00.000", + "shippedDate": "1996-11-27 00:00:00.000", + "shipVia": 1, + "freight": 19.64, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10359, + "customerID": "SEVES", + "employeeID": 5, + "orderDate": "1996-11-21 00:00:00.000", + "requiredDate": "1996-12-19 00:00:00.000", + "shippedDate": "1996-11-26 00:00:00.000", + "shipVia": 3, + "freight": 288.43, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 56, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 80, + "discount": 0.05 + } + ] + }, + { + "orderID": 10360, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1996-11-22 00:00:00.000", + "requiredDate": "1996-12-20 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 131.7, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 35, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 35, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10361, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1996-11-22 00:00:00.000", + "requiredDate": "1996-12-20 00:00:00.000", + "shippedDate": "1996-12-03 00:00:00.000", + "shipVia": 2, + "freight": 183.17, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 54, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 55, + "discount": 0.1 + } + ] + }, + { + "orderID": 10353, + "customerID": "PICCO", + "employeeID": 7, + "orderDate": "1996-11-13 00:00:00.000", + "requiredDate": "1996-12-11 00:00:00.000", + "shippedDate": "1996-11-25 00:00:00.000", + "shipVia": 3, + "freight": 360.63, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10363, + "customerID": "DRACD", + "employeeID": 4, + "orderDate": "1996-11-26 00:00:00.000", + "requiredDate": "1996-12-24 00:00:00.000", + "shippedDate": "1996-12-04 00:00:00.000", + "shipVia": 3, + "freight": 30.54, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10352, + "customerID": "FURIB", + "employeeID": 3, + "orderDate": "1996-11-12 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-18 00:00:00.000", + "shipVia": 3, + "freight": 1.3, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10364, + "customerID": "EASTC", + "employeeID": 1, + "orderDate": "1996-11-26 00:00:00.000", + "requiredDate": "1997-01-07 00:00:00.000", + "shippedDate": "1996-12-04 00:00:00.000", + "shipVia": 1, + "freight": 71.97, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10354, + "customerID": "PERIC", + "employeeID": 8, + "orderDate": "1996-11-14 00:00:00.000", + "requiredDate": "1996-12-12 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 3, + "freight": 53.8, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10362, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1996-11-25 00:00:00.000", + "requiredDate": "1996-12-23 00:00:00.000", + "shippedDate": "1996-11-28 00:00:00.000", + "shipVia": 1, + "freight": 96.04, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10366, + "customerID": "GALED", + "employeeID": 8, + "orderDate": "1996-11-28 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1996-12-30 00:00:00.000", + "shipVia": 2, + "freight": 10.14, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 5, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10367, + "customerID": "VAFFE", + "employeeID": 7, + "orderDate": "1996-11-28 00:00:00.000", + "requiredDate": "1996-12-26 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 13.55, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 36, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 18, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10372, + "customerID": "QUEEN", + "employeeID": 5, + "orderDate": "1996-12-04 00:00:00.000", + "requiredDate": "1997-01-01 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 890.78, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 70, + "discount": 0.25 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 42, + "discount": 0.25 + } + ] + }, + { + "orderID": 10373, + "customerID": "HUNGO", + "employeeID": 4, + "orderDate": "1996-12-05 00:00:00.000", + "requiredDate": "1997-01-02 00:00:00.000", + "shippedDate": "1996-12-11 00:00:00.000", + "shipVia": 3, + "freight": 124.12, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 80, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10374, + "customerID": "WOLZA", + "employeeID": 1, + "orderDate": "1996-12-05 00:00:00.000", + "requiredDate": "1997-01-02 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 3, + "freight": 3.94, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10375, + "customerID": "HUNGC", + "employeeID": 3, + "orderDate": "1996-12-06 00:00:00.000", + "requiredDate": "1997-01-03 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 20.12, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10368, + "customerID": "ERNSH", + "employeeID": 2, + "orderDate": "1996-11-29 00:00:00.000", + "requiredDate": "1996-12-27 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 2, + "freight": 101.95, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 13, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 35, + "discount": 0.1 + } + ] + }, + { + "orderID": 10369, + "customerID": "SPLIR", + "employeeID": 8, + "orderDate": "1996-12-02 00:00:00.000", + "requiredDate": "1996-12-30 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 195.68, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 20, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 18, + "discount": 0.25 + } + ] + }, + { + "orderID": 10379, + "customerID": "QUEDE", + "employeeID": 2, + "orderDate": "1996-12-11 00:00:00.000", + "requiredDate": "1997-01-08 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 1, + "freight": 45.03, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 16, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10370, + "customerID": "CHOPS", + "employeeID": 6, + "orderDate": "1996-12-03 00:00:00.000", + "requiredDate": "1996-12-31 00:00:00.000", + "shippedDate": "1996-12-27 00:00:00.000", + "shipVia": 2, + "freight": 1.17, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10380, + "customerID": "HUNGO", + "employeeID": 8, + "orderDate": "1996-12-12 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 3, + "freight": 35.03, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10377, + "customerID": "SEVES", + "employeeID": 1, + "orderDate": "1996-12-09 00:00:00.000", + "requiredDate": "1997-01-06 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 3, + "freight": 22.21, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10384, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1996-12-16 00:00:00.000", + "requiredDate": "1997-01-13 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 3, + "freight": 168.64, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10385, + "customerID": "SPLIR", + "employeeID": 1, + "orderDate": "1996-12-17 00:00:00.000", + "requiredDate": "1997-01-14 00:00:00.000", + "shippedDate": "1996-12-23 00:00:00.000", + "shipVia": 2, + "freight": 30.96, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 8, + "discount": 0.2 + } + ] + }, + { + "orderID": 10386, + "customerID": "FAMIA", + "employeeID": 9, + "orderDate": "1996-12-18 00:00:00.000", + "requiredDate": "1997-01-01 00:00:00.000", + "shippedDate": "1996-12-25 00:00:00.000", + "shipVia": 3, + "freight": 13.99, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10387, + "customerID": "SANTG", + "employeeID": 1, + "orderDate": "1996-12-18 00:00:00.000", + "requiredDate": "1997-01-15 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 2, + "freight": 93.63, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 12, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10388, + "customerID": "SEVES", + "employeeID": 2, + "orderDate": "1996-12-19 00:00:00.000", + "requiredDate": "1997-01-16 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 1, + "freight": 34.86, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 45, + "unitPrice": 7.6, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10389, + "customerID": "BOTTM", + "employeeID": 4, + "orderDate": "1996-12-20 00:00:00.000", + "requiredDate": "1997-01-17 00:00:00.000", + "shippedDate": "1996-12-24 00:00:00.000", + "shipVia": 2, + "freight": 47.42, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 16, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10382, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1996-12-13 00:00:00.000", + "requiredDate": "1997-01-10 00:00:00.000", + "shippedDate": "1996-12-16 00:00:00.000", + "shipVia": 1, + "freight": 94.77, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 14, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 17, + "quantity": 32, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 50, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10381, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-12-12 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 3, + "freight": 7.99, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 74, + "unitPrice": 8, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10383, + "customerID": "AROUT", + "employeeID": 8, + "orderDate": "1996-12-16 00:00:00.000", + "requiredDate": "1997-01-13 00:00:00.000", + "shippedDate": "1996-12-18 00:00:00.000", + "shipVia": 3, + "freight": 34.24, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10390, + "customerID": "ERNSH", + "employeeID": 6, + "orderDate": "1996-12-23 00:00:00.000", + "requiredDate": "1997-01-20 00:00:00.000", + "shippedDate": "1996-12-26 00:00:00.000", + "shipVia": 1, + "freight": 126.38, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 45, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 24, + "discount": 0.1 + } + ] + }, + { + "orderID": 10396, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1996-12-27 00:00:00.000", + "requiredDate": "1997-01-10 00:00:00.000", + "shippedDate": "1997-01-06 00:00:00.000", + "shipVia": 3, + "freight": 135.35, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10397, + "customerID": "PRINI", + "employeeID": 5, + "orderDate": "1996-12-27 00:00:00.000", + "requiredDate": "1997-01-24 00:00:00.000", + "shippedDate": "1997-01-02 00:00:00.000", + "shipVia": 1, + "freight": 60.26, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10398, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1996-12-30 00:00:00.000", + "requiredDate": "1997-01-27 00:00:00.000", + "shippedDate": "1997-01-09 00:00:00.000", + "shipVia": 3, + "freight": 89.16, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 120, + "discount": 0.1 + } + ] + }, + { + "orderID": 10399, + "customerID": "VAFFE", + "employeeID": 8, + "orderDate": "1996-12-31 00:00:00.000", + "requiredDate": "1997-01-14 00:00:00.000", + "shippedDate": "1997-01-08 00:00:00.000", + "shipVia": 3, + "freight": 27.36, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10400, + "customerID": "EASTC", + "employeeID": 1, + "orderDate": "1997-01-01 00:00:00.000", + "requiredDate": "1997-01-29 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 3, + "freight": 83.93, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 35, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 21, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10401, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1997-01-01 00:00:00.000", + "requiredDate": "1997-01-29 00:00:00.000", + "shippedDate": "1997-01-10 00:00:00.000", + "shipVia": 1, + "freight": 12.51, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 18, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 70, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10394, + "customerID": "HUNGC", + "employeeID": 1, + "orderDate": "1996-12-25 00:00:00.000", + "requiredDate": "1997-01-22 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 3, + "freight": 30.34, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10402, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-01-02 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-10 00:00:00.000", + "shipVia": 2, + "freight": 67.88, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 65, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10393, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1996-12-25 00:00:00.000", + "requiredDate": "1997-01-22 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 3, + "freight": 126.56, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 70, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 32, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 7, + "discount": 0.25 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 42, + "discount": 0.25 + } + ] + }, + { + "orderID": 10395, + "customerID": "HILAA", + "employeeID": 6, + "orderDate": "1996-12-26 00:00:00.000", + "requiredDate": "1997-01-23 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 1, + "freight": 184.41, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 8, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 70, + "discount": 0.1 + } + ] + }, + { + "orderID": 10406, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1997-01-07 00:00:00.000", + "requiredDate": "1997-02-18 00:00:00.000", + "shippedDate": "1997-01-13 00:00:00.000", + "shipVia": 1, + "freight": 108.04, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 42, + "discount": 0.1 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10407, + "customerID": "OTTIK", + "employeeID": 2, + "orderDate": "1997-01-07 00:00:00.000", + "requiredDate": "1997-02-04 00:00:00.000", + "shippedDate": "1997-01-30 00:00:00.000", + "shipVia": 2, + "freight": 91.48, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10408, + "customerID": "FOLIG", + "employeeID": 8, + "orderDate": "1997-01-08 00:00:00.000", + "requiredDate": "1997-02-05 00:00:00.000", + "shippedDate": "1997-01-14 00:00:00.000", + "shipVia": 1, + "freight": 11.26, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10409, + "customerID": "OCEAN", + "employeeID": 3, + "orderDate": "1997-01-09 00:00:00.000", + "requiredDate": "1997-02-06 00:00:00.000", + "shippedDate": "1997-01-14 00:00:00.000", + "shipVia": 1, + "freight": 29.83, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 12, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10410, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-01-10 00:00:00.000", + "requiredDate": "1997-02-07 00:00:00.000", + "shippedDate": "1997-01-15 00:00:00.000", + "shipVia": 3, + "freight": 2.4, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 49, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10411, + "customerID": "BOTTM", + "employeeID": 9, + "orderDate": "1997-01-10 00:00:00.000", + "requiredDate": "1997-02-07 00:00:00.000", + "shippedDate": "1997-01-21 00:00:00.000", + "shipVia": 3, + "freight": 23.65, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0.2 + } + ] + }, + { + "orderID": 10404, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1997-01-03 00:00:00.000", + "requiredDate": "1997-01-31 00:00:00.000", + "shippedDate": "1997-01-08 00:00:00.000", + "shipVia": 1, + "freight": 155.97, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10413, + "customerID": "LAMAI", + "employeeID": 3, + "orderDate": "1997-01-14 00:00:00.000", + "requiredDate": "1997-02-11 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 2, + "freight": 95.66, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 24, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 40, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10403, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-01-03 00:00:00.000", + "requiredDate": "1997-01-31 00:00:00.000", + "shippedDate": "1997-01-09 00:00:00.000", + "shipVia": 3, + "freight": 73.79, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 10.2, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10414, + "customerID": "FAMIA", + "employeeID": 2, + "orderDate": "1997-01-14 00:00:00.000", + "requiredDate": "1997-02-11 00:00:00.000", + "shippedDate": "1997-01-17 00:00:00.000", + "shipVia": 3, + "freight": 21.48, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 18, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10415, + "customerID": "HUNGC", + "employeeID": 3, + "orderDate": "1997-01-15 00:00:00.000", + "requiredDate": "1997-02-12 00:00:00.000", + "shippedDate": "1997-01-24 00:00:00.000", + "shipVia": 1, + "freight": 0.2, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10419, + "customerID": "RICSU", + "employeeID": 4, + "orderDate": "1997-01-20 00:00:00.000", + "requiredDate": "1997-02-17 00:00:00.000", + "shippedDate": "1997-01-30 00:00:00.000", + "shipVia": 2, + "freight": 137.35, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10420, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1997-01-21 00:00:00.000", + "requiredDate": "1997-02-18 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 1, + "freight": 44.12, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 9, + "unitPrice": 77.6, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 2, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 73, + "unitPrice": 12, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10421, + "customerID": "QUEDE", + "employeeID": 8, + "orderDate": "1997-01-21 00:00:00.000", + "requiredDate": "1997-03-04 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 1, + "freight": 99.23, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 4, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10423, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1997-01-23 00:00:00.000", + "requiredDate": "1997-02-06 00:00:00.000", + "shippedDate": "1997-02-24 00:00:00.000", + "shipVia": 3, + "freight": 24.5, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 14, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10424, + "customerID": "MEREP", + "employeeID": 7, + "orderDate": "1997-01-23 00:00:00.000", + "requiredDate": "1997-02-20 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 2, + "freight": 370.61, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 49, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 60, + "discount": 0.2 + } + ] + }, + { + "orderID": 10418, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-01-17 00:00:00.000", + "requiredDate": "1997-02-14 00:00:00.000", + "shippedDate": "1997-01-24 00:00:00.000", + "shipVia": 1, + "freight": 17.55, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 55, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 16, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10417, + "customerID": "SIMOB", + "employeeID": 4, + "orderDate": "1997-01-16 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-28 00:00:00.000", + "shipVia": 3, + "freight": 70.29, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 36, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10416, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-01-16 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 3, + "freight": 22.72, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10425, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1997-01-24 00:00:00.000", + "requiredDate": "1997-02-21 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 2, + "freight": 7.93, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 10, + "discount": 0.25 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10429, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1997-01-29 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 56.63, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 50, + "unitPrice": 13, + "quantity": 40, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10430, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-01-30 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-02-03 00:00:00.000", + "shipVia": 1, + "freight": 458.78, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 70, + "discount": 0.2 + } + ] + }, + { + "orderID": 10431, + "customerID": "BOTTM", + "employeeID": 4, + "orderDate": "1997-01-30 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 44.17, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10432, + "customerID": "SPLIR", + "employeeID": 3, + "orderDate": "1997-01-31 00:00:00.000", + "requiredDate": "1997-02-14 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 4.34, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10434, + "customerID": "FOLKO", + "employeeID": 3, + "orderDate": "1997-02-03 00:00:00.000", + "requiredDate": "1997-03-03 00:00:00.000", + "shippedDate": "1997-02-13 00:00:00.000", + "shipVia": 2, + "freight": 17.92, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10436, + "customerID": "BLONP", + "employeeID": 3, + "orderDate": "1997-02-05 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-02-11 00:00:00.000", + "shipVia": 2, + "freight": 156.66, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 24, + "discount": 0.1 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 5, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10435, + "customerID": "CONSH", + "employeeID": 8, + "orderDate": "1997-02-04 00:00:00.000", + "requiredDate": "1997-03-18 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 9.21, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 22, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10426, + "customerID": "GALED", + "employeeID": 4, + "orderDate": "1997-01-27 00:00:00.000", + "requiredDate": "1997-02-24 00:00:00.000", + "shippedDate": "1997-02-06 00:00:00.000", + "shipVia": 1, + "freight": 18.69, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10442, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1997-02-11 00:00:00.000", + "requiredDate": "1997-03-11 00:00:00.000", + "shippedDate": "1997-02-18 00:00:00.000", + "shipVia": 2, + "freight": 47.94, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 80, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10443, + "customerID": "REGGC", + "employeeID": 8, + "orderDate": "1997-02-12 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 1, + "freight": 13.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10444, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-02-12 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-21 00:00:00.000", + "shipVia": 3, + "freight": 3.5, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 15, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 8, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10445, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-02-13 00:00:00.000", + "requiredDate": "1997-03-13 00:00:00.000", + "shippedDate": "1997-02-20 00:00:00.000", + "shipVia": 1, + "freight": 9.3, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10446, + "customerID": "TOMSP", + "employeeID": 6, + "orderDate": "1997-02-14 00:00:00.000", + "requiredDate": "1997-03-14 00:00:00.000", + "shippedDate": "1997-02-19 00:00:00.000", + "shipVia": 1, + "freight": 14.68, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 3, + "discount": 0.1 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 12, + "discount": 0.1 + } + ] + }, + { + "orderID": 10440, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1997-02-10 00:00:00.000", + "requiredDate": "1997-03-10 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 86.53, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 45, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 49, + "discount": 0.15 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 90, + "discount": 0.15 + } + ] + }, + { + "orderID": 10439, + "customerID": "MEREP", + "employeeID": 6, + "orderDate": "1997-02-07 00:00:00.000", + "requiredDate": "1997-03-07 00:00:00.000", + "shippedDate": "1997-02-10 00:00:00.000", + "shipVia": 3, + "freight": 4.07, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 12, + "unitPrice": 30.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 16, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10448, + "customerID": "RANCH", + "employeeID": 4, + "orderDate": "1997-02-17 00:00:00.000", + "requiredDate": "1997-03-17 00:00:00.000", + "shippedDate": "1997-02-24 00:00:00.000", + "shipVia": 2, + "freight": 38.82, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10438, + "customerID": "TOMSP", + "employeeID": 3, + "orderDate": "1997-02-06 00:00:00.000", + "requiredDate": "1997-03-06 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 2, + "freight": 8.24, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10447, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1997-02-14 00:00:00.000", + "requiredDate": "1997-03-14 00:00:00.000", + "shippedDate": "1997-03-07 00:00:00.000", + "shipVia": 2, + "freight": 68.66, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 40, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 35, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10452, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-02-20 00:00:00.000", + "requiredDate": "1997-03-20 00:00:00.000", + "shippedDate": "1997-02-26 00:00:00.000", + "shipVia": 1, + "freight": 140.26, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 100, + "discount": 0.05 + } + ] + }, + { + "orderID": 10453, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-02-21 00:00:00.000", + "requiredDate": "1997-03-21 00:00:00.000", + "shippedDate": "1997-02-26 00:00:00.000", + "shipVia": 2, + "freight": 25.36, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 48, + "unitPrice": 10.2, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10454, + "customerID": "LAMAI", + "employeeID": 4, + "orderDate": "1997-02-21 00:00:00.000", + "requiredDate": "1997-03-21 00:00:00.000", + "shippedDate": "1997-02-25 00:00:00.000", + "shipVia": 3, + "freight": 2.74, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10455, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-02-24 00:00:00.000", + "requiredDate": "1997-04-07 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 2, + "freight": 180.45, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 25, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10456, + "customerID": "KOENE", + "employeeID": 8, + "orderDate": "1997-02-25 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 8.12, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 21, + "discount": 0.15 + } + ] + }, + { + "orderID": 10450, + "customerID": "VICTE", + "employeeID": 8, + "orderDate": "1997-02-19 00:00:00.000", + "requiredDate": "1997-03-19 00:00:00.000", + "shippedDate": "1997-03-11 00:00:00.000", + "shipVia": 2, + "freight": 7.23, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10451, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-02-19 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-03-12 00:00:00.000", + "shipVia": 3, + "freight": 189.09, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 120, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 35, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 55, + "discount": 0.1 + } + ] + }, + { + "orderID": 10449, + "customerID": "BLONP", + "employeeID": 3, + "orderDate": "1997-02-18 00:00:00.000", + "requiredDate": "1997-03-18 00:00:00.000", + "shippedDate": "1997-02-27 00:00:00.000", + "shipVia": 2, + "freight": 53.3, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 14, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10461, + "customerID": "LILAS", + "employeeID": 1, + "orderDate": "1997-02-28 00:00:00.000", + "requiredDate": "1997-03-28 00:00:00.000", + "shippedDate": "1997-03-05 00:00:00.000", + "shipVia": 3, + "freight": 148.61, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 28, + "discount": 0.25 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 60, + "discount": 0.25 + } + ] + }, + { + "orderID": 10462, + "customerID": "CONSH", + "employeeID": 2, + "orderDate": "1997-03-03 00:00:00.000", + "requiredDate": "1997-03-31 00:00:00.000", + "shippedDate": "1997-03-18 00:00:00.000", + "shipVia": 1, + "freight": 6.17, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 1, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10463, + "customerID": "SUPRD", + "employeeID": 5, + "orderDate": "1997-03-04 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-06 00:00:00.000", + "shipVia": 3, + "freight": 14.78, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 21, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10464, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1997-03-04 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 89, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 16, + "discount": 0.2 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 3, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10465, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1997-03-05 00:00:00.000", + "requiredDate": "1997-04-02 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 3, + "freight": 145.04, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 20, + "discount": 0 + }, + { + "productID": 45, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 50, + "unitPrice": 13, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10466, + "customerID": "COMMI", + "employeeID": 4, + "orderDate": "1997-03-06 00:00:00.000", + "requiredDate": "1997-04-03 00:00:00.000", + "shippedDate": "1997-03-13 00:00:00.000", + "shipVia": 1, + "freight": 11.93, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10460, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1997-02-28 00:00:00.000", + "requiredDate": "1997-03-28 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 1, + "freight": 16.27, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 4, + "discount": 0.25 + } + ] + }, + { + "orderID": 10459, + "customerID": "VICTE", + "employeeID": 4, + "orderDate": "1997-02-27 00:00:00.000", + "requiredDate": "1997-03-27 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 25.09, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10468, + "customerID": "KOENE", + "employeeID": 3, + "orderDate": "1997-03-07 00:00:00.000", + "requiredDate": "1997-04-04 00:00:00.000", + "shippedDate": "1997-03-12 00:00:00.000", + "shipVia": 3, + "freight": 44.12, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 8, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10469, + "customerID": "WHITC", + "employeeID": 1, + "orderDate": "1997-03-10 00:00:00.000", + "requiredDate": "1997-04-07 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 1, + "freight": 60.18, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 2, + "discount": 0.15 + } + ] + }, + { + "orderID": 10458, + "customerID": "SUPRD", + "employeeID": 7, + "orderDate": "1997-02-26 00:00:00.000", + "requiredDate": "1997-03-26 00:00:00.000", + "shippedDate": "1997-03-04 00:00:00.000", + "shipVia": 3, + "freight": 147.06, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10470, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-03-11 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 64.56, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 30, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10467, + "customerID": "MAGAA", + "employeeID": 8, + "orderDate": "1997-03-06 00:00:00.000", + "requiredDate": "1997-04-03 00:00:00.000", + "shippedDate": "1997-03-11 00:00:00.000", + "shipVia": 2, + "freight": 4.93, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 28, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10474, + "customerID": "PERIC", + "employeeID": 5, + "orderDate": "1997-03-13 00:00:00.000", + "requiredDate": "1997-04-10 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 2, + "freight": 83.49, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 18, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 21, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10475, + "customerID": "SUPRD", + "employeeID": 9, + "orderDate": "1997-03-14 00:00:00.000", + "requiredDate": "1997-04-11 00:00:00.000", + "shippedDate": "1997-04-04 00:00:00.000", + "shipVia": 1, + "freight": 68.52, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 42, + "discount": 0.15 + } + ] + }, + { + "orderID": 10476, + "customerID": "HILAA", + "employeeID": 8, + "orderDate": "1997-03-17 00:00:00.000", + "requiredDate": "1997-04-14 00:00:00.000", + "shippedDate": "1997-03-24 00:00:00.000", + "shipVia": 3, + "freight": 4.41, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 2, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10477, + "customerID": "PRINI", + "employeeID": 5, + "orderDate": "1997-03-17 00:00:00.000", + "requiredDate": "1997-04-14 00:00:00.000", + "shippedDate": "1997-03-25 00:00:00.000", + "shipVia": 2, + "freight": 13.02, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10479, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1997-03-19 00:00:00.000", + "requiredDate": "1997-04-16 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 3, + "freight": 708.95, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 28, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 60, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10471, + "customerID": "BSBEV", + "employeeID": 2, + "orderDate": "1997-03-11 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-18 00:00:00.000", + "shipVia": 3, + "freight": 45.59, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 30, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10472, + "customerID": "SEVES", + "employeeID": 8, + "orderDate": "1997-03-12 00:00:00.000", + "requiredDate": "1997-04-09 00:00:00.000", + "shippedDate": "1997-03-19 00:00:00.000", + "shipVia": 1, + "freight": 4.2, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 80, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10481, + "customerID": "RICAR", + "employeeID": 8, + "orderDate": "1997-03-20 00:00:00.000", + "requiredDate": "1997-04-17 00:00:00.000", + "shippedDate": "1997-03-25 00:00:00.000", + "shipVia": 2, + "freight": 64.33, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 49, + "unitPrice": 16, + "quantity": 24, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10473, + "customerID": "ISLAT", + "employeeID": 1, + "orderDate": "1997-03-13 00:00:00.000", + "requiredDate": "1997-03-27 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 3, + "freight": 16.37, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10484, + "customerID": "BSBEV", + "employeeID": 3, + "orderDate": "1997-03-24 00:00:00.000", + "requiredDate": "1997-04-21 00:00:00.000", + "shippedDate": "1997-04-01 00:00:00.000", + "shipVia": 3, + "freight": 6.88, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10485, + "customerID": "LINOD", + "employeeID": 4, + "orderDate": "1997-03-25 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-31 00:00:00.000", + "shipVia": 2, + "freight": 64.45, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 3, + "unitPrice": 8, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 60, + "discount": 0.1 + } + ] + }, + { + "orderID": 10486, + "customerID": "HILAA", + "employeeID": 1, + "orderDate": "1997-03-26 00:00:00.000", + "requiredDate": "1997-04-23 00:00:00.000", + "shippedDate": "1997-04-02 00:00:00.000", + "shipVia": 2, + "freight": 30.53, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 5, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 25, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10487, + "customerID": "QUEEN", + "employeeID": 2, + "orderDate": "1997-03-26 00:00:00.000", + "requiredDate": "1997-04-23 00:00:00.000", + "shippedDate": "1997-03-28 00:00:00.000", + "shipVia": 2, + "freight": 71.07, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 5, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0.25 + } + ] + }, + { + "orderID": 10488, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-03-27 00:00:00.000", + "requiredDate": "1997-04-24 00:00:00.000", + "shippedDate": "1997-04-02 00:00:00.000", + "shipVia": 2, + "freight": 4.93, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 12, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10489, + "customerID": "PICCO", + "employeeID": 6, + "orderDate": "1997-03-28 00:00:00.000", + "requiredDate": "1997-04-25 00:00:00.000", + "shippedDate": "1997-04-09 00:00:00.000", + "shipVia": 2, + "freight": 5.29, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10483, + "customerID": "WHITC", + "employeeID": 7, + "orderDate": "1997-03-24 00:00:00.000", + "requiredDate": "1997-04-21 00:00:00.000", + "shippedDate": "1997-04-25 00:00:00.000", + "shipVia": 2, + "freight": 15.28, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 35, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10491, + "customerID": "FURIB", + "employeeID": 8, + "orderDate": "1997-03-31 00:00:00.000", + "requiredDate": "1997-04-28 00:00:00.000", + "shippedDate": "1997-04-08 00:00:00.000", + "shipVia": 3, + "freight": 16.96, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 7, + "discount": 0.15 + } + ] + }, + { + "orderID": 10480, + "customerID": "FOLIG", + "employeeID": 6, + "orderDate": "1997-03-20 00:00:00.000", + "requiredDate": "1997-04-17 00:00:00.000", + "shippedDate": "1997-03-24 00:00:00.000", + "shipVia": 2, + "freight": 1.35, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10490, + "customerID": "HILAA", + "employeeID": 7, + "orderDate": "1997-03-31 00:00:00.000", + "requiredDate": "1997-04-28 00:00:00.000", + "shippedDate": "1997-04-03 00:00:00.000", + "shipVia": 2, + "freight": 210.19, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 60, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10492, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-04-01 00:00:00.000", + "requiredDate": "1997-04-29 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 1, + "freight": 62.89, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10493, + "customerID": "LAMAI", + "employeeID": 4, + "orderDate": "1997-04-02 00:00:00.000", + "requiredDate": "1997-04-30 00:00:00.000", + "shippedDate": "1997-04-10 00:00:00.000", + "shipVia": 3, + "freight": 10.64, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10498, + "customerID": "HILAA", + "employeeID": 8, + "orderDate": "1997-04-07 00:00:00.000", + "requiredDate": "1997-05-05 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 2, + "freight": 29.75, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10499, + "customerID": "LILAS", + "employeeID": 4, + "orderDate": "1997-04-08 00:00:00.000", + "requiredDate": "1997-05-06 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 2, + "freight": 102.02, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10500, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1997-04-09 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-04-17 00:00:00.000", + "shipVia": 1, + "freight": 42.68, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 8, + "discount": 0.05 + } + ] + }, + { + "orderID": 10502, + "customerID": "PERIC", + "employeeID": 2, + "orderDate": "1997-04-10 00:00:00.000", + "requiredDate": "1997-05-08 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 1, + "freight": 69.32, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 21, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 6, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10503, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1997-04-11 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 2, + "freight": 16.74, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 70, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10497, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1997-04-04 00:00:00.000", + "requiredDate": "1997-05-02 00:00:00.000", + "shippedDate": "1997-04-07 00:00:00.000", + "shipVia": 1, + "freight": 36.21, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 14, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10495, + "customerID": "LAUGB", + "employeeID": 3, + "orderDate": "1997-04-03 00:00:00.000", + "requiredDate": "1997-05-01 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 3, + "freight": 4.65, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10504, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1997-04-11 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-04-18 00:00:00.000", + "shipVia": 3, + "freight": 59.13, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 12, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 12, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10508, + "customerID": "OTTIK", + "employeeID": 1, + "orderDate": "1997-04-16 00:00:00.000", + "requiredDate": "1997-05-14 00:00:00.000", + "shippedDate": "1997-05-13 00:00:00.000", + "shipVia": 2, + "freight": 4.99, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10510, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-04-18 00:00:00.000", + "requiredDate": "1997-05-16 00:00:00.000", + "shippedDate": "1997-04-28 00:00:00.000", + "shipVia": 3, + "freight": 367.63, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 36, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 36, + "discount": 0.1 + } + ] + }, + { + "orderID": 10511, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-04-18 00:00:00.000", + "requiredDate": "1997-05-16 00:00:00.000", + "shippedDate": "1997-04-21 00:00:00.000", + "shipVia": 3, + "freight": 350.64, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 10, + "discount": 0.15 + } + ] + }, + { + "orderID": 10512, + "customerID": "FAMIA", + "employeeID": 7, + "orderDate": "1997-04-21 00:00:00.000", + "requiredDate": "1997-05-19 00:00:00.000", + "shippedDate": "1997-04-24 00:00:00.000", + "shipVia": 2, + "freight": 3.53, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 9, + "discount": 0.15 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 6, + "discount": 0.15 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10513, + "customerID": "WANDK", + "employeeID": 7, + "orderDate": "1997-04-22 00:00:00.000", + "requiredDate": "1997-06-03 00:00:00.000", + "shippedDate": "1997-04-28 00:00:00.000", + "shipVia": 1, + "freight": 105.65, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10506, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1997-04-15 00:00:00.000", + "requiredDate": "1997-05-13 00:00:00.000", + "shippedDate": "1997-05-02 00:00:00.000", + "shipVia": 2, + "freight": 21.19, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 14, + "discount": 0.1 + } + ] + }, + { + "orderID": 10515, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-04-23 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 1, + "freight": 204.47, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 16, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 120, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 16, + "discount": 0.15 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 84, + "discount": 0.15 + } + ] + }, + { + "orderID": 10516, + "customerID": "HUNGO", + "employeeID": 2, + "orderDate": "1997-04-24 00:00:00.000", + "requiredDate": "1997-05-22 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 3, + "freight": 62.78, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 80, + "discount": 0.1 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10507, + "customerID": "ANTON", + "employeeID": 7, + "orderDate": "1997-04-15 00:00:00.000", + "requiredDate": "1997-05-13 00:00:00.000", + "shippedDate": "1997-04-22 00:00:00.000", + "shipVia": 1, + "freight": 47.45, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10514, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1997-04-22 00:00:00.000", + "requiredDate": "1997-05-20 00:00:00.000", + "shippedDate": "1997-05-16 00:00:00.000", + "shipVia": 2, + "freight": 789.95, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 39, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 50, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 81, + "quantity": 39, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 35, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10517, + "customerID": "NORTS", + "employeeID": 3, + "orderDate": "1997-04-24 00:00:00.000", + "requiredDate": "1997-05-22 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 3, + "freight": 32.07, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 6, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 4, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10518, + "customerID": "TORTU", + "employeeID": 4, + "orderDate": "1997-04-25 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-05-05 00:00:00.000", + "shipVia": 2, + "freight": 218.15, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 5, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10519, + "customerID": "CHOPS", + "employeeID": 6, + "orderDate": "1997-04-28 00:00:00.000", + "requiredDate": "1997-05-26 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 3, + "freight": 91.76, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 40, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10520, + "customerID": "SANTG", + "employeeID": 7, + "orderDate": "1997-04-29 00:00:00.000", + "requiredDate": "1997-05-27 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 1, + "freight": 13.37, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 8, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10521, + "customerID": "CACTU", + "employeeID": 8, + "orderDate": "1997-04-29 00:00:00.000", + "requiredDate": "1997-05-27 00:00:00.000", + "shippedDate": "1997-05-02 00:00:00.000", + "shipVia": 2, + "freight": 17.22, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 10, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10522, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1997-04-30 00:00:00.000", + "requiredDate": "1997-05-28 00:00:00.000", + "shippedDate": "1997-05-06 00:00:00.000", + "shipVia": 1, + "freight": 45.33, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10523, + "customerID": "SEVES", + "employeeID": 7, + "orderDate": "1997-05-01 00:00:00.000", + "requiredDate": "1997-05-29 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 2, + "freight": 77.63, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 20, + "unitPrice": 81, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 37, + "unitPrice": 26, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10524, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-05-01 00:00:00.000", + "requiredDate": "1997-05-29 00:00:00.000", + "shippedDate": "1997-05-07 00:00:00.000", + "shipVia": 2, + "freight": 244.79, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 2, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 10, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 60, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10525, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1997-05-02 00:00:00.000", + "requiredDate": "1997-05-30 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 2, + "freight": 11.06, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10526, + "customerID": "WARTH", + "employeeID": 4, + "orderDate": "1997-05-05 00:00:00.000", + "requiredDate": "1997-06-02 00:00:00.000", + "shippedDate": "1997-05-15 00:00:00.000", + "shipVia": 2, + "freight": 58.59, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 8, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10527, + "customerID": "QUICK", + "employeeID": 7, + "orderDate": "1997-05-05 00:00:00.000", + "requiredDate": "1997-06-02 00:00:00.000", + "shippedDate": "1997-05-07 00:00:00.000", + "shipVia": 1, + "freight": 41.9, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10528, + "customerID": "GREAL", + "employeeID": 6, + "orderDate": "1997-05-06 00:00:00.000", + "requiredDate": "1997-05-20 00:00:00.000", + "shippedDate": "1997-05-09 00:00:00.000", + "shipVia": 2, + "freight": 3.35, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 3, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 8, + "discount": 0.2 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10529, + "customerID": "MAISD", + "employeeID": 5, + "orderDate": "1997-05-07 00:00:00.000", + "requiredDate": "1997-06-04 00:00:00.000", + "shippedDate": "1997-05-09 00:00:00.000", + "shipVia": 2, + "freight": 66.69, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 14, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10530, + "customerID": "PICCO", + "employeeID": 3, + "orderDate": "1997-05-08 00:00:00.000", + "requiredDate": "1997-06-05 00:00:00.000", + "shippedDate": "1997-05-12 00:00:00.000", + "shipVia": 2, + "freight": 339.22, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 40, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 25, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10531, + "customerID": "OCEAN", + "employeeID": 7, + "orderDate": "1997-05-08 00:00:00.000", + "requiredDate": "1997-06-05 00:00:00.000", + "shippedDate": "1997-05-19 00:00:00.000", + "shipVia": 1, + "freight": 8.12, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10532, + "customerID": "EASTC", + "employeeID": 7, + "orderDate": "1997-05-09 00:00:00.000", + "requiredDate": "1997-06-06 00:00:00.000", + "shippedDate": "1997-05-12 00:00:00.000", + "shipVia": 3, + "freight": 74.46, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10536, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-05-14 00:00:00.000", + "requiredDate": "1997-06-11 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 2, + "freight": 58.88, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10537, + "customerID": "RICSU", + "employeeID": 1, + "orderDate": "1997-05-14 00:00:00.000", + "requiredDate": "1997-05-28 00:00:00.000", + "shippedDate": "1997-05-19 00:00:00.000", + "shipVia": 1, + "freight": 78.85, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 6, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 21, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10538, + "customerID": "BSBEV", + "employeeID": 9, + "orderDate": "1997-05-15 00:00:00.000", + "requiredDate": "1997-06-12 00:00:00.000", + "shippedDate": "1997-05-16 00:00:00.000", + "shipVia": 3, + "freight": 4.87, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 7, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10539, + "customerID": "BSBEV", + "employeeID": 6, + "orderDate": "1997-05-16 00:00:00.000", + "requiredDate": "1997-06-13 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 3, + "freight": 12.36, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 8, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 15, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 6, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10540, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1997-05-19 00:00:00.000", + "requiredDate": "1997-06-16 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 3, + "freight": 1007.64, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 40, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10541, + "customerID": "HANAR", + "employeeID": 2, + "orderDate": "1997-05-19 00:00:00.000", + "requiredDate": "1997-06-16 00:00:00.000", + "shippedDate": "1997-05-29 00:00:00.000", + "shipVia": 1, + "freight": 68.65, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0.1 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 36, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 9, + "discount": 0.1 + } + ] + }, + { + "orderID": 10534, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1997-05-12 00:00:00.000", + "requiredDate": "1997-06-09 00:00:00.000", + "shippedDate": "1997-05-14 00:00:00.000", + "shipVia": 2, + "freight": 27.94, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 10, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10533, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1997-05-12 00:00:00.000", + "requiredDate": "1997-06-09 00:00:00.000", + "shippedDate": "1997-05-22 00:00:00.000", + "shipVia": 1, + "freight": 188.04, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 24, + "discount": 0.05 + } + ] + }, + { + "orderID": 10535, + "customerID": "ANTON", + "employeeID": 4, + "orderDate": "1997-05-13 00:00:00.000", + "requiredDate": "1997-06-10 00:00:00.000", + "shippedDate": "1997-05-21 00:00:00.000", + "shipVia": 1, + "freight": 15.64, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10543, + "customerID": "LILAS", + "employeeID": 8, + "orderDate": "1997-05-21 00:00:00.000", + "requiredDate": "1997-06-18 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 2, + "freight": 48.17, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10542, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-05-20 00:00:00.000", + "requiredDate": "1997-06-17 00:00:00.000", + "shippedDate": "1997-05-26 00:00:00.000", + "shipVia": 3, + "freight": 10.95, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 24, + "discount": 0.05 + } + ] + }, + { + "orderID": 10546, + "customerID": "VICTE", + "employeeID": 1, + "orderDate": "1997-05-23 00:00:00.000", + "requiredDate": "1997-06-20 00:00:00.000", + "shippedDate": "1997-05-27 00:00:00.000", + "shipVia": 3, + "freight": 194.72, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 10, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10547, + "customerID": "SEVES", + "employeeID": 3, + "orderDate": "1997-05-23 00:00:00.000", + "requiredDate": "1997-06-20 00:00:00.000", + "shippedDate": "1997-06-02 00:00:00.000", + "shipVia": 2, + "freight": 178.43, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10548, + "customerID": "TOMSP", + "employeeID": 3, + "orderDate": "1997-05-26 00:00:00.000", + "requiredDate": "1997-06-23 00:00:00.000", + "shippedDate": "1997-06-02 00:00:00.000", + "shipVia": 2, + "freight": 1.43, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0.25 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10550, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1997-05-28 00:00:00.000", + "requiredDate": "1997-06-25 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 3, + "freight": 4.32, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10544, + "customerID": "LONEP", + "employeeID": 4, + "orderDate": "1997-05-21 00:00:00.000", + "requiredDate": "1997-06-18 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 1, + "freight": 24.91, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 7, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10553, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-05-30 00:00:00.000", + "requiredDate": "1997-06-27 00:00:00.000", + "shippedDate": "1997-06-03 00:00:00.000", + "shipVia": 2, + "freight": 149.49, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 14, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 24, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10554, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-05-30 00:00:00.000", + "requiredDate": "1997-06-27 00:00:00.000", + "shippedDate": "1997-06-05 00:00:00.000", + "shipVia": 3, + "freight": 120.97, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10555, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-06-02 00:00:00.000", + "requiredDate": "1997-06-30 00:00:00.000", + "shippedDate": "1997-06-04 00:00:00.000", + "shipVia": 3, + "freight": 252.49, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 18, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10557, + "customerID": "LEHMS", + "employeeID": 9, + "orderDate": "1997-06-03 00:00:00.000", + "requiredDate": "1997-06-17 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 2, + "freight": 96.72, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10558, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-06-04 00:00:00.000", + "requiredDate": "1997-07-02 00:00:00.000", + "shippedDate": "1997-06-10 00:00:00.000", + "shipVia": 2, + "freight": 72.97, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 25, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 18, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 3, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10551, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1997-05-28 00:00:00.000", + "requiredDate": "1997-07-09 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 3, + "freight": 72.95, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10549, + "customerID": "QUICK", + "employeeID": 5, + "orderDate": "1997-05-27 00:00:00.000", + "requiredDate": "1997-06-10 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 1, + "freight": 171.24, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 55, + "discount": 0.15 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 100, + "discount": 0.15 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 48, + "discount": 0.15 + } + ] + }, + { + "orderID": 10552, + "customerID": "HILAA", + "employeeID": 2, + "orderDate": "1997-05-29 00:00:00.000", + "requiredDate": "1997-06-26 00:00:00.000", + "shippedDate": "1997-06-05 00:00:00.000", + "shipVia": 1, + "freight": 83.22, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 18, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10562, + "customerID": "REGGC", + "employeeID": 1, + "orderDate": "1997-06-09 00:00:00.000", + "requiredDate": "1997-07-07 00:00:00.000", + "shippedDate": "1997-06-12 00:00:00.000", + "shipVia": 1, + "freight": 22.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10563, + "customerID": "RICAR", + "employeeID": 2, + "orderDate": "1997-06-10 00:00:00.000", + "requiredDate": "1997-07-22 00:00:00.000", + "shippedDate": "1997-06-24 00:00:00.000", + "shipVia": 2, + "freight": 60.43, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 25, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10564, + "customerID": "RATTC", + "employeeID": 4, + "orderDate": "1997-06-10 00:00:00.000", + "requiredDate": "1997-07-08 00:00:00.000", + "shippedDate": "1997-06-16 00:00:00.000", + "shipVia": 3, + "freight": 13.75, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0.05 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10565, + "customerID": "MEREP", + "employeeID": 8, + "orderDate": "1997-06-11 00:00:00.000", + "requiredDate": "1997-07-09 00:00:00.000", + "shippedDate": "1997-06-18 00:00:00.000", + "shipVia": 2, + "freight": 7.15, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10566, + "customerID": "BLONP", + "employeeID": 9, + "orderDate": "1997-06-12 00:00:00.000", + "requiredDate": "1997-07-10 00:00:00.000", + "shippedDate": "1997-06-18 00:00:00.000", + "shipVia": 1, + "freight": 88.4, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 18, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10567, + "customerID": "HUNGO", + "employeeID": 1, + "orderDate": "1997-06-12 00:00:00.000", + "requiredDate": "1997-07-10 00:00:00.000", + "shippedDate": "1997-06-17 00:00:00.000", + "shipVia": 1, + "freight": 33.97, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 60, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 3, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10559, + "customerID": "BLONP", + "employeeID": 6, + "orderDate": "1997-06-05 00:00:00.000", + "requiredDate": "1997-07-03 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 1, + "freight": 8.05, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 18, + "discount": 0.05 + } + ] + }, + { + "orderID": 10569, + "customerID": "RATTC", + "employeeID": 5, + "orderDate": "1997-06-16 00:00:00.000", + "requiredDate": "1997-07-14 00:00:00.000", + "shippedDate": "1997-07-11 00:00:00.000", + "shipVia": 1, + "freight": 58.98, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10560, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-06-06 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-09 00:00:00.000", + "shipVia": 1, + "freight": 36.65, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10570, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-06-17 00:00:00.000", + "requiredDate": "1997-07-15 00:00:00.000", + "shippedDate": "1997-06-19 00:00:00.000", + "shipVia": 3, + "freight": 188.99, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10571, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-06-17 00:00:00.000", + "requiredDate": "1997-07-29 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 3, + "freight": 26.06, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 11, + "discount": 0.15 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 28, + "discount": 0.15 + } + ] + }, + { + "orderID": 10572, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-06-18 00:00:00.000", + "requiredDate": "1997-07-16 00:00:00.000", + "shippedDate": "1997-06-25 00:00:00.000", + "shipVia": 2, + "freight": 116.43, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 50, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10561, + "customerID": "FOLKO", + "employeeID": 2, + "orderDate": "1997-06-06 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-09 00:00:00.000", + "shipVia": 2, + "freight": 242.21, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10573, + "customerID": "ANTON", + "employeeID": 7, + "orderDate": "1997-06-19 00:00:00.000", + "requiredDate": "1997-07-17 00:00:00.000", + "shippedDate": "1997-06-20 00:00:00.000", + "shipVia": 3, + "freight": 84.84, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 18, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 40, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10574, + "customerID": "TRAIH", + "employeeID": 4, + "orderDate": "1997-06-19 00:00:00.000", + "requiredDate": "1997-07-17 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 2, + "freight": 37.6, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 2, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10578, + "customerID": "BSBEV", + "employeeID": 4, + "orderDate": "1997-06-24 00:00:00.000", + "requiredDate": "1997-07-22 00:00:00.000", + "shippedDate": "1997-07-25 00:00:00.000", + "shipVia": 3, + "freight": 29.6, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10579, + "customerID": "LETSS", + "employeeID": 1, + "orderDate": "1997-06-25 00:00:00.000", + "requiredDate": "1997-07-23 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 2, + "freight": 13.73, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10580, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-06-26 00:00:00.000", + "requiredDate": "1997-07-24 00:00:00.000", + "shippedDate": "1997-07-01 00:00:00.000", + "shipVia": 3, + "freight": 75.89, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 9, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10582, + "customerID": "BLAUS", + "employeeID": 3, + "orderDate": "1997-06-27 00:00:00.000", + "requiredDate": "1997-07-25 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 2, + "freight": 27.71, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 4, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10583, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-06-30 00:00:00.000", + "requiredDate": "1997-07-28 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 2, + "freight": 7.28, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 10, + "discount": 0.15 + } + ] + }, + { + "orderID": 10577, + "customerID": "TRAIH", + "employeeID": 9, + "orderDate": "1997-06-23 00:00:00.000", + "requiredDate": "1997-08-04 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 2, + "freight": 25.41, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 77, + "unitPrice": 13, + "quantity": 18, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10576, + "customerID": "TORTU", + "employeeID": 3, + "orderDate": "1997-06-23 00:00:00.000", + "requiredDate": "1997-07-07 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 3, + "freight": 18.56, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10587, + "customerID": "QUEDE", + "employeeID": 1, + "orderDate": "1997-07-02 00:00:00.000", + "requiredDate": "1997-07-30 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 1, + "freight": 62.52, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 6, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10588, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-07-03 00:00:00.000", + "requiredDate": "1997-07-31 00:00:00.000", + "shippedDate": "1997-07-10 00:00:00.000", + "shipVia": 3, + "freight": 194.67, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 100, + "discount": 0.2 + } + ] + }, + { + "orderID": 10590, + "customerID": "MEREP", + "employeeID": 4, + "orderDate": "1997-07-07 00:00:00.000", + "requiredDate": "1997-08-04 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 3, + "freight": 44.77, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10575, + "customerID": "MORGK", + "employeeID": 5, + "orderDate": "1997-06-20 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 1, + "freight": 127.34, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 12, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10591, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1997-07-07 00:00:00.000", + "requiredDate": "1997-07-21 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 1, + "freight": 55.92, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10595, + "customerID": "ERNSH", + "employeeID": 2, + "orderDate": "1997-07-10 00:00:00.000", + "requiredDate": "1997-08-07 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 1, + "freight": 96.78, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 65, + "discount": 0.25 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 120, + "discount": 0.25 + } + ] + }, + { + "orderID": 10596, + "customerID": "WHITC", + "employeeID": 8, + "orderDate": "1997-07-11 00:00:00.000", + "requiredDate": "1997-08-08 00:00:00.000", + "shippedDate": "1997-08-12 00:00:00.000", + "shipVia": 1, + "freight": 16.34, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10597, + "customerID": "PICCO", + "employeeID": 7, + "orderDate": "1997-07-11 00:00:00.000", + "requiredDate": "1997-08-08 00:00:00.000", + "shippedDate": "1997-07-18 00:00:00.000", + "shipVia": 3, + "freight": 35.12, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0.2 + } + ] + }, + { + "orderID": 10598, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1997-07-14 00:00:00.000", + "requiredDate": "1997-08-11 00:00:00.000", + "shippedDate": "1997-07-18 00:00:00.000", + "shipVia": 3, + "freight": 44.42, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 50, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10600, + "customerID": "HUNGC", + "employeeID": 4, + "orderDate": "1997-07-16 00:00:00.000", + "requiredDate": "1997-08-13 00:00:00.000", + "shippedDate": "1997-07-21 00:00:00.000", + "shipVia": 1, + "freight": 45.13, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 4, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10601, + "customerID": "HILAA", + "employeeID": 7, + "orderDate": "1997-07-16 00:00:00.000", + "requiredDate": "1997-08-27 00:00:00.000", + "shippedDate": "1997-07-22 00:00:00.000", + "shipVia": 1, + "freight": 58.3, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 60, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10603, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-07-18 00:00:00.000", + "requiredDate": "1997-08-15 00:00:00.000", + "shippedDate": "1997-08-08 00:00:00.000", + "shipVia": 2, + "freight": 48.77, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 48, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10604, + "customerID": "FURIB", + "employeeID": 1, + "orderDate": "1997-07-18 00:00:00.000", + "requiredDate": "1997-08-15 00:00:00.000", + "shippedDate": "1997-07-29 00:00:00.000", + "shipVia": 1, + "freight": 7.46, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10605, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1997-07-21 00:00:00.000", + "requiredDate": "1997-08-18 00:00:00.000", + "shippedDate": "1997-07-29 00:00:00.000", + "shipVia": 2, + "freight": 379.13, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10606, + "customerID": "TRADH", + "employeeID": 4, + "orderDate": "1997-07-22 00:00:00.000", + "requiredDate": "1997-08-19 00:00:00.000", + "shippedDate": "1997-07-31 00:00:00.000", + "shipVia": 3, + "freight": 79.4, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10594, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1997-07-09 00:00:00.000", + "requiredDate": "1997-08-06 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 2, + "freight": 5.24, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10593, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1997-07-09 00:00:00.000", + "requiredDate": "1997-08-06 00:00:00.000", + "shippedDate": "1997-08-13 00:00:00.000", + "shipVia": 2, + "freight": 174.2, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 4, + "discount": 0.2 + } + ] + }, + { + "orderID": 10592, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-07-08 00:00:00.000", + "requiredDate": "1997-08-05 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 1, + "freight": 32.1, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 5, + "discount": 0.05 + } + ] + }, + { + "orderID": 10607, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-07-22 00:00:00.000", + "requiredDate": "1997-08-19 00:00:00.000", + "shippedDate": "1997-07-25 00:00:00.000", + "shipVia": 1, + "freight": 200.24, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 45, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 100, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 42, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10609, + "customerID": "DUMON", + "employeeID": 7, + "orderDate": "1997-07-24 00:00:00.000", + "requiredDate": "1997-08-21 00:00:00.000", + "shippedDate": "1997-07-30 00:00:00.000", + "shipVia": 2, + "freight": 1.85, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10614, + "customerID": "BLAUS", + "employeeID": 8, + "orderDate": "1997-07-29 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 3, + "freight": 1.93, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 14, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 8, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10616, + "customerID": "GREAL", + "employeeID": 1, + "orderDate": "1997-07-31 00:00:00.000", + "requiredDate": "1997-08-28 00:00:00.000", + "shippedDate": "1997-08-05 00:00:00.000", + "shipVia": 2, + "freight": 116.53, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 14, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10618, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1997-08-01 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-08 00:00:00.000", + "shipVia": 1, + "freight": 154.68, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 70, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10619, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-08-04 00:00:00.000", + "requiredDate": "1997-09-01 00:00:00.000", + "shippedDate": "1997-08-07 00:00:00.000", + "shipVia": 3, + "freight": 91.05, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 42, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10612, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1997-07-28 00:00:00.000", + "requiredDate": "1997-08-25 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 544.08, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 70, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 55, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 18, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 40, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 80, + "discount": 0 + } + ] + }, + { + "orderID": 10613, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1997-07-29 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 8.11, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10611, + "customerID": "WOLZA", + "employeeID": 6, + "orderDate": "1997-07-25 00:00:00.000", + "requiredDate": "1997-08-22 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 80.65, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10621, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-08-05 00:00:00.000", + "requiredDate": "1997-09-02 00:00:00.000", + "shippedDate": "1997-08-11 00:00:00.000", + "shipVia": 2, + "freight": 23.73, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 5, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10620, + "customerID": "LAUGB", + "employeeID": 2, + "orderDate": "1997-08-05 00:00:00.000", + "requiredDate": "1997-09-02 00:00:00.000", + "shippedDate": "1997-08-14 00:00:00.000", + "shipVia": 3, + "freight": 0.94, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 5, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10625, + "customerID": "ANATR", + "employeeID": 3, + "orderDate": "1997-08-08 00:00:00.000", + "requiredDate": "1997-09-05 00:00:00.000", + "shippedDate": "1997-08-14 00:00:00.000", + "shipVia": 1, + "freight": 43.9, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 3, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10623, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-08-07 00:00:00.000", + "requiredDate": "1997-09-04 00:00:00.000", + "shippedDate": "1997-08-12 00:00:00.000", + "shipVia": 2, + "freight": 97.18, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 21, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 3, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10622, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1997-08-06 00:00:00.000", + "requiredDate": "1997-09-03 00:00:00.000", + "shippedDate": "1997-08-11 00:00:00.000", + "shipVia": 3, + "freight": 50.97, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0.2 + } + ] + }, + { + "orderID": 10624, + "customerID": "THECR", + "employeeID": 4, + "orderDate": "1997-08-07 00:00:00.000", + "requiredDate": "1997-09-04 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 2, + "freight": 94.8, + "shipName": "The Cracker Box", + "shipAddress": { + "street": "55 Grizzly Peak Rd.", + "city": "Butte", + "region": "MT", + "postalCode": 59801, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 6, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10626, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-08-11 00:00:00.000", + "requiredDate": "1997-09-08 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 2, + "freight": 138.69, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10627, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-08-11 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 107.46, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 35, + "discount": 0.15 + } + ] + }, + { + "orderID": 10630, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-08-13 00:00:00.000", + "requiredDate": "1997-09-10 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 2, + "freight": 32.35, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10629, + "customerID": "GODOS", + "employeeID": 4, + "orderDate": "1997-08-12 00:00:00.000", + "requiredDate": "1997-09-09 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 3, + "freight": 85.46, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10632, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1997-08-14 00:00:00.000", + "requiredDate": "1997-09-11 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 1, + "freight": 41.38, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10633, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1997-08-15 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-18 00:00:00.000", + "shipVia": 3, + "freight": 477.9, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 36, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 13, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 80, + "discount": 0.15 + } + ] + }, + { + "orderID": 10634, + "customerID": "FOLIG", + "employeeID": 4, + "orderDate": "1997-08-15 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 487.38, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 35, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 2, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10638, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1997-08-20 00:00:00.000", + "requiredDate": "1997-09-17 00:00:00.000", + "shippedDate": "1997-09-01 00:00:00.000", + "shipVia": 1, + "freight": 158.44, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10640, + "customerID": "WANDK", + "employeeID": 4, + "orderDate": "1997-08-21 00:00:00.000", + "requiredDate": "1997-09-18 00:00:00.000", + "shippedDate": "1997-08-28 00:00:00.000", + "shipVia": 1, + "freight": 23.55, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10641, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1997-08-22 00:00:00.000", + "requiredDate": "1997-09-19 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 2, + "freight": 179.61, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 50, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10642, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1997-08-22 00:00:00.000", + "requiredDate": "1997-09-19 00:00:00.000", + "shippedDate": "1997-09-05 00:00:00.000", + "shipVia": 3, + "freight": 41.89, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10643, + "customerID": "ALFKI", + "employeeID": 6, + "orderDate": "1997-08-25 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-09-02 00:00:00.000", + "shipVia": 1, + "freight": 29.46, + "shipName": "Alfreds Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 2, + "discount": 0.25 + } + ] + }, + { + "orderID": 10636, + "customerID": "WARTH", + "employeeID": 4, + "orderDate": "1997-08-19 00:00:00.000", + "requiredDate": "1997-09-16 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 1, + "freight": 1.15, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 25, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10644, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1997-08-25 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-09-01 00:00:00.000", + "shipVia": 2, + "freight": 0.14, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 21, + "discount": 0.1 + } + ] + }, + { + "orderID": 10635, + "customerID": "MAGAA", + "employeeID": 8, + "orderDate": "1997-08-18 00:00:00.000", + "requiredDate": "1997-09-15 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 47.46, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 4, + "unitPrice": 22, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10637, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1997-08-19 00:00:00.000", + "requiredDate": "1997-09-16 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 1, + "freight": 201.29, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10645, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1997-08-26 00:00:00.000", + "requiredDate": "1997-09-23 00:00:00.000", + "shippedDate": "1997-09-02 00:00:00.000", + "shipVia": 1, + "freight": 12.41, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10649, + "customerID": "MAISD", + "employeeID": 5, + "orderDate": "1997-08-28 00:00:00.000", + "requiredDate": "1997-09-25 00:00:00.000", + "shippedDate": "1997-08-29 00:00:00.000", + "shipVia": 3, + "freight": 6.2, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10650, + "customerID": "FAMIA", + "employeeID": 5, + "orderDate": "1997-08-29 00:00:00.000", + "requiredDate": "1997-09-26 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 3, + "freight": 176.81, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10651, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1997-09-01 00:00:00.000", + "requiredDate": "1997-09-29 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 2, + "freight": 20.6, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10652, + "customerID": "GOURL", + "employeeID": 4, + "orderDate": "1997-09-01 00:00:00.000", + "requiredDate": "1997-09-29 00:00:00.000", + "shippedDate": "1997-09-08 00:00:00.000", + "shipVia": 2, + "freight": 7.14, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10653, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1997-09-02 00:00:00.000", + "requiredDate": "1997-09-30 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 93.25, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10654, + "customerID": "BERGS", + "employeeID": 5, + "orderDate": "1997-09-02 00:00:00.000", + "requiredDate": "1997-09-30 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 1, + "freight": 55.26, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10647, + "customerID": "QUEDE", + "employeeID": 4, + "orderDate": "1997-08-27 00:00:00.000", + "requiredDate": "1997-09-10 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 2, + "freight": 45.54, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10656, + "customerID": "GREAL", + "employeeID": 6, + "orderDate": "1997-09-04 00:00:00.000", + "requiredDate": "1997-10-02 00:00:00.000", + "shippedDate": "1997-09-10 00:00:00.000", + "shipVia": 1, + "freight": 57.15, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 3, + "discount": 0.1 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10657, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1997-09-04 00:00:00.000", + "requiredDate": "1997-10-02 00:00:00.000", + "shippedDate": "1997-09-15 00:00:00.000", + "shipVia": 2, + "freight": 352.69, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 24, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 45, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 45, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10658, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-09-05 00:00:00.000", + "requiredDate": "1997-10-03 00:00:00.000", + "shippedDate": "1997-09-08 00:00:00.000", + "shipVia": 1, + "freight": 364.15, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 55, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 70, + "discount": 0.05 + } + ] + }, + { + "orderID": 10646, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-08-27 00:00:00.000", + "requiredDate": "1997-10-08 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 3, + "freight": 142.33, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10648, + "customerID": "RICAR", + "employeeID": 5, + "orderDate": "1997-08-28 00:00:00.000", + "requiredDate": "1997-10-09 00:00:00.000", + "shippedDate": "1997-09-09 00:00:00.000", + "shipVia": 2, + "freight": 14.25, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10659, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1997-09-05 00:00:00.000", + "requiredDate": "1997-10-03 00:00:00.000", + "shippedDate": "1997-09-10 00:00:00.000", + "shipVia": 2, + "freight": 105.81, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10664, + "customerID": "FURIB", + "employeeID": 1, + "orderDate": "1997-09-10 00:00:00.000", + "requiredDate": "1997-10-08 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 3, + "freight": 1.27, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 12, + "discount": 0.15 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10661, + "customerID": "HUNGO", + "employeeID": 7, + "orderDate": "1997-09-09 00:00:00.000", + "requiredDate": "1997-10-07 00:00:00.000", + "shippedDate": "1997-09-15 00:00:00.000", + "shipVia": 3, + "freight": 17.55, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 49, + "discount": 0.2 + } + ] + }, + { + "orderID": 10665, + "customerID": "LONEP", + "employeeID": 1, + "orderDate": "1997-09-11 00:00:00.000", + "requiredDate": "1997-10-09 00:00:00.000", + "shippedDate": "1997-09-17 00:00:00.000", + "shipVia": 2, + "freight": 26.31, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10663, + "customerID": "BONAP", + "employeeID": 2, + "orderDate": "1997-09-10 00:00:00.000", + "requiredDate": "1997-09-24 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 2, + "freight": 113.15, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10666, + "customerID": "RICSU", + "employeeID": 7, + "orderDate": "1997-09-12 00:00:00.000", + "requiredDate": "1997-10-10 00:00:00.000", + "shippedDate": "1997-09-22 00:00:00.000", + "shipVia": 2, + "freight": 232.42, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 36, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10667, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1997-09-12 00:00:00.000", + "requiredDate": "1997-10-10 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 78.09, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 14, + "discount": 0.2 + } + ] + }, + { + "orderID": 10668, + "customerID": "WANDK", + "employeeID": 1, + "orderDate": "1997-09-15 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-09-23 00:00:00.000", + "shipVia": 2, + "freight": 47.22, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10670, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1997-09-16 00:00:00.000", + "requiredDate": "1997-10-14 00:00:00.000", + "shippedDate": "1997-09-18 00:00:00.000", + "shipVia": 1, + "freight": 203.48, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 32, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 60, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 50, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 25, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10672, + "customerID": "BERGS", + "employeeID": 9, + "orderDate": "1997-09-17 00:00:00.000", + "requiredDate": "1997-10-01 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 2, + "freight": 95.75, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10671, + "customerID": "FRANR", + "employeeID": 1, + "orderDate": "1997-09-17 00:00:00.000", + "requiredDate": "1997-10-15 00:00:00.000", + "shippedDate": "1997-09-24 00:00:00.000", + "shipVia": 1, + "freight": 30.34, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10673, + "customerID": "WILMK", + "employeeID": 2, + "orderDate": "1997-09-18 00:00:00.000", + "requiredDate": "1997-10-16 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 22.76, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 6, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 6, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10677, + "customerID": "ANTON", + "employeeID": 1, + "orderDate": "1997-09-22 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 3, + "freight": 4.03, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 8, + "discount": 0.15 + } + ] + }, + { + "orderID": 10678, + "customerID": "SAVEA", + "employeeID": 7, + "orderDate": "1997-09-23 00:00:00.000", + "requiredDate": "1997-10-21 00:00:00.000", + "shippedDate": "1997-10-16 00:00:00.000", + "shipVia": 3, + "freight": 388.98, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 100, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 120, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10680, + "customerID": "OLDWO", + "employeeID": 1, + "orderDate": "1997-09-24 00:00:00.000", + "requiredDate": "1997-10-22 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 1, + "freight": 26.61, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10681, + "customerID": "GREAL", + "employeeID": 3, + "orderDate": "1997-09-25 00:00:00.000", + "requiredDate": "1997-10-23 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 3, + "freight": 76.13, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10682, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1997-09-25 00:00:00.000", + "requiredDate": "1997-10-23 00:00:00.000", + "shippedDate": "1997-10-01 00:00:00.000", + "shipVia": 2, + "freight": 36.13, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 4, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10675, + "customerID": "FRANK", + "employeeID": 5, + "orderDate": "1997-09-19 00:00:00.000", + "requiredDate": "1997-10-17 00:00:00.000", + "shippedDate": "1997-09-23 00:00:00.000", + "shipVia": 2, + "freight": 31.85, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10684, + "customerID": "OTTIK", + "employeeID": 3, + "orderDate": "1997-09-26 00:00:00.000", + "requiredDate": "1997-10-24 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 1, + "freight": 145.63, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10685, + "customerID": "GOURL", + "employeeID": 4, + "orderDate": "1997-09-29 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 2, + "freight": 33.75, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 4, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10676, + "customerID": "TORTU", + "employeeID": 2, + "orderDate": "1997-09-22 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-09-29 00:00:00.000", + "shipVia": 2, + "freight": 2.01, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 2, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10686, + "customerID": "PICCO", + "employeeID": 2, + "orderDate": "1997-09-30 00:00:00.000", + "requiredDate": "1997-10-28 00:00:00.000", + "shippedDate": "1997-10-08 00:00:00.000", + "shipVia": 1, + "freight": 96.5, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10687, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-09-30 00:00:00.000", + "requiredDate": "1997-10-28 00:00:00.000", + "shippedDate": "1997-10-30 00:00:00.000", + "shipVia": 2, + "freight": 296.43, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 6, + "discount": 0.25 + } + ] + }, + { + "orderID": 10691, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-10-03 00:00:00.000", + "requiredDate": "1997-11-14 00:00:00.000", + "shippedDate": "1997-10-22 00:00:00.000", + "shipVia": 2, + "freight": 810.05, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 24, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 40, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 48, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10693, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1997-10-06 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-10-10 00:00:00.000", + "shipVia": 3, + "freight": 139.34, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 6, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10694, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1997-10-06 00:00:00.000", + "requiredDate": "1997-11-03 00:00:00.000", + "shippedDate": "1997-10-09 00:00:00.000", + "shipVia": 3, + "freight": 398.36, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 90, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10695, + "customerID": "WILMK", + "employeeID": 7, + "orderDate": "1997-10-07 00:00:00.000", + "requiredDate": "1997-11-18 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 1, + "freight": 16.72, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 10, + "discount": 0 + }, + { + "productID": 12, + "unitPrice": 38, + "quantity": 4, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10696, + "customerID": "WHITC", + "employeeID": 8, + "orderDate": "1997-10-08 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 3, + "freight": 102.55, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10697, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1997-10-08 00:00:00.000", + "requiredDate": "1997-11-05 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 1, + "freight": 45.52, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 9, + "discount": 0.25 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10698, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-10-09 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-17 00:00:00.000", + "shipVia": 1, + "freight": 272.47, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 65, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 8, + "discount": 0.05 + } + ] + }, + { + "orderID": 10690, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1997-10-02 00:00:00.000", + "requiredDate": "1997-10-30 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 1, + "freight": 15.8, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10702, + "customerID": "ALFKI", + "employeeID": 4, + "orderDate": "1997-10-13 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-10-21 00:00:00.000", + "shipVia": 1, + "freight": 23.94, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 15, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10700, + "customerID": "SAVEA", + "employeeID": 3, + "orderDate": "1997-10-10 00:00:00.000", + "requiredDate": "1997-11-07 00:00:00.000", + "shippedDate": "1997-10-16 00:00:00.000", + "shipVia": 1, + "freight": 65.1, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 60, + "discount": 0.2 + } + ] + }, + { + "orderID": 10688, + "customerID": "VAFFE", + "employeeID": 4, + "orderDate": "1997-10-01 00:00:00.000", + "requiredDate": "1997-10-15 00:00:00.000", + "shippedDate": "1997-10-07 00:00:00.000", + "shipVia": 2, + "freight": 299.09, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10701, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1997-10-13 00:00:00.000", + "requiredDate": "1997-10-27 00:00:00.000", + "shippedDate": "1997-10-15 00:00:00.000", + "shipVia": 3, + "freight": 220.31, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 42, + "discount": 0.15 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 35, + "discount": 0.15 + } + ] + }, + { + "orderID": 10703, + "customerID": "FOLKO", + "employeeID": 6, + "orderDate": "1997-10-14 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-10-20 00:00:00.000", + "shipVia": 2, + "freight": 152.3, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 5, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 35, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10704, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1997-10-14 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-11-07 00:00:00.000", + "shipVia": 1, + "freight": 4.78, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 6, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10708, + "customerID": "THEBI", + "employeeID": 6, + "orderDate": "1997-10-17 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 2.96, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 4, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10709, + "customerID": "GOURL", + "employeeID": 1, + "orderDate": "1997-10-17 00:00:00.000", + "requiredDate": "1997-11-14 00:00:00.000", + "shippedDate": "1997-11-20 00:00:00.000", + "shipVia": 3, + "freight": 210.8, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 40, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 28, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10710, + "customerID": "FRANS", + "employeeID": 1, + "orderDate": "1997-10-20 00:00:00.000", + "requiredDate": "1997-11-17 00:00:00.000", + "shippedDate": "1997-10-23 00:00:00.000", + "shipVia": 1, + "freight": 4.98, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 5, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10711, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-10-21 00:00:00.000", + "requiredDate": "1997-12-02 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 2, + "freight": 52.41, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 42, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 120, + "discount": 0 + } + ] + }, + { + "orderID": 10712, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1997-10-21 00:00:00.000", + "requiredDate": "1997-11-18 00:00:00.000", + "shippedDate": "1997-10-31 00:00:00.000", + "shipVia": 1, + "freight": 89.93, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 3, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10713, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1997-10-22 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-24 00:00:00.000", + "shipVia": 1, + "freight": 167.05, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 30, + "discount": 0 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 110, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10707, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1997-10-16 00:00:00.000", + "requiredDate": "1997-10-30 00:00:00.000", + "shippedDate": "1997-10-23 00:00:00.000", + "shipVia": 3, + "freight": 21.74, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 21, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 40, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 28, + "discount": 0.15 + } + ] + }, + { + "orderID": 10715, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1997-10-23 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 1, + "freight": 63.2, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 21, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10706, + "customerID": "OLDWO", + "employeeID": 8, + "orderDate": "1997-10-16 00:00:00.000", + "requiredDate": "1997-11-13 00:00:00.000", + "shippedDate": "1997-10-21 00:00:00.000", + "shipVia": 3, + "freight": 135.63, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 24, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10705, + "customerID": "HILAA", + "employeeID": 9, + "orderDate": "1997-10-15 00:00:00.000", + "requiredDate": "1997-11-12 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 2, + "freight": 3.52, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 4, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10714, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-10-22 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-27 00:00:00.000", + "shipVia": 3, + "freight": 24.49, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 18, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 27, + "discount": 0.25 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10719, + "customerID": "LETSS", + "employeeID": 8, + "orderDate": "1997-10-27 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 51.44, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 3, + "discount": 0.25 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10720, + "customerID": "QUEDE", + "employeeID": 8, + "orderDate": "1997-10-28 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 9.53, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10722, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-10-29 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-04 00:00:00.000", + "shipVia": 1, + "freight": 74.58, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 3, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 45, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 42, + "discount": 0 + } + ] + }, + { + "orderID": 10724, + "customerID": "MEREP", + "employeeID": 8, + "orderDate": "1997-10-30 00:00:00.000", + "requiredDate": "1997-12-11 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 57.75, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10716, + "customerID": "RANCH", + "employeeID": 4, + "orderDate": "1997-10-24 00:00:00.000", + "requiredDate": "1997-11-21 00:00:00.000", + "shippedDate": "1997-10-27 00:00:00.000", + "shipVia": 2, + "freight": 22.57, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 5, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 7, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10726, + "customerID": "EASTC", + "employeeID": 4, + "orderDate": "1997-11-03 00:00:00.000", + "requiredDate": "1997-11-17 00:00:00.000", + "shippedDate": "1997-12-05 00:00:00.000", + "shipVia": 1, + "freight": 16.56, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 25, + "discount": 0 + }, + { + "productID": 11, + "unitPrice": 21, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10717, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1997-10-24 00:00:00.000", + "requiredDate": "1997-11-21 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 2, + "freight": 59.25, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 32, + "discount": 0.05 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 15, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10727, + "customerID": "REGGC", + "employeeID": 2, + "orderDate": "1997-11-03 00:00:00.000", + "requiredDate": "1997-12-01 00:00:00.000", + "shippedDate": "1997-12-05 00:00:00.000", + "shipVia": 1, + "freight": 89.9, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10728, + "customerID": "QUEEN", + "employeeID": 4, + "orderDate": "1997-11-04 00:00:00.000", + "requiredDate": "1997-12-02 00:00:00.000", + "shippedDate": "1997-11-11 00:00:00.000", + "shipVia": 2, + "freight": 58.33, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 12, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10729, + "customerID": "LINOD", + "employeeID": 8, + "orderDate": "1997-11-04 00:00:00.000", + "requiredDate": "1997-12-16 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 3, + "freight": 141.06, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 50, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10730, + "customerID": "BONAP", + "employeeID": 5, + "orderDate": "1997-11-05 00:00:00.000", + "requiredDate": "1997-12-03 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 1, + "freight": 20.12, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 3, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10718, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-10-27 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 3, + "freight": 170.88, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 36, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 40, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10725, + "customerID": "FAMIA", + "employeeID": 4, + "orderDate": "1997-10-31 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 3, + "freight": 10.83, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 4, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10731, + "customerID": "CHOPS", + "employeeID": 7, + "orderDate": "1997-11-06 00:00:00.000", + "requiredDate": "1997-12-04 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 1, + "freight": 96.65, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10735, + "customerID": "LETSS", + "employeeID": 6, + "orderDate": "1997-11-10 00:00:00.000", + "requiredDate": "1997-12-08 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 45.97, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10736, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-11-11 00:00:00.000", + "requiredDate": "1997-12-09 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 44.1, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 40, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10737, + "customerID": "VINET", + "employeeID": 2, + "orderDate": "1997-11-11 00:00:00.000", + "requiredDate": "1997-12-09 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 2, + "freight": 7.79, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 4, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10739, + "customerID": "VINET", + "employeeID": 3, + "orderDate": "1997-11-12 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-17 00:00:00.000", + "shipVia": 3, + "freight": 11.08, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 6, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10740, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1997-11-13 00:00:00.000", + "requiredDate": "1997-12-11 00:00:00.000", + "shippedDate": "1997-11-25 00:00:00.000", + "shipVia": 2, + "freight": 81.88, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 14, + "discount": 0.2 + } + ] + }, + { + "orderID": 10733, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-11-07 00:00:00.000", + "requiredDate": "1997-12-05 00:00:00.000", + "shippedDate": "1997-11-10 00:00:00.000", + "shipVia": 3, + "freight": 110.11, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 16, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10742, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-11-14 00:00:00.000", + "requiredDate": "1997-12-12 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 3, + "freight": 243.73, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 50, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10734, + "customerID": "GOURL", + "employeeID": 2, + "orderDate": "1997-11-07 00:00:00.000", + "requiredDate": "1997-12-05 00:00:00.000", + "shippedDate": "1997-11-12 00:00:00.000", + "shipVia": 3, + "freight": 1.63, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10747, + "customerID": "PICCO", + "employeeID": 6, + "orderDate": "1997-11-19 00:00:00.000", + "requiredDate": "1997-12-17 00:00:00.000", + "shippedDate": "1997-11-26 00:00:00.000", + "shipVia": 1, + "freight": 117.33, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 8, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 35, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 9, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10748, + "customerID": "SAVEA", + "employeeID": 3, + "orderDate": "1997-11-20 00:00:00.000", + "requiredDate": "1997-12-18 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 1, + "freight": 232.55, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 44, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 40, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10749, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-11-20 00:00:00.000", + "requiredDate": "1997-12-18 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 61.53, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 15, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10750, + "customerID": "WARTH", + "employeeID": 9, + "orderDate": "1997-11-21 00:00:00.000", + "requiredDate": "1997-12-19 00:00:00.000", + "shippedDate": "1997-11-24 00:00:00.000", + "shipVia": 1, + "freight": 79.3, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 5, + "discount": 0.15 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10751, + "customerID": "RICSU", + "employeeID": 3, + "orderDate": "1997-11-24 00:00:00.000", + "requiredDate": "1997-12-22 00:00:00.000", + "shippedDate": "1997-12-03 00:00:00.000", + "shipVia": 3, + "freight": 130.79, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 30, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10752, + "customerID": "NORTS", + "employeeID": 2, + "orderDate": "1997-11-24 00:00:00.000", + "requiredDate": "1997-12-22 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 3, + "freight": 1.39, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 8, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10753, + "customerID": "FRANS", + "employeeID": 3, + "orderDate": "1997-11-25 00:00:00.000", + "requiredDate": "1997-12-23 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 1, + "freight": 7.7, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 4, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10745, + "customerID": "QUICK", + "employeeID": 9, + "orderDate": "1997-11-18 00:00:00.000", + "requiredDate": "1997-12-16 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 1, + "freight": 3.52, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 24, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 16, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 45, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10755, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-11-26 00:00:00.000", + "requiredDate": "1997-12-24 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 2, + "freight": 16.71, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 14, + "discount": 0.25 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 25, + "discount": 0.25 + } + ] + }, + { + "orderID": 10756, + "customerID": "SPLIR", + "employeeID": 8, + "orderDate": "1997-11-27 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-02 00:00:00.000", + "shipVia": 2, + "freight": 73.21, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10746, + "customerID": "CHOPS", + "employeeID": 1, + "orderDate": "1997-11-19 00:00:00.000", + "requiredDate": "1997-12-17 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 3, + "freight": 31.43, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 28, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 9, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10757, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-11-27 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 1, + "freight": 8.19, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 7, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10761, + "customerID": "RATTC", + "employeeID": 5, + "orderDate": "1997-12-02 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 2, + "freight": 18.66, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10762, + "customerID": "FOLKO", + "employeeID": 3, + "orderDate": "1997-12-02 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 1, + "freight": 328.74, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 28, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10763, + "customerID": "FOLIG", + "employeeID": 3, + "orderDate": "1997-12-03 00:00:00.000", + "requiredDate": "1997-12-31 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 3, + "freight": 37.35, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 6, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10764, + "customerID": "ERNSH", + "employeeID": 6, + "orderDate": "1997-12-03 00:00:00.000", + "requiredDate": "1997-12-31 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 3, + "freight": 145.45, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 130, + "discount": 0.1 + } + ] + }, + { + "orderID": 10766, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-12-05 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 1, + "freight": 157.55, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 40, + "discount": 0 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 35, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10760, + "customerID": "MAISD", + "employeeID": 4, + "orderDate": "1997-12-01 00:00:00.000", + "requiredDate": "1997-12-29 00:00:00.000", + "shippedDate": "1997-12-10 00:00:00.000", + "shipVia": 1, + "freight": 155.64, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10768, + "customerID": "AROUT", + "employeeID": 3, + "orderDate": "1997-12-08 00:00:00.000", + "requiredDate": "1998-01-05 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 2, + "freight": 146.32, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 4, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10759, + "customerID": "ANATR", + "employeeID": 3, + "orderDate": "1997-11-28 00:00:00.000", + "requiredDate": "1997-12-26 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 3, + "freight": 11.99, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10769, + "customerID": "VAFFE", + "employeeID": 3, + "orderDate": "1997-12-08 00:00:00.000", + "requiredDate": "1998-01-05 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 1, + "freight": 65.06, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10772, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-12-10 00:00:00.000", + "requiredDate": "1998-01-07 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 91.28, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10758, + "customerID": "RICSU", + "employeeID": 3, + "orderDate": "1997-11-28 00:00:00.000", + "requiredDate": "1997-12-26 00:00:00.000", + "shippedDate": "1997-12-04 00:00:00.000", + "shipVia": 3, + "freight": 138.17, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 40, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10773, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1997-12-11 00:00:00.000", + "requiredDate": "1998-01-08 00:00:00.000", + "shippedDate": "1997-12-16 00:00:00.000", + "shipVia": 3, + "freight": 96.43, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 33, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 70, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 7, + "discount": 0.2 + } + ] + }, + { + "orderID": 10775, + "customerID": "THECR", + "employeeID": 7, + "orderDate": "1997-12-12 00:00:00.000", + "requiredDate": "1998-01-09 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 20.25, + "shipName": "The Cracker Box", + "shipAddress": { + "street": "55 Grizzly Peak Rd.", + "city": "Butte", + "region": "MT", + "postalCode": 59801, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 6, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10774, + "customerID": "FOLKO", + "employeeID": 4, + "orderDate": "1997-12-11 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 1, + "freight": 48.2, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10779, + "customerID": "MORGK", + "employeeID": 3, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1998-01-13 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 2, + "freight": 58.13, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10780, + "customerID": "LILAS", + "employeeID": 2, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-25 00:00:00.000", + "shipVia": 1, + "freight": 42.13, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10781, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-12-17 00:00:00.000", + "requiredDate": "1998-01-14 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 3, + "freight": 73.16, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10783, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 124.98, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10784, + "customerID": "MAGAA", + "employeeID": 4, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-22 00:00:00.000", + "shipVia": 3, + "freight": 70.09, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 2, + "discount": 0.15 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10785, + "customerID": "GROSR", + "employeeID": 1, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-24 00:00:00.000", + "shipVia": 3, + "freight": 1.51, + "shipName": "GROSELLA-Restaurante", + "shipAddress": { + "street": "5ª Ave. Los Palos Grandes", + "city": "Caracas", + "region": "DF", + "postalCode": 1081, + "country": "Venezuela" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10786, + "customerID": "QUEEN", + "employeeID": 8, + "orderDate": "1997-12-19 00:00:00.000", + "requiredDate": "1998-01-16 00:00:00.000", + "shippedDate": "1997-12-23 00:00:00.000", + "shipVia": 1, + "freight": 110.87, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 42, + "discount": 0.2 + } + ] + }, + { + "orderID": 10776, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1997-12-15 00:00:00.000", + "requiredDate": "1998-01-12 00:00:00.000", + "shippedDate": "1997-12-18 00:00:00.000", + "shipVia": 3, + "freight": 351.53, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 27, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 120, + "discount": 0.05 + } + ] + }, + { + "orderID": 10787, + "customerID": "LAMAI", + "employeeID": 2, + "orderDate": "1997-12-19 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 249.93, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10791, + "customerID": "FRANK", + "employeeID": 6, + "orderDate": "1997-12-23 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1998-01-01 00:00:00.000", + "shipVia": 2, + "freight": 16.85, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10792, + "customerID": "WOLZA", + "employeeID": 1, + "orderDate": "1997-12-23 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 3, + "freight": 23.79, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10793, + "customerID": "AROUT", + "employeeID": 3, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-08 00:00:00.000", + "shipVia": 3, + "freight": 4.52, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10794, + "customerID": "QUEDE", + "employeeID": 6, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 1, + "freight": 21.49, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10790, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 28.23, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 3, + "discount": 0.15 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10796, + "customerID": "HILAA", + "employeeID": 3, + "orderDate": "1997-12-25 00:00:00.000", + "requiredDate": "1998-01-22 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 1, + "freight": 26.52, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 24, + "discount": 0.2 + } + ] + }, + { + "orderID": 10788, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 2, + "freight": 42.7, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10789, + "customerID": "FOLIG", + "employeeID": 1, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 2, + "freight": 100.6, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10800, + "customerID": "SEVES", + "employeeID": 1, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-01-23 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 3, + "freight": 137.44, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 7, + "discount": 0.1 + } + ] + }, + { + "orderID": 10801, + "customerID": "BOLID", + "employeeID": 4, + "orderDate": "1997-12-29 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 2, + "freight": 97.09, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10795, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-20 00:00:00.000", + "shipVia": 2, + "freight": 126.66, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 65, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10798, + "customerID": "ISLAT", + "employeeID": 2, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-01-23 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 1, + "freight": 2.33, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 2, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10799, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 3, + "freight": 30.76, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10805, + "customerID": "THEBI", + "employeeID": 2, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 3, + "freight": 237.34, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10802, + "customerID": "SIMOB", + "employeeID": 4, + "orderDate": "1997-12-29 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 2, + "freight": 257.26, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10803, + "customerID": "WELLI", + "employeeID": 4, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-06 00:00:00.000", + "shipVia": 1, + "freight": 55.23, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10808, + "customerID": "OLDWO", + "employeeID": 2, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 3, + "freight": 45.53, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0.15 + } + ] + }, + { + "orderID": 10810, + "customerID": "LAUGB", + "employeeID": 2, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 3, + "freight": 4.33, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 7, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10811, + "customerID": "LINOD", + "employeeID": 8, + "orderDate": "1998-01-02 00:00:00.000", + "requiredDate": "1998-01-30 00:00:00.000", + "shippedDate": "1998-01-08 00:00:00.000", + "shipVia": 1, + "freight": 31.22, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 18, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10804, + "customerID": "SEVES", + "employeeID": 6, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 2, + "freight": 27.33, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 36, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 24, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 4, + "discount": 0.15 + } + ] + }, + { + "orderID": 10814, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 3, + "freight": 130.94, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 8, + "discount": 0.15 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10812, + "customerID": "REGGC", + "employeeID": 5, + "orderDate": "1998-01-02 00:00:00.000", + "requiredDate": "1998-01-30 00:00:00.000", + "shippedDate": "1998-01-12 00:00:00.000", + "shipVia": 1, + "freight": 59.78, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 16, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10817, + "customerID": "KOENE", + "employeeID": 3, + "orderDate": "1998-01-06 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 306.07, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10806, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1997-12-31 00:00:00.000", + "requiredDate": "1998-01-28 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 2, + "freight": 22.11, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 2, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10816, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-01-06 00:00:00.000", + "requiredDate": "1998-02-03 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 2, + "freight": 719.78, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10813, + "customerID": "RICAR", + "employeeID": 1, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 1, + "freight": 47.38, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10818, + "customerID": "MAGAA", + "employeeID": 7, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-12 00:00:00.000", + "shipVia": 3, + "freight": 65.48, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 20, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10819, + "customerID": "CACTU", + "employeeID": 2, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-16 00:00:00.000", + "shipVia": 3, + "freight": 19.76, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 7, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10821, + "customerID": "SPLIR", + "employeeID": 1, + "orderDate": "1998-01-08 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-01-15 00:00:00.000", + "shipVia": 1, + "freight": 36.68, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10822, + "customerID": "TRAIH", + "employeeID": 6, + "orderDate": "1998-01-08 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-01-16 00:00:00.000", + "shipVia": 3, + "freight": 7, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10823, + "customerID": "LILAS", + "employeeID": 5, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 163.97, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10824, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 1.23, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 9, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10825, + "customerID": "DRACD", + "employeeID": 1, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 1, + "freight": 79.25, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 12, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10826, + "customerID": "BLONP", + "employeeID": 6, + "orderDate": "1998-01-12 00:00:00.000", + "requiredDate": "1998-02-09 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 1, + "freight": 7.09, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10827, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1998-01-12 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 2, + "freight": 63.54, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 15, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10828, + "customerID": "RANCH", + "employeeID": 9, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 1, + "freight": 90.85, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 5, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10829, + "customerID": "ISLAT", + "employeeID": 9, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-02-10 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 1, + "freight": 154.72, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 20, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10830, + "customerID": "TRADH", + "employeeID": 4, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 2, + "freight": 81.83, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 6, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 28, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10831, + "customerID": "SANTG", + "employeeID": 3, + "orderDate": "1998-01-14 00:00:00.000", + "requiredDate": "1998-02-11 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 2, + "freight": 72.19, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 8, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 9, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10832, + "customerID": "LAMAI", + "employeeID": 2, + "orderDate": "1998-01-14 00:00:00.000", + "requiredDate": "1998-02-11 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 2, + "freight": 43.26, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 16, + "discount": 0.2 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10833, + "customerID": "OTTIK", + "employeeID": 6, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 2, + "freight": 71.49, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 9, + "discount": 0.1 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 9, + "discount": 0.1 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10834, + "customerID": "TRADH", + "employeeID": 1, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 3, + "freight": 29.78, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10838, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 59.28, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 4, + "discount": 0.25 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 50, + "discount": 0.25 + } + ] + }, + { + "orderID": 10839, + "customerID": "TRADH", + "employeeID": 3, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-01-22 00:00:00.000", + "shipVia": 3, + "freight": 35.43, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10840, + "customerID": "LINOD", + "employeeID": 4, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-16 00:00:00.000", + "shipVia": 2, + "freight": 2.71, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10841, + "customerID": "SUPRD", + "employeeID": 5, + "orderDate": "1998-01-20 00:00:00.000", + "requiredDate": "1998-02-17 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 2, + "freight": 424.3, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 50, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10842, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1998-01-20 00:00:00.000", + "requiredDate": "1998-02-17 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 3, + "freight": 54.42, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 5, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10836, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1998-01-16 00:00:00.000", + "requiredDate": "1998-02-13 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 1, + "freight": 411.88, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 52, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 24, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 60, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10835, + "customerID": "ALFKI", + "employeeID": 1, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 3, + "freight": 69.53, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 2, + "discount": 0.2 + } + ] + }, + { + "orderID": 10837, + "customerID": "BERGS", + "employeeID": 9, + "orderDate": "1998-01-16 00:00:00.000", + "requiredDate": "1998-02-13 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 13.32, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 25, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10845, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 212.98, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 70, + "discount": 0.1 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 42, + "discount": 0.1 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 48, + "discount": 0 + } + ] + }, + { + "orderID": 10848, + "customerID": "CONSH", + "employeeID": 7, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-02-20 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 2, + "freight": 38.24, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 3, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10850, + "customerID": "VICTE", + "employeeID": 1, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 49.19, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 4, + "discount": 0.15 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10847, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1998-01-22 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 3, + "freight": 487.57, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 80, + "discount": 0.2 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 37, + "unitPrice": 26, + "quantity": 60, + "discount": 0.2 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 36, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 55, + "discount": 0.2 + } + ] + }, + { + "orderID": 10846, + "customerID": "SUPRD", + "employeeID": 2, + "orderDate": "1998-01-22 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 56.46, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 21, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10849, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-02-20 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 2, + "freight": 0.56, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 49, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10851, + "customerID": "RICAR", + "employeeID": 5, + "orderDate": "1998-01-26 00:00:00.000", + "requiredDate": "1998-02-23 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 1, + "freight": 160.55, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 42, + "discount": 0.05 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 5, + "discount": 0.05 + } + ] + }, + { + "orderID": 10852, + "customerID": "RATTC", + "employeeID": 8, + "orderDate": "1998-01-26 00:00:00.000", + "requiredDate": "1998-02-09 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 174.05, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 6, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10854, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-05 00:00:00.000", + "shipVia": 2, + "freight": 100.22, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 100, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 65, + "discount": 0.15 + } + ] + }, + { + "orderID": 10855, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 1, + "freight": 170.97, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 24, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10856, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1998-01-28 00:00:00.000", + "requiredDate": "1998-02-25 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 2, + "freight": 58.43, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10857, + "customerID": "BERGS", + "employeeID": 8, + "orderDate": "1998-01-28 00:00:00.000", + "requiredDate": "1998-02-25 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 2, + "freight": 188.85, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0.25 + } + ] + }, + { + "orderID": 10858, + "customerID": "LACOR", + "employeeID": 2, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-03 00:00:00.000", + "shipVia": 1, + "freight": 52.51, + "shipName": "La corne d'abondance", + "shipAddress": { + "street": "67 avenue de l'Europe", + "city": "Versailles", + "region": "NULL", + "postalCode": 78000, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 5, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10859, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 2, + "freight": 76.1, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10860, + "customerID": "FRANR", + "employeeID": 3, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 3, + "freight": 19.26, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10861, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1998-01-30 00:00:00.000", + "requiredDate": "1998-02-27 00:00:00.000", + "shippedDate": "1998-02-17 00:00:00.000", + "shipVia": 2, + "freight": 14.93, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 42, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10862, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1998-01-30 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 2, + "freight": 53.23, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 25, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10863, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-17 00:00:00.000", + "shipVia": 2, + "freight": 30.26, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10864, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 2, + "freight": 3.04, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 4, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10865, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 348.14, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 80, + "discount": 0.05 + } + ] + }, + { + "orderID": 10869, + "customerID": "SEVES", + "employeeID": 5, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 1, + "freight": 143.28, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 40, + "discount": 0 + }, + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 50, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10870, + "customerID": "WOLZA", + "employeeID": 5, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-13 00:00:00.000", + "shipVia": 3, + "freight": 12.04, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10871, + "customerID": "BONAP", + "employeeID": 9, + "orderDate": "1998-02-05 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 2, + "freight": 112.27, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 16, + "discount": 0.05 + } + ] + }, + { + "orderID": 10872, + "customerID": "GODOS", + "employeeID": 5, + "orderDate": "1998-02-05 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 2, + "freight": 175.32, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10873, + "customerID": "WILMK", + "employeeID": 4, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 1, + "freight": 0.82, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10866, + "customerID": "BERGS", + "employeeID": 5, + "orderDate": "1998-02-03 00:00:00.000", + "requiredDate": "1998-03-03 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 109.11, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 6, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10876, + "customerID": "BONAP", + "employeeID": 7, + "orderDate": "1998-02-09 00:00:00.000", + "requiredDate": "1998-03-09 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 3, + "freight": 60.42, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10877, + "customerID": "RICAR", + "employeeID": 1, + "orderDate": "1998-02-09 00:00:00.000", + "requiredDate": "1998-03-09 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 1, + "freight": 38.06, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10868, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 2, + "freight": 191.27, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 20, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 42, + "discount": 0.1 + } + ] + }, + { + "orderID": 10875, + "customerID": "BERGS", + "employeeID": 4, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 2, + "freight": 32.37, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 25, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 15, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 21, + "discount": 0.1 + } + ] + }, + { + "orderID": 10882, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1998-02-11 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 3, + "freight": 23.1, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 25, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 32, + "discount": 0.15 + } + ] + }, + { + "orderID": 10884, + "customerID": "LETSS", + "employeeID": 4, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-13 00:00:00.000", + "shipVia": 2, + "freight": 90.97, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 21, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10885, + "customerID": "SUPRD", + "employeeID": 6, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 3, + "freight": 5.64, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 12, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10886, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1998-02-13 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 1, + "freight": 4.99, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 40, + "discount": 0 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10880, + "customerID": "FOLKO", + "employeeID": 7, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 88.01, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10879, + "customerID": "WILMK", + "employeeID": 3, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-10 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 3, + "freight": 8.5, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10889, + "customerID": "RATTC", + "employeeID": 9, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 3, + "freight": 280.61, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10890, + "customerID": "DUMON", + "employeeID": 7, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 32.76, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 15, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10893, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 2, + "freight": 77.78, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 30, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 24, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 35, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10894, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 1, + "freight": 116.13, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 28, + "discount": 0.05 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 120, + "discount": 0.05 + } + ] + }, + { + "orderID": 10888, + "customerID": "GODOS", + "employeeID": 1, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 2, + "freight": 51.87, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10898, + "customerID": "OCEAN", + "employeeID": 4, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 1.27, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10899, + "customerID": "LILAS", + "employeeID": 5, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-02-26 00:00:00.000", + "shipVia": 3, + "freight": 1.21, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 8, + "discount": 0.15 + } + ] + }, + { + "orderID": 10901, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1998-02-23 00:00:00.000", + "requiredDate": "1998-03-23 00:00:00.000", + "shippedDate": "1998-02-26 00:00:00.000", + "shipVia": 1, + "freight": 62.09, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 30, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10902, + "customerID": "FOLKO", + "employeeID": 1, + "orderDate": "1998-02-23 00:00:00.000", + "requiredDate": "1998-03-23 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 1, + "freight": 44.15, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 6, + "discount": 0.15 + } + ] + }, + { + "orderID": 10903, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 3, + "freight": 36.71, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 40, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10896, + "customerID": "MAISD", + "employeeID": 7, + "orderDate": "1998-02-19 00:00:00.000", + "requiredDate": "1998-03-19 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 32.45, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10904, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 162.95, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 15, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10895, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 1, + "freight": 162.75, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 91, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 100, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 110, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 45, + "discount": 0 + } + ] + }, + { + "orderID": 10897, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1998-02-19 00:00:00.000", + "requiredDate": "1998-03-19 00:00:00.000", + "shippedDate": "1998-02-25 00:00:00.000", + "shipVia": 2, + "freight": 603.54, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 80, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10909, + "customerID": "SANTG", + "employeeID": 1, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-10 00:00:00.000", + "shipVia": 2, + "freight": 53.05, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 12, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 15, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10910, + "customerID": "WILMK", + "employeeID": 1, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 3, + "freight": 38.11, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 10, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10911, + "customerID": "GODOS", + "employeeID": 3, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-05 00:00:00.000", + "shipVia": 1, + "freight": 38.19, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 12, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10912, + "customerID": "HUNGO", + "employeeID": 2, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 2, + "freight": 580.91, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 60, + "discount": 0.25 + } + ] + }, + { + "orderID": 10913, + "customerID": "QUEEN", + "employeeID": 4, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 1, + "freight": 33.05, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10917, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 2, + "freight": 8.29, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 1, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10916, + "customerID": "RANCH", + "employeeID": 1, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 2, + "freight": 63.77, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 6, + "discount": 0 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10918, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 3, + "freight": 48.83, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 25, + "discount": 0.25 + } + ] + }, + { + "orderID": 10919, + "customerID": "LINOD", + "employeeID": 2, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 2, + "freight": 19.8, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 24, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 24, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10908, + "customerID": "REGGC", + "employeeID": 4, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 32.96, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10921, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 1, + "freight": 176.48, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10915, + "customerID": "TORTU", + "employeeID": 2, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 2, + "freight": 3.51, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 10, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10925, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 1, + "freight": 2.27, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 25, + "discount": 0.15 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10926, + "customerID": "ANATR", + "employeeID": 4, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 3, + "freight": 39.92, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 2, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10927, + "customerID": "LACOR", + "employeeID": 4, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-04-08 00:00:00.000", + "shipVia": 1, + "freight": 19.79, + "shipName": "La corne d'abondance", + "shipAddress": { + "street": "67 avenue de l'Europe", + "city": "Versailles", + "region": "NULL", + "postalCode": 78000, + "country": "France" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 5, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 5, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10928, + "customerID": "GALED", + "employeeID": 1, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 1, + "freight": 1.36, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 5, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10929, + "customerID": "FRANK", + "employeeID": 6, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-03-12 00:00:00.000", + "shipVia": 1, + "freight": 33.93, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 49, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10930, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-17 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 15.55, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 25, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10931, + "customerID": "RICSU", + "employeeID": 4, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-19 00:00:00.000", + "shipVia": 2, + "freight": 13.6, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 42, + "discount": 0.15 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10932, + "customerID": "BONAP", + "employeeID": 8, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-03 00:00:00.000", + "shippedDate": "1998-03-24 00:00:00.000", + "shipVia": 1, + "freight": 134.64, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 14, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10933, + "customerID": "ISLAT", + "employeeID": 6, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-03 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 3, + "freight": 54.15, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 2, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10935, + "customerID": "WELLI", + "employeeID": 4, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 47.59, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 4, + "discount": 0.25 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 8, + "discount": 0.25 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10937, + "customerID": "CACTU", + "employeeID": 7, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 31.51, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 8, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10938, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 2, + "freight": 31.89, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 24, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 49, + "discount": 0.25 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10939, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 2, + "freight": 76.33, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 40, + "discount": 0.15 + } + ] + }, + { + "orderID": 10940, + "customerID": "BONAP", + "employeeID": 8, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 3, + "freight": 19.77, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 8, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10941, + "customerID": "SAVEA", + "employeeID": 7, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-20 00:00:00.000", + "shipVia": 2, + "freight": 400.81, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 44, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 80, + "discount": 0.25 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10922, + "customerID": "HANAR", + "employeeID": 5, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-03-31 00:00:00.000", + "shippedDate": "1998-03-05 00:00:00.000", + "shipVia": 3, + "freight": 62.74, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 15, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10923, + "customerID": "LAMAI", + "employeeID": 7, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 68.26, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10924, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-04-08 00:00:00.000", + "shipVia": 2, + "freight": 151.52, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10943, + "customerID": "BSBEV", + "employeeID": 4, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-19 00:00:00.000", + "shipVia": 2, + "freight": 2.17, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 21, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10944, + "customerID": "BOTTM", + "employeeID": 6, + "orderDate": "1998-03-12 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 52.92, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 5, + "discount": 0.25 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 18, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 18, + "discount": 0.25 + } + ] + }, + { + "orderID": 10945, + "customerID": "MORGK", + "employeeID": 4, + "orderDate": "1998-03-12 00:00:00.000", + "requiredDate": "1998-04-09 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 1, + "freight": 10.22, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + } + ] + } +] diff --git a/vue-options-api-demos/grid/common/northwind/products.json b/vue-options-api-demos/grid/common/northwind/products.json new file mode 100644 index 00000000..36b06995 --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/products.json @@ -0,0 +1,927 @@ + +[ + { + "productID" : 4, + "supplierID" : 2, + "categoryID" : 2, + "quantityPerUnit" : "48 - 6 oz jars", + "unitPrice" : 22, + "unitsInStock" : 53, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Chef Anton's Cajun Seasoning" + }, + { + "productID" : 5, + "supplierID" : 2, + "categoryID" : 2, + "quantityPerUnit" : "36 boxes", + "unitPrice" : 21.35, + "unitsInStock" : 0, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Chef Anton's Gumbo Mix" + }, + { + "productID" : 6, + "supplierID" : 3, + "categoryID" : 2, + "quantityPerUnit" : "12 - 8 oz jars", + "unitPrice" : 25, + "unitsInStock" : 120, + "unitsOnOrder" : 0, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Grandma's Boysenberry Spread" + }, + { + "productID" : 7, + "supplierID" : 3, + "categoryID" : 7, + "quantityPerUnit" : "12 - 1 lb pkgs.", + "unitPrice" : 30, + "unitsInStock" : 15, + "unitsOnOrder" : 0, + "reorderLevel" : 10, + "discontinued" : false, + "name" : "Uncle Bob's Organic Dried Pears" + }, + { + "productID" : 8, + "supplierID" : 3, + "categoryID" : 2, + "quantityPerUnit" : "12 - 12 oz jars", + "unitPrice" : 40, + "unitsInStock" : 6, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Northwoods Cranberry Sauce" + }, + { + "productID" : 9, + "supplierID" : 4, + "categoryID" : 6, + "quantityPerUnit" : "18 - 500 g pkgs.", + "unitPrice" : 97, + "unitsInStock" : 29, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Mishi Kobe Niku" + }, + { + "productID" : 10, + "supplierID" : 4, + "categoryID" : 8, + "quantityPerUnit" : "12 - 200 ml jars", + "unitPrice" : 31, + "unitsInStock" : 31, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Ikura" + }, + { + "productID" : 2, + "supplierID" : 1, + "categoryID" : 1, + "quantityPerUnit" : "24 - 12 oz bottles", + "unitPrice" : 19, + "unitsInStock" : 17, + "unitsOnOrder" : 40, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Chang" + }, + { + "productID" : 3, + "supplierID" : 1, + "categoryID" : 2, + "quantityPerUnit" : "12 - 550 ml bottles", + "unitPrice" : 10, + "unitsInStock" : 13, + "unitsOnOrder" : 70, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Aniseed Syrup" + }, + { + "productID" : 11, + "supplierID" : 5, + "categoryID" : 4, + "quantityPerUnit" : "1 kg pkg.", + "unitPrice" : 21, + "unitsInStock" : 22, + "unitsOnOrder" : 30, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "Queso Cabrales" + }, + { + "productID" : 12, + "supplierID" : 5, + "categoryID" : 4, + "quantityPerUnit" : "10 - 500 g pkgs.", + "unitPrice" : 38, + "unitsInStock" : 86, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Queso Manchego La Pastora" + }, + { + "productID" : 13, + "supplierID" : 6, + "categoryID" : 8, + "quantityPerUnit" : "2 kg box", + "unitPrice" : 6, + "unitsInStock" : 24, + "unitsOnOrder" : 0, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Konbu" + }, + { + "productID" : 14, + "supplierID" : 6, + "categoryID" : 7, + "quantityPerUnit" : "40 - 100 g pkgs.", + "unitPrice" : 23.25, + "unitsInStock" : 35, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Tofu" + }, + { + "productID" : 15, + "supplierID" : 6, + "categoryID" : 2, + "quantityPerUnit" : "24 - 250 ml bottles", + "unitPrice" : 15.5, + "unitsInStock" : 39, + "unitsOnOrder" : 0, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Genen Shouyu" + }, + { + "productID" : 1, + "supplierID" : 1, + "categoryID" : 1, + "quantityPerUnit" : "10 boxes x 20 bags", + "unitPrice" : 18, + "unitsInStock" : 39, + "unitsOnOrder" : 0, + "reorderLevel" : 10, + "discontinued" : false, + "name" : "Chai" + }, + { + "productID" : 16, + "supplierID" : 7, + "categoryID" : 3, + "quantityPerUnit" : "32 - 500 g boxes", + "unitPrice" : 17.45, + "unitsInStock" : 29, + "unitsOnOrder" : 0, + "reorderLevel" : 10, + "discontinued" : false, + "name" : "Pavlova" + }, + { + "productID" : 17, + "supplierID" : 7, + "categoryID" : 6, + "quantityPerUnit" : "20 - 1 kg tins", + "unitPrice" : 39, + "unitsInStock" : 0, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Alice Mutton" + }, + { + "productID" : 18, + "supplierID" : 7, + "categoryID" : 8, + "quantityPerUnit" : "16 kg pkg.", + "unitPrice" : 62.5, + "unitsInStock" : 42, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Carnarvon Tigers" + }, + { + "productID" : 19, + "supplierID" : 8, + "categoryID" : 3, + "quantityPerUnit" : "10 boxes x 12 pieces", + "unitPrice" : 9.2, + "unitsInStock" : 25, + "unitsOnOrder" : 0, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Teatime Chocolate Biscuits" + }, + { + "productID" : 20, + "supplierID" : 8, + "categoryID" : 3, + "quantityPerUnit" : "30 gift boxes", + "unitPrice" : 81, + "unitsInStock" : 40, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Sir Rodney's Marmalade" + }, + { + "productID" : 24, + "supplierID" : 10, + "categoryID" : 1, + "quantityPerUnit" : "12 - 355 ml cans", + "unitPrice" : 4.5, + "unitsInStock" : 20, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Guaraná Fantástica" + }, + { + "productID" : 25, + "supplierID" : 11, + "categoryID" : 3, + "quantityPerUnit" : "20 - 450 g glasses", + "unitPrice" : 14, + "unitsInStock" : 76, + "unitsOnOrder" : 0, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "NuNuCa Nuß-Nougat-Creme" + }, + { + "productID" : 26, + "supplierID" : 11, + "categoryID" : 3, + "quantityPerUnit" : "100 - 250 g bags", + "unitPrice" : 31.23, + "unitsInStock" : 15, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Gumbär Gummibärchen" + }, + { + "productID" : 27, + "supplierID" : 11, + "categoryID" : 3, + "quantityPerUnit" : "100 - 100 g pieces", + "unitPrice" : 43.9, + "unitsInStock" : 49, + "unitsOnOrder" : 0, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "Schoggi Schokolade" + }, + { + "productID" : 28, + "supplierID" : 12, + "categoryID" : 7, + "quantityPerUnit" : "25 - 825 g cans", + "unitPrice" : 45.6, + "unitsInStock" : 26, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Rössle Sauerkraut" + }, + { + "productID" : 29, + "supplierID" : 12, + "categoryID" : 6, + "quantityPerUnit" : "50 bags x 30 sausgs.", + "unitPrice" : 123.79, + "unitsInStock" : 0, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Thüringer Rostbratwurst" + }, + { + "productID" : 30, + "supplierID" : 13, + "categoryID" : 8, + "quantityPerUnit" : "10 - 200 g glasses", + "unitPrice" : 25.89, + "unitsInStock" : 10, + "unitsOnOrder" : 0, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Nord-Ost Matjeshering" + }, + { + "productID" : 31, + "supplierID" : 14, + "categoryID" : 4, + "quantityPerUnit" : "12 - 100 g pkgs", + "unitPrice" : 12.5, + "unitsInStock" : 0, + "unitsOnOrder" : 70, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Gorgonzola Telino" + }, + { + "productID" : 32, + "supplierID" : 14, + "categoryID" : 4, + "quantityPerUnit" : "24 - 200 g pkgs.", + "unitPrice" : 32, + "unitsInStock" : 9, + "unitsOnOrder" : 40, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Mascarpone Fabioli" + }, + { + "productID" : 33, + "supplierID" : 15, + "categoryID" : 4, + "quantityPerUnit" : "500 g", + "unitPrice" : 2.5, + "unitsInStock" : 112, + "unitsOnOrder" : 0, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Geitost" + }, + { + "productID" : 34, + "supplierID" : 16, + "categoryID" : 1, + "quantityPerUnit" : "24 - 12 oz bottles", + "unitPrice" : 14, + "unitsInStock" : 111, + "unitsOnOrder" : 0, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Sasquatch Ale" + }, + { + "productID" : 22, + "supplierID" : 9, + "categoryID" : 5, + "quantityPerUnit" : "24 - 500 g pkgs.", + "unitPrice" : 21, + "unitsInStock" : 104, + "unitsOnOrder" : 0, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Gustaf's Knäckebröd" + }, + { + "productID" : 21, + "supplierID" : 8, + "categoryID" : 3, + "quantityPerUnit" : "24 pkgs. x 4 pieces", + "unitPrice" : 10, + "unitsInStock" : 3, + "unitsOnOrder" : 40, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Sir Rodney's Scones" + }, + { + "productID" : 35, + "supplierID" : 16, + "categoryID" : 1, + "quantityPerUnit" : "24 - 12 oz bottles", + "unitPrice" : 18, + "unitsInStock" : 20, + "unitsOnOrder" : 0, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Steeleye Stout" + }, + { + "productID" : 23, + "supplierID" : 9, + "categoryID" : 5, + "quantityPerUnit" : "12 - 250 g pkgs.", + "unitPrice" : 9, + "unitsInStock" : 61, + "unitsOnOrder" : 0, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Tunnbröd" + }, + { + "productID" : 37, + "supplierID" : 17, + "categoryID" : 8, + "quantityPerUnit" : "12 - 500 g pkgs.", + "unitPrice" : 26, + "unitsInStock" : 11, + "unitsOnOrder" : 50, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Gravad lax" + }, + { + "productID" : 40, + "supplierID" : 19, + "categoryID" : 8, + "quantityPerUnit" : "24 - 4 oz tins", + "unitPrice" : 18.4, + "unitsInStock" : 123, + "unitsOnOrder" : 0, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "Boston Crab Meat" + }, + { + "productID" : 38, + "supplierID" : 18, + "categoryID" : 1, + "quantityPerUnit" : "12 - 75 cl bottles", + "unitPrice" : 263.5, + "unitsInStock" : 17, + "unitsOnOrder" : 0, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Côte de Blaye" + }, + { + "productID" : 36, + "supplierID" : 17, + "categoryID" : 8, + "quantityPerUnit" : "24 - 250 g jars", + "unitPrice" : 19, + "unitsInStock" : 112, + "unitsOnOrder" : 0, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Inlagd Sill" + }, + { + "productID" : 41, + "supplierID" : 19, + "categoryID" : 8, + "quantityPerUnit" : "12 - 12 oz cans", + "unitPrice" : 9.65, + "unitsInStock" : 85, + "unitsOnOrder" : 0, + "reorderLevel" : 10, + "discontinued" : false, + "name" : "Jack's New England Clam Chowder" + }, + { + "productID" : 43, + "supplierID" : 20, + "categoryID" : 1, + "quantityPerUnit" : "16 - 500 g tins", + "unitPrice" : 46, + "unitsInStock" : 17, + "unitsOnOrder" : 10, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Ipoh Coffee" + }, + { + "productID" : 42, + "supplierID" : 20, + "categoryID" : 5, + "quantityPerUnit" : "32 - 1 kg pkgs.", + "unitPrice" : 14, + "unitsInStock" : 26, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Singaporean Hokkien Fried Mee" + }, + { + "productID" : 46, + "supplierID" : 21, + "categoryID" : 8, + "quantityPerUnit" : "4 - 450 g glasses", + "unitPrice" : 12, + "unitsInStock" : 95, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Spegesild" + }, + { + "productID" : 47, + "supplierID" : 22, + "categoryID" : 3, + "quantityPerUnit" : "10 - 4 oz boxes", + "unitPrice" : 9.5, + "unitsInStock" : 36, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Zaanse koeken" + }, + { + "productID" : 48, + "supplierID" : 22, + "categoryID" : 3, + "quantityPerUnit" : "10 pkgs.", + "unitPrice" : 12.75, + "unitsInStock" : 15, + "unitsOnOrder" : 70, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Chocolade" + }, + { + "productID" : 49, + "supplierID" : 23, + "categoryID" : 3, + "quantityPerUnit" : "24 - 50 g pkgs.", + "unitPrice" : 20, + "unitsInStock" : 10, + "unitsOnOrder" : 60, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Maxilaku" + }, + { + "productID" : 50, + "supplierID" : 23, + "categoryID" : 3, + "quantityPerUnit" : "12 - 100 g bars", + "unitPrice" : 16.25, + "unitsInStock" : 65, + "unitsOnOrder" : 0, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "Valkoinen suklaa" + }, + { + "productID" : 51, + "supplierID" : 24, + "categoryID" : 7, + "quantityPerUnit" : "50 - 300 g pkgs.", + "unitPrice" : 53, + "unitsInStock" : 20, + "unitsOnOrder" : 0, + "reorderLevel" : 10, + "discontinued" : false, + "name" : "Manjimup Dried Apples" + }, + { + "productID" : 52, + "supplierID" : 24, + "categoryID" : 5, + "quantityPerUnit" : "16 - 2 kg boxes", + "unitPrice" : 7, + "unitsInStock" : 38, + "unitsOnOrder" : 0, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Filo Mix" + }, + { + "productID" : 53, + "supplierID" : 24, + "categoryID" : 6, + "quantityPerUnit" : "48 pieces", + "unitPrice" : 32.8, + "unitsInStock" : 0, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : true, + "name" : "Perth Pasties" + }, + { + "productID" : 54, + "supplierID" : 25, + "categoryID" : 6, + "quantityPerUnit" : "16 pies", + "unitPrice" : 7.45, + "unitsInStock" : 21, + "unitsOnOrder" : 0, + "reorderLevel" : 10, + "discontinued" : false, + "name" : "Tourtière" + }, + { + "productID" : 55, + "supplierID" : 25, + "categoryID" : 6, + "quantityPerUnit" : "24 boxes x 2 pies", + "unitPrice" : 24, + "unitsInStock" : 115, + "unitsOnOrder" : 0, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Pâté chinois" + }, + { + "productID" : 56, + "supplierID" : 26, + "categoryID" : 5, + "quantityPerUnit" : "24 - 250 g pkgs.", + "unitPrice" : 38, + "unitsInStock" : 21, + "unitsOnOrder" : 10, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "Gnocchi di nonna Alice" + }, + { + "productID" : 57, + "supplierID" : 26, + "categoryID" : 5, + "quantityPerUnit" : "24 - 250 g pkgs.", + "unitPrice" : 19.5, + "unitsInStock" : 36, + "unitsOnOrder" : 0, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Ravioli Angelo" + }, + { + "productID" : 44, + "supplierID" : 20, + "categoryID" : 2, + "quantityPerUnit" : "20 - 2 kg bags", + "unitPrice" : 19.45, + "unitsInStock" : 27, + "unitsOnOrder" : 0, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Gula Malacca" + }, + { + "productID" : 39, + "supplierID" : 18, + "categoryID" : 1, + "quantityPerUnit" : "750 cc per bottle", + "unitPrice" : 18, + "unitsInStock" : 69, + "unitsOnOrder" : 0, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Chartreuse verte" + }, + { + "productID" : 59, + "supplierID" : 28, + "categoryID" : 4, + "quantityPerUnit" : "5 kg pkg.", + "unitPrice" : 55, + "unitsInStock" : 79, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Raclette Courdavault" + }, + { + "productID" : 60, + "supplierID" : 28, + "categoryID" : 4, + "quantityPerUnit" : "15 - 300 g rounds", + "unitPrice" : 34, + "unitsInStock" : 19, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Camembert Pierrot" + }, + { + "productID" : 45, + "supplierID" : 21, + "categoryID" : 8, + "quantityPerUnit" : "1k pkg.", + "unitPrice" : 9.5, + "unitsInStock" : 5, + "unitsOnOrder" : 70, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Rogede sild" + }, + { + "productID" : 58, + "supplierID" : 27, + "categoryID" : 8, + "quantityPerUnit" : "24 pieces", + "unitPrice" : 13.25, + "unitsInStock" : 62, + "unitsOnOrder" : 0, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Escargots de Bourgogne" + }, + { + "productID" : 61, + "supplierID" : 29, + "categoryID" : 2, + "quantityPerUnit" : "24 - 500 ml bottles", + "unitPrice" : 28.5, + "unitsInStock" : 113, + "unitsOnOrder" : 0, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Sirop d'érable" + }, + { + "productID" : 62, + "supplierID" : 29, + "categoryID" : 3, + "quantityPerUnit" : "48 pies", + "unitPrice" : 49.3, + "unitsInStock" : 17, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Tarte au sucre" + }, + { + "productID" : 63, + "supplierID" : 7, + "categoryID" : 2, + "quantityPerUnit" : "15 - 625 g jars", + "unitPrice" : 43.9, + "unitsInStock" : 24, + "unitsOnOrder" : 0, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Vegie-spread" + }, + { + "productID" : 64, + "supplierID" : 12, + "categoryID" : 5, + "quantityPerUnit" : "20 bags x 4 pieces", + "unitPrice" : 33.25, + "unitsInStock" : 22, + "unitsOnOrder" : 80, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "Wimmers gute Semmelknödel" + }, + { + "productID" : 65, + "supplierID" : 2, + "categoryID" : 2, + "quantityPerUnit" : "32 - 8 oz bottles", + "unitPrice" : 21.05, + "unitsInStock" : 76, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Louisiana Fiery Hot Pepper Sauce" + }, + { + "productID" : 66, + "supplierID" : 2, + "categoryID" : 2, + "quantityPerUnit" : "24 - 8 oz jars", + "unitPrice" : 17, + "unitsInStock" : 4, + "unitsOnOrder" : 100, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Louisiana Hot Spiced Okra" + }, + { + "productID" : 67, + "supplierID" : 16, + "categoryID" : 1, + "quantityPerUnit" : "24 - 12 oz bottles", + "unitPrice" : 14, + "unitsInStock" : 52, + "unitsOnOrder" : 0, + "reorderLevel" : 10, + "discontinued" : false, + "name" : "Laughing Lumberjack Lager" + }, + { + "productID" : 68, + "supplierID" : 8, + "categoryID" : 3, + "quantityPerUnit" : "10 boxes x 8 pieces", + "unitPrice" : 12.5, + "unitsInStock" : 6, + "unitsOnOrder" : 10, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Scottish Longbreads" + }, + { + "productID" : 70, + "supplierID" : 7, + "categoryID" : 1, + "quantityPerUnit" : "24 - 355 ml bottles", + "unitPrice" : 15, + "unitsInStock" : 15, + "unitsOnOrder" : 10, + "reorderLevel" : 30, + "discontinued" : false, + "name" : "Outback Lager" + }, + { + "productID" : 71, + "supplierID" : 15, + "categoryID" : 4, + "quantityPerUnit" : "10 - 500 g pkgs.", + "unitPrice" : 21.5, + "unitsInStock" : 26, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Flotemysost" + }, + { + "productID" : 73, + "supplierID" : 17, + "categoryID" : 8, + "quantityPerUnit" : "24 - 150 g jars", + "unitPrice" : 15, + "unitsInStock" : 101, + "unitsOnOrder" : 0, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Röd Kaviar" + }, + { + "productID" : 74, + "supplierID" : 4, + "categoryID" : 7, + "quantityPerUnit" : "5 kg pkg.", + "unitPrice" : 10, + "unitsInStock" : 4, + "unitsOnOrder" : 20, + "reorderLevel" : 5, + "discontinued" : false, + "name" : "Longlife Tofu" + }, + { + "productID" : 75, + "supplierID" : 12, + "categoryID" : 1, + "quantityPerUnit" : "24 - 0.5 l bottles", + "unitPrice" : 7.75, + "unitsInStock" : 125, + "unitsOnOrder" : 0, + "reorderLevel" : 25, + "discontinued" : false, + "name" : "Rhönbräu Klosterbier" + }, + { + "productID" : 76, + "supplierID" : 23, + "categoryID" : 1, + "quantityPerUnit" : "500 ml", + "unitPrice" : 18, + "unitsInStock" : 57, + "unitsOnOrder" : 0, + "reorderLevel" : 20, + "discontinued" : false, + "name" : "Lakkalikööri" + }, + { + "productID" : 69, + "supplierID" : 15, + "categoryID" : 4, + "quantityPerUnit" : "10 kg pkg.", + "unitPrice" : 36, + "unitsInStock" : 26, + "unitsOnOrder" : 0, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Gudbrandsdalsost" + }, + { + "productID" : 72, + "supplierID" : 14, + "categoryID" : 4, + "quantityPerUnit" : "24 - 200 g pkgs.", + "unitPrice" : 34.8, + "unitsInStock" : 14, + "unitsOnOrder" : 0, + "reorderLevel" : 0, + "discontinued" : false, + "name" : "Mozzarella di Giovanni" + }, + { + "productID" : 77, + "supplierID" : 12, + "categoryID" : 2, + "quantityPerUnit" : "12 boxes", + "unitPrice" : 13, + "unitsInStock" : 32, + "unitsOnOrder" : 0, + "reorderLevel" : 15, + "discontinued" : false, + "name" : "Original Frankfurter grüne Soße" + } +] diff --git a/vue-options-api-demos/grid/common/northwind/regions.json b/vue-options-api-demos/grid/common/northwind/regions.json new file mode 100644 index 00000000..debca3d1 --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/regions.json @@ -0,0 +1,239 @@ + +[ + { + "regionID" : 1, + "name" : "Eastern", + "territories" : [ + { + "territoryID" : 1833, + "name" : "Georgetow" + }, + { + "territoryID" : 1581, + "name" : "Westboro" + }, + { + "territoryID" : 2116, + "name" : "Boston" + }, + { + "territoryID" : 2139, + "name" : "Cambridge" + }, + { + "territoryID" : 1730, + "name" : "Bedford" + }, + { + "territoryID" : 2903, + "name" : "Providence" + }, + { + "territoryID" : 6897, + "name" : "Wilton" + }, + { + "territoryID" : 7960, + "name" : "Morristown" + }, + { + "territoryID" : 8837, + "name" : "Edison" + }, + { + "territoryID" : 10019, + "name" : "NewYork" + }, + { + "territoryID" : 10038, + "name" : "NewYork" + }, + { + "territoryID" : 11747, + "name" : "Mellvile" + }, + { + "territoryID" : 14450, + "name" : "Fairport" + }, + { + "territoryID" : 19713, + "name" : "Neward" + }, + { + "territoryID" : 2184, + "name" : "Braintree" + }, + { + "territoryID" : 20852, + "name" : "Rockville" + }, + { + "territoryID" : 27403, + "name" : "Greensboro" + }, + { + "territoryID" : 27511, + "name" : "Cary" + }, + { + "territoryID" : 40222, + "name" : "Louisville" + } + ] + }, + { + "regionID" : 2, + "name" : "Western", + "territories" : [ + { + "territoryID" : 60601, + "name" : "Chicago" + }, + { + "territoryID" : 80202, + "name" : "Denver" + }, + { + "territoryID" : 60179, + "name" : "HoffmanEstates" + }, + { + "territoryID" : 85014, + "name" : "Phoenix" + }, + { + "territoryID" : 80909, + "name" : "ColoradoSprings" + }, + { + "territoryID" : 85251, + "name" : "Scottsdale" + }, + { + "territoryID" : 90405, + "name" : "SantaMonica" + }, + { + "territoryID" : 94025, + "name" : "MenloPark" + }, + { + "territoryID" : 94105, + "name" : "SanFrancisco" + }, + { + "territoryID" : 98004, + "name" : "Bellevue" + }, + { + "territoryID" : 98052, + "name" : "Redmond" + }, + { + "territoryID" : 98104, + "name" : "Seattle" + }, + { + "territoryID" : 95008, + "name" : "Campbell" + }, + { + "territoryID" : 95054, + "name" : "SantaClara" + }, + { + "territoryID" : 95060, + "name" : "SantaCruz" + } + ] + }, + { + "regionID" : 4, + "name" : "Southern", + "territories" : [ + { + "territoryID" : 29202, + "name" : "Columbia" + }, + { + "territoryID" : 30346, + "name" : "Atlanta" + }, + { + "territoryID" : 32859, + "name" : "Orlando" + }, + { + "territoryID" : 31406, + "name" : "Savannah" + }, + { + "territoryID" : 72716, + "name" : "Bentonville" + }, + { + "territoryID" : 75234, + "name" : "Dallas" + }, + { + "territoryID" : 78759, + "name" : "Austin" + }, + { + "territoryID" : 33607, + "name" : "Tampa" + } + ] + }, + { + "regionID" : 3, + "name" : "Northern", + "territories" : [ + { + "territoryID" : 19428, + "name" : "Philadelphia" + }, + { + "territoryID" : 3801, + "name" : "Portsmouth" + }, + { + "territoryID" : 3049, + "name" : "Hollis" + }, + { + "territoryID" : 44122, + "name" : "Beachwood" + }, + { + "territoryID" : 45839, + "name" : "Findlay" + }, + { + "territoryID" : 48075, + "name" : "Southfield" + }, + { + "territoryID" : 48084, + "name" : "Troy" + }, + { + "territoryID" : 48304, + "name" : "BloomfieldHills" + }, + { + "territoryID" : 53404, + "name" : "Racine" + }, + { + "territoryID" : 55113, + "name" : "Roseville" + }, + { + "territoryID" : 55439, + "name" : "Minneapolis" + } + ] + } +] diff --git a/vue-options-api-demos/grid/common/northwind/shippers.json b/vue-options-api-demos/grid/common/northwind/shippers.json new file mode 100644 index 00000000..3b4546bd --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/shippers.json @@ -0,0 +1,18 @@ + +[ + { + "shipperID" : 1, + "companyName" : "Speedy Express", + "phone" : "(503) 555-9831" + }, + { + "shipperID" : 2, + "companyName" : "United Package", + "phone" : "(503) 555-3199" + }, + { + "shipperID" : 3, + "companyName" : "Federal Shipping", + "phone" : "(503) 555-9931" + } +] diff --git a/vue-options-api-demos/grid/common/northwind/suppliers.json b/vue-options-api-demos/grid/common/northwind/suppliers.json new file mode 100644 index 00000000..403a0673 --- /dev/null +++ b/vue-options-api-demos/grid/common/northwind/suppliers.json @@ -0,0 +1,409 @@ + +[ + { + "supplierID" : 4, + "companyName" : "Tokyo Traders", + "contactName" : "Yoshi Nagase", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "9-8 Sekimai Musashino-shi", + "city" : "Tokyo", + "region" : "NULL", + "postalCode" : 100, + "country" : "Japan", + "phone" : "(03) 3555-5011" + } + }, + { + "supplierID" : 5, + "companyName" : "Cooperativa de Quesos 'Las Cabras'", + "contactName" : "Antonio del Valle Saavedra", + "contactTitle" : "Export Administrator", + "address" : { + "street" : "Calle del Rosal 4", + "city" : "Oviedo", + "region" : "Asturias", + "postalCode" : 33007, + "country" : "Spain", + "phone" : "(98) 598 76 54" + } + }, + { + "supplierID" : 6, + "companyName" : "Mayumi's", + "contactName" : "Mayumi Ohno", + "contactTitle" : "Marketing Representative", + "address" : { + "street" : "92 Setsuko Chuo-ku", + "city" : "Osaka", + "region" : "NULL", + "postalCode" : 545, + "country" : "Japan", + "phone" : "(06) 431-7877" + } + }, + { + "supplierID" : 7, + "companyName" : "Pavlova Ltd.", + "contactName" : "Ian Devling", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "74 Rose St. Moonie Ponds", + "city" : "Melbourne", + "region" : "Victoria", + "postalCode" : 3058, + "country" : "Australia", + "phone" : "(03) 444-2343" + } + }, + { + "supplierID" : 8, + "companyName" : "Specialty Biscuits Ltd.", + "contactName" : "Peter Wilson", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "29 King's Way", + "city" : "Manchester", + "region" : "NULL", + "postalCode" : "M14 GSD", + "country" : "UK", + "phone" : "(161) 555-4448" + } + }, + { + "supplierID" : 9, + "companyName" : "PB Knäckebröd AB", + "contactName" : "Lars Peterson", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Kaloadagatan 13", + "city" : "Göteborg", + "region" : "NULL", + "postalCode" : "S-345 67", + "country" : "Sweden", + "phone" : "031-987 65 43" + } + }, + { + "supplierID" : 10, + "companyName" : "Refrescos Americanas LTDA", + "contactName" : "Carlos Diaz", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Av. das Americanas 12.890", + "city" : "Sao Paulo", + "region" : "NULL", + "postalCode" : 5442, + "country" : "Brazil", + "phone" : "(11) 555 4640" + } + }, + { + "supplierID" : 11, + "companyName" : "Heli Süßwaren GmbH & Co. KG", + "contactName" : "Petra Winkler", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Tiergartenstraße 5", + "city" : "Berlin", + "region" : "NULL", + "postalCode" : 10785, + "country" : "Germany", + "phone" : "(010) 9984510" + } + }, + { + "supplierID" : 2, + "companyName" : "New Orleans Cajun Delights", + "contactName" : "Shelley Burke", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "P.O. Box 78934", + "city" : "New Orleans", + "region" : "LA", + "postalCode" : 70117, + "country" : "USA", + "phone" : "(100) 555-4822" + } + }, + { + "supplierID" : 12, + "companyName" : "Plutzer Lebensmittelgroßmärkte AG", + "contactName" : "Martin Bein", + "contactTitle" : "International Marketing Mgr.", + "address" : { + "street" : "Bogenallee 51", + "city" : "Frankfurt", + "region" : "NULL", + "postalCode" : 60439, + "country" : "Germany", + "phone" : "(069) 992755" + } + }, + { + "supplierID" : 13, + "companyName" : "Nord-Ost-Fisch Handelsgesellschaft mbH", + "contactName" : "Sven Petersen", + "contactTitle" : "Coordinator Foreign Markets", + "address" : { + "street" : "Frahmredder 112a", + "city" : "Cuxhaven", + "region" : "NULL", + "postalCode" : 27478, + "country" : "Germany", + "phone" : "(04721) 8713" + } + }, + { + "supplierID" : 14, + "companyName" : "Formaggi Fortini s.r.l.", + "contactName" : "Elio Rossi", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Viale Dante 75", + "city" : "Ravenna", + "region" : "NULL", + "postalCode" : 48100, + "country" : "Italy", + "phone" : "(0544) 60323" + } + }, + { + "supplierID" : 15, + "companyName" : "Norske Meierier", + "contactName" : "Beate Vileid", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Hatlevegen 5", + "city" : "Sandvika", + "region" : "NULL", + "postalCode" : 1320, + "country" : "Norway", + "phone" : "(0)2-953010" + } + }, + { + "supplierID" : 1, + "companyName" : "Exotic Liquids", + "contactName" : "Charlotte Cooper", + "contactTitle" : "Purchasing Manager", + "address" : { + "street" : "49 Gilbert St.", + "city" : "London", + "region" : "NULL", + "postalCode" : "EC1 4SD", + "country" : "UK", + "phone" : "(171) 555-2222" + } + }, + { + "supplierID" : 3, + "companyName" : "Grandma Kelly's Homestead", + "contactName" : "Regina Murphy", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "707 Oxford Rd.", + "city" : "Ann Arbor", + "region" : "MI", + "postalCode" : 48104, + "country" : "USA", + "phone" : "(313) 555-5735" + } + }, + { + "supplierID" : 16, + "companyName" : "Bigfoot Breweries", + "contactName" : "Cheryl Saylor", + "contactTitle" : "Regional Account Rep.", + "address" : { + "street" : "3400 - 8th Avenue Suite 210", + "city" : "Bend", + "region" : "OR", + "postalCode" : 97101, + "country" : "USA", + "phone" : "(503) 555-9931" + } + }, + { + "supplierID" : 17, + "companyName" : "Svensk Sjöföda AB", + "contactName" : "Michael Björn", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Brovallavägen 231", + "city" : "Stockholm", + "region" : "NULL", + "postalCode" : "S-123 45", + "country" : "Sweden", + "phone" : "08-123 45 67" + } + }, + { + "supplierID" : 18, + "companyName" : "Aux joyeux ecclésiastiques", + "contactName" : "Guylène Nodier", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "203 Rue des Francs-Bourgeois", + "city" : "Paris", + "region" : "NULL", + "postalCode" : 75004, + "country" : "France", + "phone" : "(1) 03.83.00.68" + } + }, + { + "supplierID" : 19, + "companyName" : "New England Seafood Cannery", + "contactName" : "Robb Merchant", + "contactTitle" : "Wholesale Account Agent", + "address" : { + "street" : "Order Processing Dept. 2100 Paul Revere Blvd.", + "city" : "Boston", + "region" : "MA", + "postalCode" : 2134, + "country" : "USA", + "phone" : "(617) 555-3267" + } + }, + { + "supplierID" : 20, + "companyName" : "Leka Trading", + "contactName" : "Chandra Leka", + "contactTitle" : "Owner", + "address" : { + "street" : "471 Serangoon Loop Suite #402", + "city" : "Singapore", + "region" : "NULL", + "postalCode" : 512, + "country" : "Singapore", + "phone" : "555-8787" + } + }, + { + "supplierID" : 21, + "companyName" : "Lyngbysild", + "contactName" : "Niels Petersen", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Lyngbysild Fiskebakken 10", + "city" : "Lyngby", + "region" : "NULL", + "postalCode" : 2800, + "country" : "Denmark", + "phone" : 43844108 + } + }, + { + "supplierID" : 22, + "companyName" : "Zaanse Snoepfabriek", + "contactName" : "Dirk Luchte", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Verkoop Rijnweg 22", + "city" : "Zaandam", + "region" : "NULL", + "postalCode" : "9999 ZZ", + "country" : "Netherlands", + "phone" : "(12345) 1212" + } + }, + { + "supplierID" : 25, + "companyName" : "Ma Maison", + "contactName" : "Jean-Guy Lauzon", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "2960 Rue St. Laurent", + "city" : "Montréal", + "region" : "Québec", + "postalCode" : "H1J 1C3", + "country" : "Canada", + "phone" : "(514) 555-9022" + } + }, + { + "supplierID" : 27, + "companyName" : "Escargots Nouveaux", + "contactName" : "Marie Delamare", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "22 rue H. Voiron", + "city" : "Montceau", + "region" : "NULL", + "postalCode" : 71300, + "country" : "France", + "phone" : "85.57.00.07" + } + }, + { + "supplierID" : 26, + "companyName" : "Pasta Buttini s.r.l.", + "contactName" : "Giovanni Giudici", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "Via dei Gelsomini 153", + "city" : "Salerno", + "region" : "NULL", + "postalCode" : 84100, + "country" : "Italy", + "phone" : "(089) 6547665" + } + }, + { + "supplierID" : 28, + "companyName" : "Gai pâturage", + "contactName" : "Eliane Noz", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Bat. B 3 rue des Alpes", + "city" : "Annecy", + "region" : "NULL", + "postalCode" : 74000, + "country" : "France", + "phone" : "38.76.98.06" + } + }, + { + "supplierID" : 23, + "companyName" : "Karkki Oy", + "contactName" : "Anne Heikkonen", + "contactTitle" : "Product Manager", + "address" : { + "street" : "Valtakatu 12", + "city" : "Lappeenranta", + "region" : "NULL", + "postalCode" : 53120, + "country" : "Finland", + "phone" : "(953) 10956" + } + }, + { + "supplierID" : 24, + "companyName" : "G'day Mate", + "contactName" : "Wendy Mackenzie", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "170 Prince Edward Parade Hunter's Hill", + "city" : "Sydney", + "region" : "NSW", + "postalCode" : 2042, + "country" : "Australia", + "phone" : "(02) 555-5914" + } + }, + { + "supplierID" : 29, + "companyName" : "Forêts d'érables", + "contactName" : "Chantal Goulet", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "148 rue Chasseur", + "city" : "Ste-Hyacinthe", + "region" : "Québec", + "postalCode" : "J2S 7S8", + "country" : "Canada", + "phone" : "(514) 555-2955" + } + } +] diff --git a/vue-options-api-demos/grid/compact-grid/ChangeComponent.vue b/vue-options-api-demos/grid/compact-grid/ChangeComponent.vue new file mode 100644 index 00000000..2d70a20d --- /dev/null +++ b/vue-options-api-demos/grid/compact-grid/ChangeComponent.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/grid/compact-grid/ChangePercentageComponent.vue b/vue-options-api-demos/grid/compact-grid/ChangePercentageComponent.vue new file mode 100644 index 00000000..e6f64790 --- /dev/null +++ b/vue-options-api-demos/grid/compact-grid/ChangePercentageComponent.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/grid/compact-grid/GridComponent.vue b/vue-options-api-demos/grid/compact-grid/GridComponent.vue new file mode 100644 index 00000000..a52d43ca --- /dev/null +++ b/vue-options-api-demos/grid/compact-grid/GridComponent.vue @@ -0,0 +1,146 @@ + + + diff --git a/vue-options-api-demos/grid/compact-grid/companyData.json b/vue-options-api-demos/grid/compact-grid/companyData.json new file mode 100644 index 00000000..fc8558eb --- /dev/null +++ b/vue-options-api-demos/grid/compact-grid/companyData.json @@ -0,0 +1,1002 @@ +[ + { + "id": 1, + "symbol": "BA", + "date": "2009-01-03T00:00:00", + "open": 41.62, + "high": 41.69, + "low": 39.81, + "close": 40.12, + "volume": 2632000 + }, + { + "id": 2, + "symbol": "BA", + "date": "2009-01-04T00:00:00", + "open": 39.88, + "high": 41.12, + "low": 39.75, + "close": 40.12, + "volume": 3584700 + }, + { + "id": 3, + "symbol": "BA", + "date": "2009-01-05T00:00:00", + "open": 42.0, + "high": 43.31, + "low": 41.38, + "close": 42.62, + "volume": 7631700 + }, + { + "id": 4, + "symbol": "BA", + "date": "2009-01-06T00:00:00", + "open": 42.25, + "high": 43.44, + "low": 41.12, + "close": 43.06, + "volume": 4922200 + }, + { + "id": 5, + "symbol": "BA", + "date": "2009-01-07T00:00:00", + "open": 43.88, + "high": 44.88, + "low": 43.69, + "close": 44.12, + "volume": 6008300 + }, + { + "id": 6, + "symbol": "BA", + "date": "2009-01-10T00:00:00", + "open": 44.31, + "high": 44.5, + "low": 43.5, + "close": 43.69, + "volume": 2400000 + }, + { + "id": 7, + "symbol": "BA", + "date": "2009-01-11T00:00:00", + "open": 43.38, + "high": 43.94, + "low": 42.75, + "close": 42.88, + "volume": 2450200 + }, + { + "id": 8, + "symbol": "BA", + "date": "2009-01-12T00:00:00", + "open": 42.75, + "high": 44.19, + "low": 42.5, + "close": 43.06, + "volume": 2326900 + }, + { + "id": 9, + "symbol": "BA", + "date": "2009-01-13T00:00:00", + "open": 43.31, + "high": 43.38, + "low": 42.0, + "close": 42.38, + "volume": 3030100 + }, + { + "id": 10, + "symbol": "BA", + "date": "2009-01-14T00:00:00", + "open": 43.62, + "high": 44.25, + "low": 42.94, + "close": 44.0, + "volume": 3834900 + }, + { + "id": 11, + "symbol": "BA", + "date": "2009-01-18T00:00:00", + "open": 43.88, + "high": 45.0, + "low": 43.12, + "close": 45.0, + "volume": 5859100 + }, + { + "id": 12, + "symbol": "BA", + "date": "2009-01-19T00:00:00", + "open": 45.38, + "high": 48.12, + "low": 45.25, + "close": 47.62, + "volume": 11457600 + }, + { + "id": 13, + "symbol": "BA", + "date": "2009-01-20T00:00:00", + "open": 47.56, + "high": 47.88, + "low": 45.75, + "close": 46.5, + "volume": 8931100 + }, + { + "id": 14, + "symbol": "BA", + "date": "2009-01-21T00:00:00", + "open": 46.94, + "high": 46.94, + "low": 45.0, + "close": 45.69, + "volume": 4390000 + }, + { + "id": 15, + "symbol": "BA", + "date": "2009-01-24T00:00:00", + "open": 45.81, + "high": 46.19, + "low": 43.62, + "close": 44.31, + "volume": 3296200 + }, + { + "id": 16, + "symbol": "BA", + "date": "2009-01-25T00:00:00", + "open": 45.0, + "high": 46.0, + "low": 44.75, + "close": 45.69, + "volume": 5052200 + }, + { + "id": 17, + "symbol": "BA", + "date": "2009-01-26T00:00:00", + "open": 45.69, + "high": 46.5, + "low": 45.0, + "close": 46.19, + "volume": 3090100 + }, + { + "id": 18, + "symbol": "BA", + "date": "2009-01-27T00:00:00", + "open": 46.0, + "high": 46.88, + "low": 44.88, + "close": 45.06, + "volume": 3329100 + }, + { + "id": 19, + "symbol": "BA", + "date": "2009-01-28T00:00:00", + "open": 44.81, + "high": 45.62, + "low": 44.5, + "close": 44.62, + "volume": 2258400 + }, + { + "id": 20, + "symbol": "BA", + "date": "2009-01-31T00:00:00", + "open": 44.0, + "high": 44.56, + "low": 43.94, + "close": 44.5, + "volume": 2340500 + }, + { + "id": 21, + "symbol": "BA", + "date": "2009-02-01T00:00:00", + "open": 43.88, + "high": 44.19, + "low": 43.31, + "close": 43.75, + "volume": 2670800 + }, + { + "id": 22, + "symbol": "BA", + "date": "2009-02-02T00:00:00", + "open": 43.38, + "high": 45.19, + "low": 43.38, + "close": 44.62, + "volume": 3295500 + }, + { + "id": 23, + "symbol": "BA", + "date": "2009-02-03T00:00:00", + "open": 45.0, + "high": 45.06, + "low": 43.12, + "close": 43.44, + "volume": 2886400 + }, + { + "id": 24, + "symbol": "BA", + "date": "2009-02-04T00:00:00", + "open": 43.75, + "high": 44.19, + "low": 42.56, + "close": 44.0, + "volume": 2927200 + }, + { + "id": 25, + "symbol": "BA", + "date": "2009-02-07T00:00:00", + "open": 43.88, + "high": 43.88, + "low": 41.69, + "close": 41.81, + "volume": 3024400 + }, + { + "id": 26, + "symbol": "BA", + "date": "2009-02-08T00:00:00", + "open": 41.94, + "high": 42.06, + "low": 40.0, + "close": 41.0, + "volume": 5097700 + }, + { + "id": 27, + "symbol": "BA", + "date": "2009-02-09T00:00:00", + "open": 40.25, + "high": 40.25, + "low": 38.38, + "close": 39.0, + "volume": 5535800 + }, + { + "id": 28, + "symbol": "BA", + "date": "2009-02-10T00:00:00", + "open": 38.81, + "high": 40.19, + "low": 38.75, + "close": 39.75, + "volume": 4040600 + }, + { + "id": 29, + "symbol": "BA", + "date": "2009-02-11T00:00:00", + "open": 39.75, + "high": 40.38, + "low": 39.12, + "close": 39.88, + "volume": 3127800 + }, + { + "id": 30, + "symbol": "BA", + "date": "2009-02-14T00:00:00", + "open": 39.62, + "high": 39.69, + "low": 38.06, + "close": 38.25, + "volume": 2605900 + }, + { + "id": 31, + "symbol": "BA", + "date": "2009-02-15T00:00:00", + "open": 38.12, + "high": 38.69, + "low": 37.38, + "close": 38.5, + "volume": 3947800 + }, + { + "id": 32, + "symbol": "BA", + "date": "2009-02-16T00:00:00", + "open": 37.75, + "high": 37.94, + "low": 36.88, + "close": 37.25, + "volume": 3423000 + }, + { + "id": 33, + "symbol": "BA", + "date": "2009-02-17T00:00:00", + "open": 37.25, + "high": 37.88, + "low": 36.56, + "close": 37.5, + "volume": 3400500 + }, + { + "id": 34, + "symbol": "BA", + "date": "2009-02-18T00:00:00", + "open": 37.38, + "high": 37.5, + "low": 35.88, + "close": 36.0, + "volume": 5536500 + }, + { + "id": 35, + "symbol": "BA", + "date": "2009-02-22T00:00:00", + "open": 35.94, + "high": 39.94, + "low": 35.88, + "close": 38.88, + "volume": 4768400 + }, + { + "id": 36, + "symbol": "BA", + "date": "2009-02-23T00:00:00", + "open": 38.62, + "high": 38.69, + "low": 37.06, + "close": 37.12, + "volume": 3880800 + }, + { + "id": 37, + "symbol": "BA", + "date": "2009-02-24T00:00:00", + "open": 36.88, + "high": 37.0, + "low": 35.88, + "close": 36.56, + "volume": 4198300 + }, + { + "id": 38, + "symbol": "BA", + "date": "2009-02-25T00:00:00", + "open": 37.06, + "high": 38.0, + "low": 36.81, + "close": 37.81, + "volume": 3170600 + }, + { + "id": 39, + "symbol": "BA", + "date": "2009-02-28T00:00:00", + "open": 37.5, + "high": 37.62, + "low": 36.56, + "close": 37.0, + "volume": 3573300 + }, + { + "id": 40, + "symbol": "BA", + "date": "2009-02-28T00:00:00", + "open": 37.19, + "high": 37.62, + "low": 36.12, + "close": 36.94, + "volume": 3503100 + }, + { + "id": 41, + "symbol": "BA", + "date": "2009-03-01T00:00:00", + "open": 36.94, + "high": 36.62, + "low": 35.94, + "close": 36.31, + "volume": 2838000 + }, + { + "id": 42, + "symbol": "BA", + "date": "2009-03-02T00:00:00", + "open": 35.94, + "high": 37.19, + "low": 35.38, + "close": 35.94, + "volume": 4053200 + }, + { + "id": 43, + "symbol": "BA", + "date": "2009-03-03T00:00:00", + "open": 35.94, + "high": 36.5, + "low": 35.69, + "close": 35.94, + "volume": 3884100 + }, + { + "id": 44, + "symbol": "BA", + "date": "2009-03-06T00:00:00", + "open": 35.94, + "high": 36.19, + "low": 35.0, + "close": 35.12, + "volume": 2879500 + }, + { + "id": 45, + "symbol": "BA", + "date": "2009-03-07T00:00:00", + "open": 35.12, + "high": 35.12, + "low": 34.12, + "close": 34.75, + "volume": 3565000 + }, + { + "id": 46, + "symbol": "BA", + "date": "2009-03-08T00:00:00", + "open": 34.0, + "high": 34.19, + "low": 33.38, + "close": 33.38, + "volume": 4134600 + }, + { + "id": 47, + "symbol": "BA", + "date": "2009-03-09T00:00:00", + "open": 33.5, + "high": 34.5, + "low": 33.25, + "close": 33.75, + "volume": 3236700 + }, + { + "id": 48, + "symbol": "BA", + "date": "2009-03-10T00:00:00", + "open": 33.94, + "high": 33.94, + "low": 32.31, + "close": 33.25, + "volume": 5080300 + }, + { + "id": 49, + "symbol": "BA", + "date": "2009-03-13T00:00:00", + "open": 32.25, + "high": 33.12, + "low": 32.0, + "close": 32.62, + "volume": 3420200 + }, + { + "id": 50, + "symbol": "BA", + "date": "2009-03-14T00:00:00", + "open": 32.75, + "high": 33.81, + "low": 32.44, + "close": 33.06, + "volume": 3727900 + }, + { + "id": 51, + "symbol": "BA", + "date": "2009-03-15T00:00:00", + "open": 32.88, + "high": 35.5, + "low": 32.81, + "close": 34.88, + "volume": 4859300 + }, + { + "id": 52, + "symbol": "BA", + "date": "2009-03-16T00:00:00", + "open": 35.0, + "high": 35.94, + "low": 34.69, + "close": 35.62, + "volume": 4725200 + }, + { + "id": 53, + "symbol": "BA", + "date": "2009-03-17T00:00:00", + "open": 37.25, + "high": 38.94, + "low": 36.0, + "close": 37.19, + "volume": 15099400 + }, + { + "id": 54, + "symbol": "BA", + "date": "2009-03-20T00:00:00", + "open": 37.19, + "high": 37.69, + "low": 36.38, + "close": 37.0, + "volume": 5786400 + }, + { + "id": 55, + "symbol": "BA", + "date": "2009-03-21T00:00:00", + "open": 37.19, + "high": 37.44, + "low": 36.19, + "close": 36.56, + "volume": 4153400 + }, + { + "id": 56, + "symbol": "BA", + "date": "2009-03-22T00:00:00", + "open": 36.94, + "high": 37.19, + "low": 35.75, + "close": 36.38, + "volume": 3358600 + }, + { + "id": 57, + "symbol": "BA", + "date": "2009-03-23T00:00:00", + "open": 35.62, + "high": 35.94, + "low": 34.81, + "close": 35.12, + "volume": 4080400 + }, + { + "id": 58, + "symbol": "BA", + "date": "2009-03-24T00:00:00", + "open": 36.0, + "high": 36.44, + "low": 35.5, + "close": 36.12, + "volume": 5797400 + }, + { + "id": 59, + "symbol": "BA", + "date": "2009-03-27T00:00:00", + "open": 36.25, + "high": 37.31, + "low": 36.12, + "close": 37.12, + "volume": 2534000 + }, + { + "id": 60, + "symbol": "BA", + "date": "2009-03-28T00:00:00", + "open": 36.94, + "high": 38.19, + "low": 36.88, + "close": 38.0, + "volume": 5056400 + }, + { + "id": 61, + "symbol": "BA", + "date": "2009-03-29T00:00:00", + "open": 37.75, + "high": 38.19, + "low": 37.31, + "close": 37.88, + "volume": 2731000 + }, + { + "id": 62, + "symbol": "BA", + "date": "2009-03-30T00:00:00", + "open": 37.88, + "high": 38.94, + "low": 37.62, + "close": 38.62, + "volume": 3266100 + }, + { + "id": 63, + "symbol": "BA", + "date": "2009-03-31T00:00:00", + "open": 38.75, + "high": 38.81, + "low": 37.81, + "close": 37.81, + "volume": 4630100 + }, + { + "id": 64, + "symbol": "BA", + "date": "2009-04-03T00:00:00", + "open": 37.75, + "high": 37.75, + "low": 37.06, + "close": 37.19, + "volume": 3234700 + }, + { + "id": 65, + "symbol": "BA", + "date": "2009-04-04T00:00:00", + "open": 37.38, + "high": 38.25, + "low": 36.56, + "close": 37.31, + "volume": 4002100 + }, + { + "id": 66, + "symbol": "BA", + "date": "2009-04-05T00:00:00", + "open": 36.88, + "high": 37.25, + "low": 36.0, + "close": 36.06, + "volume": 2860900 + }, + { + "id": 67, + "symbol": "BA", + "date": "2009-04-06T00:00:00", + "open": 36.0, + "high": 36.44, + "low": 35.62, + "close": 36.12, + "volume": 2941900 + }, + { + "id": 68, + "symbol": "BA", + "date": "2009-04-07T00:00:00", + "open": 36.19, + "high": 36.31, + "low": 35.38, + "close": 35.69, + "volume": 2381600 + }, + { + "id": 69, + "symbol": "BA", + "date": "2009-04-10T00:00:00", + "open": 35.5, + "high": 35.62, + "low": 35.0, + "close": 35.06, + "volume": 2452600 + }, + { + "id": 70, + "symbol": "BA", + "date": "2009-04-11T00:00:00", + "open": 35.0, + "high": 36.38, + "low": 35.0, + "close": 35.69, + "volume": 2251100 + }, + { + "id": 71, + "symbol": "BA", + "date": "2009-04-12T00:00:00", + "open": 35.94, + "high": 38.38, + "low": 35.88, + "close": 37.62, + "volume": 4620200 + }, + { + "id": 72, + "symbol": "BA", + "date": "2009-04-13T00:00:00", + "open": 37.62, + "high": 37.62, + "low": 36.5, + "close": 37.0, + "volume": 2916700 + }, + { + "id": 73, + "symbol": "BA", + "date": "2009-04-14T00:00:00", + "open": 36.0, + "high": 36.75, + "low": 34.75, + "close": 35.38, + "volume": 3744900 + }, + { + "id": 74, + "symbol": "BA", + "date": "2009-04-17T00:00:00", + "open": 35.12, + "high": 35.38, + "low": 34.06, + "close": 35.31, + "volume": 3739100 + }, + { + "id": 75, + "symbol": "BA", + "date": "2009-04-18T00:00:00", + "open": 34.62, + "high": 35.06, + "low": 34.31, + "close": 34.75, + "volume": 3378800 + }, + { + "id": 76, + "symbol": "BA", + "date": "2009-04-19T00:00:00", + "open": 35.94, + "high": 37.75, + "low": 35.56, + "close": 37.25, + "volume": 5709000 + }, + { + "id": 77, + "symbol": "BA", + "date": "2009-04-20T00:00:00", + "open": 37.5, + "high": 40.25, + "low": 37.5, + "close": 40.06, + "volume": 8110700 + }, + { + "id": 78, + "symbol": "BA", + "date": "2009-04-24T00:00:00", + "open": 39.62, + "high": 41.25, + "low": 37.5, + "close": 37.88, + "volume": 10087700 + }, + { + "id": 79, + "symbol": "BA", + "date": "2009-04-25T00:00:00", + "open": 38.25, + "high": 39.56, + "low": 38.25, + "close": 39.0, + "volume": 5397100 + }, + { + "id": 80, + "symbol": "BA", + "date": "2009-04-26T00:00:00", + "open": 39.19, + "high": 40.56, + "low": 39.0, + "close": 39.94, + "volume": 5338300 + }, + { + "id": 81, + "symbol": "BA", + "date": "2009-04-27T00:00:00", + "open": 39.0, + "high": 40.25, + "low": 38.94, + "close": 39.81, + "volume": 3176700 + }, + { + "id": 82, + "symbol": "BA", + "date": "2009-04-28T00:00:00", + "open": 39.62, + "high": 40.06, + "low": 38.94, + "close": 39.69, + "volume": 1853600 + }, + { + "id": 83, + "symbol": "BA", + "date": "2009-05-01T00:00:00", + "open": 39.69, + "high": 40.19, + "low": 39.0, + "close": 39.06, + "volume": 2886100 + }, + { + "id": 84, + "symbol": "BA", + "date": "2009-05-02T00:00:00", + "open": 39.06, + "high": 39.06, + "low": 37.81, + "close": 37.94, + "volume": 2549200 + }, + { + "id": 85, + "symbol": "BA", + "date": "2009-05-03T00:00:00", + "open": 37.31, + "high": 38.19, + "low": 36.81, + "close": 37.31, + "volume": 3311300 + }, + { + "id": 86, + "symbol": "BA", + "date": "2009-05-04T00:00:00", + "open": 38.25, + "high": 39.31, + "low": 37.81, + "close": 38.19, + "volume": 2981100 + }, + { + "id": 87, + "symbol": "BA", + "date": "2009-05-05T00:00:00", + "open": 38.0, + "high": 39.88, + "low": 37.94, + "close": 39.5, + "volume": 2792900 + }, + { + "id": 88, + "symbol": "BA", + "date": "2009-05-08T00:00:00", + "open": 39.0, + "high": 39.5, + "low": 38.19, + "close": 38.25, + "volume": 3146400 + }, + { + "id": 89, + "symbol": "BA", + "date": "2009-05-09T00:00:00", + "open": 38.5, + "high": 39.19, + "low": 38.12, + "close": 38.31, + "volume": 2567300 + }, + { + "id": 90, + "symbol": "BA", + "date": "2009-05-10T00:00:00", + "open": 37.75, + "high": 37.94, + "low": 36.56, + "close": 36.88, + "volume": 4820400 + }, + { + "id": 91, + "symbol": "BA", + "date": "2009-05-11T00:00:00", + "open": 37.12, + "high": 38.19, + "low": 37.06, + "close": 37.31, + "volume": 2887200 + }, + { + "id": 92, + "symbol": "BA", + "date": "2009-05-12T00:00:00", + "open": 37.62, + "high": 37.62, + "low": 37.06, + "close": 37.19, + "volume": 2453200 + }, + { + "id": 93, + "symbol": "BA", + "date": "2009-05-15T00:00:00", + "open": 36.62, + "high": 37.5, + "low": 36.44, + "close": 37.19, + "volume": 2913500 + }, + { + "id": 94, + "symbol": "BA", + "date": "2009-05-16T00:00:00", + "open": 37.19, + "high": 37.88, + "low": 36.75, + "close": 37.38, + "volume": 3815700 + }, + { + "id": 95, + "symbol": "BA", + "date": "2009-05-17T00:00:00", + "open": 37.0, + "high": 37.5, + "low": 36.56, + "close": 37.38, + "volume": 2739800 + }, + { + "id": 96, + "symbol": "BA", + "date": "2009-05-18T00:00:00", + "open": 37.12, + "high": 37.75, + "low": 37.12, + "close": 37.62, + "volume": 2050100 + }, + { + "id": 97, + "symbol": "BA", + "date": "2009-05-19T00:00:00", + "open": 37.0, + "high": 37.38, + "low": 36.25, + "close": 36.94, + "volume": 2193900 + }, + { + "id": 98, + "symbol": "BA", + "date": "2009-05-22T00:00:00", + "open": 37.38, + "high": 37.69, + "low": 36.25, + "close": 36.56, + "volume": 2966000 + }, + { + "id": 99, + "symbol": "BA", + "date": "2009-05-23T00:00:00", + "open": 36.62, + "high": 37.94, + "low": 36.62, + "close": 37.12, + "volume": 2850600 + }, + { + "id": 100, + "symbol": "BA", + "date": "2009-05-24T00:00:00", + "open": 37.25, + "high": 39.0, + "low": 37.19, + "close": 38.88, + "volume": 4642600 + } +] diff --git a/vue-options-api-demos/grid/compact-grid/main.js b/vue-options-api-demos/grid/compact-grid/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/compact-grid/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/compact-grid/main.vue b/vue-options-api-demos/grid/compact-grid/main.vue new file mode 100644 index 00000000..cee977fe --- /dev/null +++ b/vue-options-api-demos/grid/compact-grid/main.vue @@ -0,0 +1,50 @@ + + + diff --git a/vue-options-api-demos/grid/custom-rendering/cells/component/ComponentInstance.vue b/vue-options-api-demos/grid/custom-rendering/cells/component/ComponentInstance.vue new file mode 100644 index 00000000..6fdb6b41 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/cells/component/ComponentInstance.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/cells/component/main.js b/vue-options-api-demos/grid/custom-rendering/cells/component/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/cells/component/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/cells/component/main.vue b/vue-options-api-demos/grid/custom-rendering/cells/component/main.vue new file mode 100644 index 00000000..b29f8db6 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/cells/component/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/cells/function/main.js b/vue-options-api-demos/grid/custom-rendering/cells/function/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/cells/function/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/cells/function/main.vue b/vue-options-api-demos/grid/custom-rendering/cells/function/main.vue new file mode 100644 index 00000000..3b29b356 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/cells/function/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/cells/slot/main.js b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/cells/slot/main.vue b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.vue new file mode 100644 index 00000000..161ac4be --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.vue @@ -0,0 +1,65 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/detail/DetailComponent.vue b/vue-options-api-demos/grid/custom-rendering/detail/DetailComponent.vue new file mode 100644 index 00000000..0cc16731 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/detail/DetailComponent.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/detail/main.js b/vue-options-api-demos/grid/custom-rendering/detail/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/detail/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/detail/main.vue b/vue-options-api-demos/grid/custom-rendering/detail/main.vue new file mode 100644 index 00000000..c6655271 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/detail/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/detail/products.js b/vue-options-api-demos/grid/custom-rendering/detail/products.js new file mode 100644 index 00000000..e626c67b --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/detail/products.js @@ -0,0 +1,72 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +]; + +export { products }; diff --git a/vue-options-api-demos/grid/custom-rendering/footer/component/ComponentInstance.vue b/vue-options-api-demos/grid/custom-rendering/footer/component/ComponentInstance.vue new file mode 100644 index 00000000..6fdb6b41 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/footer/component/ComponentInstance.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/footer/component/main.js b/vue-options-api-demos/grid/custom-rendering/footer/component/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/footer/component/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/footer/component/main.vue b/vue-options-api-demos/grid/custom-rendering/footer/component/main.vue new file mode 100644 index 00000000..0e3ccfad --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/footer/component/main.vue @@ -0,0 +1,70 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/footer/function/main.js b/vue-options-api-demos/grid/custom-rendering/footer/function/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/footer/function/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/footer/function/main.vue b/vue-options-api-demos/grid/custom-rendering/footer/function/main.vue new file mode 100644 index 00000000..3775c3d5 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/footer/function/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/footer/slot/main.js b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/footer/slot/main.vue b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.vue new file mode 100644 index 00000000..62fc56e1 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/group-header/CustomCell.vue b/vue-options-api-demos/grid/custom-rendering/group-header/CustomCell.vue new file mode 100644 index 00000000..53a5e00c --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/group-header/CustomCell.vue @@ -0,0 +1,65 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/group-header/main.js b/vue-options-api-demos/grid/custom-rendering/group-header/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/group-header/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/group-header/main.vue b/vue-options-api-demos/grid/custom-rendering/group-header/main.vue new file mode 100644 index 00000000..b9be0d76 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/group-header/main.vue @@ -0,0 +1,104 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/grouping/CustomCell.vue b/vue-options-api-demos/grid/custom-rendering/grouping/CustomCell.vue new file mode 100644 index 00000000..f9b7b3ac --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/grouping/CustomCell.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/grouping/main.js b/vue-options-api-demos/grid/custom-rendering/grouping/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/grouping/main.vue b/vue-options-api-demos/grid/custom-rendering/grouping/main.vue new file mode 100644 index 00000000..7665c960 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/grouping/main.vue @@ -0,0 +1,105 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/headers/component/ComponentInstance.vue b/vue-options-api-demos/grid/custom-rendering/headers/component/ComponentInstance.vue new file mode 100644 index 00000000..6fdb6b41 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/headers/component/ComponentInstance.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/headers/component/main.js b/vue-options-api-demos/grid/custom-rendering/headers/component/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/headers/component/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/headers/component/main.vue b/vue-options-api-demos/grid/custom-rendering/headers/component/main.vue new file mode 100644 index 00000000..1c5e3de7 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/headers/component/main.vue @@ -0,0 +1,70 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/headers/function/main.js b/vue-options-api-demos/grid/custom-rendering/headers/function/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/headers/function/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/headers/function/main.vue b/vue-options-api-demos/grid/custom-rendering/headers/function/main.vue new file mode 100644 index 00000000..f7ce2219 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/headers/function/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/headers/slot/main.js b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/headers/slot/main.vue b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.vue new file mode 100644 index 00000000..4f539cba --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/DetailComponent.vue b/vue-options-api-demos/grid/custom-rendering/hierarchy/DetailComponent.vue new file mode 100644 index 00000000..63b85864 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/DetailComponent.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/main.js b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/main.vue b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.vue new file mode 100644 index 00000000..47e57511 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/products.js b/vue-options-api-demos/grid/custom-rendering/hierarchy/products.js new file mode 100644 index 00000000..2a1ce279 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/products.js @@ -0,0 +1,1313 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +]; + +export { products }; diff --git a/vue-options-api-demos/grid/custom-rendering/loader-template/main.js b/vue-options-api-demos/grid/custom-rendering/loader-template/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/loader-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/loader-template/main.vue b/vue-options-api-demos/grid/custom-rendering/loader-template/main.vue new file mode 100644 index 00000000..fa5aa884 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/loader-template/main.vue @@ -0,0 +1,130 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/row-reorder/CustomCell.vue b/vue-options-api-demos/grid/custom-rendering/row-reorder/CustomCell.vue new file mode 100644 index 00000000..b1f12e42 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/row-reorder/CustomCell.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/grid/custom-rendering/row-reorder/main.js b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/custom-rendering/row-reorder/main.vue b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.vue new file mode 100644 index 00000000..71c35e87 --- /dev/null +++ b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.vue @@ -0,0 +1,74 @@ + + diff --git a/vue-options-api-demos/grid/data-binding/local-data-operations/main.js b/vue-options-api-demos/grid/data-binding/local-data-operations/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/data-binding/local-data-operations/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/data-binding/local-data-operations/main.vue b/vue-options-api-demos/grid/data-binding/local-data-operations/main.vue new file mode 100644 index 00000000..c5399032 --- /dev/null +++ b/vue-options-api-demos/grid/data-binding/local-data-operations/main.vue @@ -0,0 +1,182 @@ + + diff --git a/vue-options-api-demos/grid/data-binding/odata4-crud/CommandCell.vue b/vue-options-api-demos/grid/data-binding/odata4-crud/CommandCell.vue new file mode 100644 index 00000000..5767ab6f --- /dev/null +++ b/vue-options-api-demos/grid/data-binding/odata4-crud/CommandCell.vue @@ -0,0 +1,73 @@ + + diff --git a/vue-options-api-demos/grid/data-binding/odata4-crud/main.js b/vue-options-api-demos/grid/data-binding/odata4-crud/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/data-binding/odata4-crud/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/data-binding/odata4-crud/main.vue b/vue-options-api-demos/grid/data-binding/odata4-crud/main.vue new file mode 100644 index 00000000..a172d8f3 --- /dev/null +++ b/vue-options-api-demos/grid/data-binding/odata4-crud/main.vue @@ -0,0 +1,252 @@ + + diff --git a/vue-options-api-demos/grid/editing/basic/main.js b/vue-options-api-demos/grid/editing/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/editing/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/editing/basic/main.vue b/vue-options-api-demos/grid/editing/basic/main.vue new file mode 100644 index 00000000..fc41cca0 --- /dev/null +++ b/vue-options-api-demos/grid/editing/basic/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/grid/editing/custom/CommandCell.vue b/vue-options-api-demos/grid/editing/custom/CommandCell.vue new file mode 100644 index 00000000..ce996006 --- /dev/null +++ b/vue-options-api-demos/grid/editing/custom/CommandCell.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/grid/editing/custom/DropDownCell.vue b/vue-options-api-demos/grid/editing/custom/DropDownCell.vue new file mode 100644 index 00000000..097b69e9 --- /dev/null +++ b/vue-options-api-demos/grid/editing/custom/DropDownCell.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/grid/editing/custom/main.js b/vue-options-api-demos/grid/editing/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/editing/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/editing/custom/main.vue b/vue-options-api-demos/grid/editing/custom/main.vue new file mode 100644 index 00000000..5bf92253 --- /dev/null +++ b/vue-options-api-demos/grid/editing/custom/main.vue @@ -0,0 +1,207 @@ + + diff --git a/vue-options-api-demos/grid/editing/external/CommandCell.vue b/vue-options-api-demos/grid/editing/external/CommandCell.vue new file mode 100644 index 00000000..55ed9949 --- /dev/null +++ b/vue-options-api-demos/grid/editing/external/CommandCell.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/grid/editing/external/DialogContainer.vue b/vue-options-api-demos/grid/editing/external/DialogContainer.vue new file mode 100644 index 00000000..d7d3718a --- /dev/null +++ b/vue-options-api-demos/grid/editing/external/DialogContainer.vue @@ -0,0 +1,88 @@ + + diff --git a/vue-options-api-demos/grid/editing/external/data.js b/vue-options-api-demos/grid/editing/external/data.js new file mode 100644 index 00000000..771f15d1 --- /dev/null +++ b/vue-options-api-demos/grid/editing/external/data.js @@ -0,0 +1,184 @@ + +export const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + diff --git a/vue-options-api-demos/grid/editing/external/main.js b/vue-options-api-demos/grid/editing/external/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/editing/external/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/editing/external/main.vue b/vue-options-api-demos/grid/editing/external/main.vue new file mode 100644 index 00000000..b1999053 --- /dev/null +++ b/vue-options-api-demos/grid/editing/external/main.vue @@ -0,0 +1,104 @@ + + diff --git a/vue-options-api-demos/grid/editing/incell/main.js b/vue-options-api-demos/grid/editing/incell/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/editing/incell/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/editing/incell/main.vue b/vue-options-api-demos/grid/editing/incell/main.vue new file mode 100644 index 00000000..6a55a633 --- /dev/null +++ b/vue-options-api-demos/grid/editing/incell/main.vue @@ -0,0 +1,159 @@ + + diff --git a/vue-options-api-demos/grid/editing/inline-form/CommandCell.vue b/vue-options-api-demos/grid/editing/inline-form/CommandCell.vue new file mode 100644 index 00000000..c3b6ab9b --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline-form/CommandCell.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/grid/editing/inline-form/FormContent.vue b/vue-options-api-demos/grid/editing/inline-form/FormContent.vue new file mode 100644 index 00000000..637a1b84 --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline-form/FormContent.vue @@ -0,0 +1,57 @@ + + + diff --git a/vue-options-api-demos/grid/editing/inline-form/FormInput.vue b/vue-options-api-demos/grid/editing/inline-form/FormInput.vue new file mode 100644 index 00000000..fa49ba16 --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline-form/FormInput.vue @@ -0,0 +1,89 @@ + + diff --git a/vue-options-api-demos/grid/editing/inline-form/NameCell.vue b/vue-options-api-demos/grid/editing/inline-form/NameCell.vue new file mode 100644 index 00000000..10a5f810 --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline-form/NameCell.vue @@ -0,0 +1,58 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/editing/inline-form/main.js b/vue-options-api-demos/grid/editing/inline-form/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline-form/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/editing/inline-form/main.vue b/vue-options-api-demos/grid/editing/inline-form/main.vue new file mode 100644 index 00000000..8550e0da --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline-form/main.vue @@ -0,0 +1,212 @@ + + diff --git a/vue-options-api-demos/grid/editing/inline-form/verificationFunctions.js b/vue-options-api-demos/grid/editing/inline-form/verificationFunctions.js new file mode 100644 index 00000000..75a77600 --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline-form/verificationFunctions.js @@ -0,0 +1,5 @@ +// Check if the length of the Name is above 3 symbols +const isLengthAboveThree = (value) => value !== undefined && value.length > 3; + +export { isLengthAboveThree }; + \ No newline at end of file diff --git a/vue-options-api-demos/grid/editing/inline/CommandCell.vue b/vue-options-api-demos/grid/editing/inline/CommandCell.vue new file mode 100644 index 00000000..fc861d85 --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline/CommandCell.vue @@ -0,0 +1,73 @@ + + diff --git a/vue-options-api-demos/grid/editing/inline/main.js b/vue-options-api-demos/grid/editing/inline/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/editing/inline/main.vue b/vue-options-api-demos/grid/editing/inline/main.vue new file mode 100644 index 00000000..dafd1b24 --- /dev/null +++ b/vue-options-api-demos/grid/editing/inline/main.vue @@ -0,0 +1,199 @@ + + diff --git a/vue-options-api-demos/grid/editing/validation/CommandCell.vue b/vue-options-api-demos/grid/editing/validation/CommandCell.vue new file mode 100644 index 00000000..b78ab8cb --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/CommandCell.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/grid/editing/validation/DatePickerCell.vue b/vue-options-api-demos/grid/editing/validation/DatePickerCell.vue new file mode 100644 index 00000000..5989990c --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/DatePickerCell.vue @@ -0,0 +1,49 @@ + + + diff --git a/vue-options-api-demos/grid/editing/validation/InputCell.vue b/vue-options-api-demos/grid/editing/validation/InputCell.vue new file mode 100644 index 00000000..eb945580 --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/InputCell.vue @@ -0,0 +1,47 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/editing/validation/NumericCell.vue b/vue-options-api-demos/grid/editing/validation/NumericCell.vue new file mode 100644 index 00000000..c5508af7 --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/NumericCell.vue @@ -0,0 +1,50 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/editing/validation/main.js b/vue-options-api-demos/grid/editing/validation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/editing/validation/main.vue b/vue-options-api-demos/grid/editing/validation/main.vue new file mode 100644 index 00000000..91f8a662 --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/main.vue @@ -0,0 +1,251 @@ + + + + diff --git a/vue-options-api-demos/grid/editing/validation/products.js b/vue-options-api-demos/grid/editing/validation/products.js new file mode 100644 index 00000000..da9ef012 --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/products.js @@ -0,0 +1,26 @@ +export default [ + { + ProductID: 1, + ProductName: 'Chai', + UnitsInStock: 39, + FirstOrderedOn: new Date(1996, 8, 20) + }, + { + ProductID: 2, + ProductName: 'Chang', + UnitsInStock: 17, + FirstOrderedOn: new Date(1996, 7, 12) + }, + { + ProductID: 3, + ProductName: 'Aniseed Syrup', + UnitsInStock: 13, + FirstOrderedOn: new Date(1996, 8, 26) + }, + { + ProductID: 4, + ProductName: "Chef Anton's Cajun Seasoning", + UnitsInStock: 53, + FirstOrderedOn: new Date(1996, 9, 19) + } +]; diff --git a/vue-options-api-demos/grid/editing/validation/verificationFunctions.js b/vue-options-api-demos/grid/editing/validation/verificationFunctions.js new file mode 100644 index 00000000..869fb3fd --- /dev/null +++ b/vue-options-api-demos/grid/editing/validation/verificationFunctions.js @@ -0,0 +1,27 @@ +// Check if the Units field is not empty +const unitsFieldHasValue = value => value === null || value === undefined ? false : true; + +// Check if the value in the Units field is between 0 and 500 +const unitsFieldValueIsInRange = value => value !== null && value >= 0 && value <= 500 ? true : false; + +// Check if the length of the Name is above 3 symbols +const isLengthAboveThree = value => { + if (value === undefined) { + return false; + } + return value.length > 3; +}; + +// Check if the selected date is between 1.1.1995 and 31.12.2022 +const isDateBetweenRange = value => { + const yearOfTheDate = new Date(value).getFullYear(); + + return yearOfTheDate >= 1995 && yearOfTheDate <= 2022 ? true : false; +}; + +export { + unitsFieldHasValue, + unitsFieldValueIsInRange, + isLengthAboveThree, + isDateBetweenRange +}; diff --git a/vue-options-api-demos/grid/excel/main.js b/vue-options-api-demos/grid/excel/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/excel/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/excel/main.vue b/vue-options-api-demos/grid/excel/main.vue new file mode 100644 index 00000000..2d3b14cf --- /dev/null +++ b/vue-options-api-demos/grid/excel/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/grid/filtering/basic/boolean/main.js b/vue-options-api-demos/grid/filtering/basic/boolean/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/boolean/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/basic/boolean/main.vue b/vue-options-api-demos/grid/filtering/basic/boolean/main.vue new file mode 100644 index 00000000..7a3d7194 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/boolean/main.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/grid/filtering/basic/boolean/products.js b/vue-options-api-demos/grid/filtering/basic/boolean/products.js new file mode 100644 index 00000000..ac539009 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/boolean/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/grid/filtering/basic/date/main.js b/vue-options-api-demos/grid/filtering/basic/date/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/date/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/basic/date/main.vue b/vue-options-api-demos/grid/filtering/basic/date/main.vue new file mode 100644 index 00000000..766cc8a8 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/date/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/grid/filtering/basic/date/products.js b/vue-options-api-demos/grid/filtering/basic/date/products.js new file mode 100644 index 00000000..ac539009 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/date/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/grid/filtering/basic/main.js b/vue-options-api-demos/grid/filtering/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/basic/main.vue b/vue-options-api-demos/grid/filtering/basic/main.vue new file mode 100644 index 00000000..bf448934 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/grid/filtering/basic/number/main.js b/vue-options-api-demos/grid/filtering/basic/number/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/number/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/basic/number/main.vue b/vue-options-api-demos/grid/filtering/basic/number/main.vue new file mode 100644 index 00000000..ea6d94eb --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/number/main.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/grid/filtering/basic/number/products.js b/vue-options-api-demos/grid/filtering/basic/number/products.js new file mode 100644 index 00000000..ac539009 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/number/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/grid/filtering/basic/products.js b/vue-options-api-demos/grid/filtering/basic/products.js new file mode 100644 index 00000000..ac539009 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/grid/filtering/basic/string/main.js b/vue-options-api-demos/grid/filtering/basic/string/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/string/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/basic/string/main.vue b/vue-options-api-demos/grid/filtering/basic/string/main.vue new file mode 100644 index 00000000..b8960cc2 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/string/main.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/grid/filtering/basic/string/products.js b/vue-options-api-demos/grid/filtering/basic/string/products.js new file mode 100644 index 00000000..ac539009 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/basic/string/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/grid/filtering/custom/main.js b/vue-options-api-demos/grid/filtering/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/custom/main.vue b/vue-options-api-demos/grid/filtering/custom/main.vue new file mode 100644 index 00000000..333eff22 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/custom/main.vue @@ -0,0 +1,87 @@ + + diff --git a/vue-options-api-demos/grid/filtering/custom/products.js b/vue-options-api-demos/grid/filtering/custom/products.js new file mode 100644 index 00000000..ed1076e6 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/custom/products.js @@ -0,0 +1,185 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts } +; diff --git a/vue-options-api-demos/grid/filtering/external/main.js b/vue-options-api-demos/grid/filtering/external/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/external/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/external/main.vue b/vue-options-api-demos/grid/filtering/external/main.vue new file mode 100644 index 00000000..f4870737 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/external/main.vue @@ -0,0 +1,114 @@ + + + diff --git a/vue-options-api-demos/grid/filtering/external/products.js b/vue-options-api-demos/grid/filtering/external/products.js new file mode 100644 index 00000000..d9bc9855 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/external/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + ProductID: 1, + ProductName: "Chai", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "10 boxes x 20 bags", + UnitPrice: 18, + UnitsInStock: 39, + UnitsOnOrder: 0, + ReorderLevel: 10, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 8, 20) + }, + { + ProductID: 2, + ProductName: "Chang", + SupplierID: 1, + CategoryID: 1, + QuantityPerUnit: "24 - 12 oz bottles", + UnitPrice: 19, + UnitsInStock: 17, + UnitsOnOrder: 40, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 1, + CategoryName: "Beverages", + Description: "Soft drinks, coffees, teas, beers, and ales" + }, + FirstOrderedOn: new Date(1996, 7, 12) + }, + { + ProductID: 3, + ProductName: "Aniseed Syrup", + SupplierID: 1, + CategoryID: 2, + QuantityPerUnit: "12 - 550 ml bottles", + UnitPrice: 10, + UnitsInStock: 13, + UnitsOnOrder: 70, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 8, 26) + }, + { + ProductID: 4, + ProductName: "Chef Anton's Cajun Seasoning", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "48 - 6 oz jars", + UnitPrice: 22, + UnitsInStock: 53, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 9, 19) + }, + { + ProductID: 5, + ProductName: "Chef Anton's Gumbo Mix", + SupplierID: 2, + CategoryID: 2, + QuantityPerUnit: "36 boxes", + UnitPrice: 21.35, + UnitsInStock: 0, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: true, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 7, 17) + }, + { + ProductID: 6, + ProductName: "Grandma's Boysenberry Spread", + SupplierID: 3, + CategoryID: 2, + QuantityPerUnit: "12 - 8 oz jars", + UnitPrice: 25, + UnitsInStock: 120, + UnitsOnOrder: 0, + ReorderLevel: 25, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 9, 19) + }, + { + ProductID: 7, + ProductName: "Uncle Bob's Organic Dried Pears", + SupplierID: 3, + CategoryID: 7, + QuantityPerUnit: "12 - 1 lb pkgs.", + UnitPrice: 30, + UnitsInStock: 15, + UnitsOnOrder: 0, + ReorderLevel: 10, + Discontinued: false, + Category: { + CategoryID: 7, + CategoryName: "Produce", + Description: "Dried fruit and bean curd" + }, + FirstOrderedOn: new Date(1996, 7, 22) + }, + { + ProductID: 8, + ProductName: "Northwoods Cranberry Sauce", + SupplierID: 3, + CategoryID: 2, + QuantityPerUnit: "12 - 12 oz jars", + UnitPrice: 40, + UnitsInStock: 6, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 2, + CategoryName: "Condiments", + Description: "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + FirstOrderedOn: new Date(1996, 11, 1) + }, + { + ProductID: 9, + ProductName: "Mishi Kobe Niku", + SupplierID: 4, + CategoryID: 6, + QuantityPerUnit: "18 - 500 g pkgs.", + UnitPrice: 97, + UnitsInStock: 29, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: true, + Category: { + CategoryID: 6, + CategoryName: "Meat/Poultry", + Description: "Prepared meats" + }, + FirstOrderedOn: new Date(1997, 1, 21) + }, + { + ProductID: 10, + ProductName: "Ikura", + SupplierID: 4, + CategoryID: 8, + QuantityPerUnit: "12 - 200 ml jars", + UnitPrice: 31, + UnitsInStock: 31, + UnitsOnOrder: 0, + ReorderLevel: 0, + Discontinued: false, + Category: { + CategoryID: 8, + CategoryName: "Seafood", + Description: "Seaweed and fish" + }, + FirstOrderedOn: new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.js b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.vue b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.vue new file mode 100644 index 00000000..e4dae78b --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.vue @@ -0,0 +1,104 @@ + + diff --git a/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/products.js b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/products.js new file mode 100644 index 00000000..2055df16 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/products.js @@ -0,0 +1,185 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts } + ; diff --git a/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.js b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.vue b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.vue new file mode 100644 index 00000000..8901d3a4 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.vue @@ -0,0 +1,96 @@ + + diff --git a/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/products.js b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/products.js new file mode 100644 index 00000000..2055df16 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/products.js @@ -0,0 +1,185 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts } + ; diff --git a/vue-options-api-demos/grid/filtering/row/custom-switch/main.js b/vue-options-api-demos/grid/filtering/row/custom-switch/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-switch/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/row/custom-switch/main.vue b/vue-options-api-demos/grid/filtering/row/custom-switch/main.vue new file mode 100644 index 00000000..289d82e6 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-switch/main.vue @@ -0,0 +1,86 @@ + + diff --git a/vue-options-api-demos/grid/filtering/row/custom-switch/products.js b/vue-options-api-demos/grid/filtering/row/custom-switch/products.js new file mode 100644 index 00000000..2055df16 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/row/custom-switch/products.js @@ -0,0 +1,185 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts } + ; diff --git a/vue-options-api-demos/grid/filtering/select-filter-type/main.js b/vue-options-api-demos/grid/filtering/select-filter-type/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/filtering/select-filter-type/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/filtering/select-filter-type/main.vue b/vue-options-api-demos/grid/filtering/select-filter-type/main.vue new file mode 100644 index 00000000..92e0131c --- /dev/null +++ b/vue-options-api-demos/grid/filtering/select-filter-type/main.vue @@ -0,0 +1,92 @@ + + diff --git a/vue-options-api-demos/grid/filtering/select-filter-type/products.js b/vue-options-api-demos/grid/filtering/select-filter-type/products.js new file mode 100644 index 00000000..ac539009 --- /dev/null +++ b/vue-options-api-demos/grid/filtering/select-filter-type/products.js @@ -0,0 +1,184 @@ +const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; + +export { sampleProducts }; diff --git a/vue-options-api-demos/grid/globalization/main.js b/vue-options-api-demos/grid/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/globalization/main.vue b/vue-options-api-demos/grid/globalization/main.vue new file mode 100644 index 00000000..37ab4830 --- /dev/null +++ b/vue-options-api-demos/grid/globalization/main.vue @@ -0,0 +1,167 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/grouping/aggregates/CellComponent.vue b/vue-options-api-demos/grid/grouping/aggregates/CellComponent.vue new file mode 100644 index 00000000..ac300691 --- /dev/null +++ b/vue-options-api-demos/grid/grouping/aggregates/CellComponent.vue @@ -0,0 +1,96 @@ + + diff --git a/vue-options-api-demos/grid/grouping/aggregates/main.js b/vue-options-api-demos/grid/grouping/aggregates/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/grouping/aggregates/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/grouping/aggregates/main.vue b/vue-options-api-demos/grid/grouping/aggregates/main.vue new file mode 100644 index 00000000..e895f15d --- /dev/null +++ b/vue-options-api-demos/grid/grouping/aggregates/main.vue @@ -0,0 +1,138 @@ + + diff --git a/vue-options-api-demos/grid/grouping/basic/main.js b/vue-options-api-demos/grid/grouping/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/grouping/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/grouping/basic/main.vue b/vue-options-api-demos/grid/grouping/basic/main.vue new file mode 100644 index 00000000..80618318 --- /dev/null +++ b/vue-options-api-demos/grid/grouping/basic/main.vue @@ -0,0 +1,117 @@ + + diff --git a/vue-options-api-demos/grid/grouping/virtual/main.js b/vue-options-api-demos/grid/grouping/virtual/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/grouping/virtual/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/grouping/virtual/main.vue b/vue-options-api-demos/grid/grouping/virtual/main.vue new file mode 100644 index 00000000..e0852f47 --- /dev/null +++ b/vue-options-api-demos/grid/grouping/virtual/main.vue @@ -0,0 +1,117 @@ + + diff --git a/vue-options-api-demos/grid/grouping/virtual/products.js b/vue-options-api-demos/grid/grouping/virtual/products.js new file mode 100644 index 00000000..2a1ce279 --- /dev/null +++ b/vue-options-api-demos/grid/grouping/virtual/products.js @@ -0,0 +1,1313 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +]; + +export { products }; diff --git a/vue-options-api-demos/grid/keyboard-inline/CommandCell.vue b/vue-options-api-demos/grid/keyboard-inline/CommandCell.vue new file mode 100644 index 00000000..c6331e80 --- /dev/null +++ b/vue-options-api-demos/grid/keyboard-inline/CommandCell.vue @@ -0,0 +1,80 @@ + + diff --git a/vue-options-api-demos/grid/keyboard-inline/main.js b/vue-options-api-demos/grid/keyboard-inline/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/keyboard-inline/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/keyboard-inline/main.vue b/vue-options-api-demos/grid/keyboard-inline/main.vue new file mode 100644 index 00000000..b1325a66 --- /dev/null +++ b/vue-options-api-demos/grid/keyboard-inline/main.vue @@ -0,0 +1,199 @@ + + diff --git a/vue-options-api-demos/grid/keyboard-navigation/DetailComponent.vue b/vue-options-api-demos/grid/keyboard-navigation/DetailComponent.vue new file mode 100644 index 00000000..670506c7 --- /dev/null +++ b/vue-options-api-demos/grid/keyboard-navigation/DetailComponent.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/grid/keyboard-navigation/main.js b/vue-options-api-demos/grid/keyboard-navigation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/keyboard-navigation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/keyboard-navigation/main.vue b/vue-options-api-demos/grid/keyboard-navigation/main.vue new file mode 100644 index 00000000..7944474a --- /dev/null +++ b/vue-options-api-demos/grid/keyboard-navigation/main.vue @@ -0,0 +1,109 @@ + + diff --git a/vue-options-api-demos/grid/keyboard-navigation/products.js b/vue-options-api-demos/grid/keyboard-navigation/products.js new file mode 100644 index 00000000..2a1ce279 --- /dev/null +++ b/vue-options-api-demos/grid/keyboard-navigation/products.js @@ -0,0 +1,1313 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0000, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0000, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.2500, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.4500, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5000, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2000, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0000, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0000, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0000, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0000, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0000, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.2300, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9000, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.7900, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.8900, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5000, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0000, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0000, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0000, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0000, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4000, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.6500, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.4500, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5000, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0000, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.7500, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0000, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.2500, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0000, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0000, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8000, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.4500, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0000, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0000, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5000, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.2500, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0000, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0000, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5000, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3000, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9000, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.2500, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.0500, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0000, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5000, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5000, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8000, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0000, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0000, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.7500, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0000, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0000, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } +]; + +export { products }; diff --git a/vue-options-api-demos/grid/live-data/ChangePriceComponent.vue b/vue-options-api-demos/grid/live-data/ChangePriceComponent.vue new file mode 100644 index 00000000..442382f8 --- /dev/null +++ b/vue-options-api-demos/grid/live-data/ChangePriceComponent.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-options-api-demos/grid/live-data/Grid.vue b/vue-options-api-demos/grid/live-data/Grid.vue new file mode 100644 index 00000000..3b264dbd --- /dev/null +++ b/vue-options-api-demos/grid/live-data/Grid.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/vue-options-api-demos/grid/live-data/PriceComponent.vue b/vue-options-api-demos/grid/live-data/PriceComponent.vue new file mode 100644 index 00000000..8f5857f8 --- /dev/null +++ b/vue-options-api-demos/grid/live-data/PriceComponent.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue-options-api-demos/grid/live-data/RatingComponent.vue b/vue-options-api-demos/grid/live-data/RatingComponent.vue new file mode 100644 index 00000000..69ca868f --- /dev/null +++ b/vue-options-api-demos/grid/live-data/RatingComponent.vue @@ -0,0 +1,37 @@ + + + diff --git a/vue-options-api-demos/grid/live-data/TickerComponent.vue b/vue-options-api-demos/grid/live-data/TickerComponent.vue new file mode 100644 index 00000000..74602363 --- /dev/null +++ b/vue-options-api-demos/grid/live-data/TickerComponent.vue @@ -0,0 +1,24 @@ + + diff --git a/vue-options-api-demos/grid/live-data/VolumeComponent.vue b/vue-options-api-demos/grid/live-data/VolumeComponent.vue new file mode 100644 index 00000000..59570470 --- /dev/null +++ b/vue-options-api-demos/grid/live-data/VolumeComponent.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-options-api-demos/grid/live-data/financial-data.js b/vue-options-api-demos/grid/live-data/financial-data.js new file mode 100644 index 00000000..3b068f4e --- /dev/null +++ b/vue-options-api-demos/grid/live-data/financial-data.js @@ -0,0 +1,319 @@ +const eighteenCImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/18C.png'; +const bitcoinImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/Bitcoin.png'; +const busdImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/BUSD.png'; +const ethImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/ETHERIUM.png'; +const eurImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/EUR.png'; +const gbpImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/GBP.png'; +const inchImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/INCH.png'; +const oxImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/OX.png'; +const shibImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/SHIB.png'; +const tetherusImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/TETHERUS.png'; +const usdImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/USD.png'; +const xecImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/XEC.png'; + +export const MOCKFINANCEDATA = [ + { + IndGrou: 'Airlines', + IndSect: 'Consumer, Cyclical', + IndSubg: 'Airlines', + SecType: 'PUBLIC', + CpnTyp: 'FIXED', + IssuerN: 'AMERICAN AIRLINES GROUP', + Moodys: 'WR', + Fitch: 'N.A.', + DBRS: 'N.A.', + CollatT: 'NEW MONEY', + Curncy: 'USD', + Security: '001765866 Pfd', + sector: 'Pfd', + CUSIP: '1765866', + Cpn: '7.875', + Maturity: '7/13/1939', + KRD_3YR: 0.00006, + RISK_COUNTRY: '', + MUNI_SECTOR: '', + ZV_SPREAD: 28.302, + KRD_5YR: 0, + KRD_1YR: -0.00187, + PD_WALA: null, + }, +]; +export const DATA = [ + { + Ticker: 'OX', + Image: oxImage, + Spread: 0.01, + 'Open Price': 1.10345, + Price: 1.10345, + Buy: 1.10445, + Sell: 1.10245, + Change: -0.3683, + 'Change(%)': -0.0287, + Volume: 48387, + 'High(D)': 1.10545, + 'Low(D)': 1.10145, + 'High(Y)': 1.10545, + 'Low(Y)': 1.10145, + 'Start(Y)': 1.10245, + 'Change On Year(%)': 8.8502, + }, + { + Ticker: 'USD', + Image: usdImage, + Type: 'Silver', + Spread: 0.01, + 'Open Price': 17.43, + Price: 17.42, + Buy: 17.43, + Sell: 17.43, + Change: -0.01, + 'Change(%)': -0.0574, + Volume: 11720, + 'High(D)': 17.51, + 'Low(D)': 17.37, + 'High(Y)': 18.06, + 'Low(Y)': 13.73, + 'Start(Y)': 15.895, + 'Change On Year(%)': 9.5942, + }, + { + Ticker: 'SHIB', + Image: shibImage, + Type: 'Copper', + Spread: 0.02, + 'Open Price': 2.123, + Price: 2.113, + Buy: 2.123, + Sell: 2.123, + Change: -0.01, + 'Change(%)': -0.471, + Volume: 28819, + 'High(D)': 2.16, + 'Low(D)': 2.11, + 'High(Y)': 2.94, + 'Low(Y)': 1.96, + 'Start(Y)': 2.45, + 'Change On Year(%)': -13.7551, + }, + { + Ticker: 'TETHERUS', + Image: tetherusImage, + Type: 'Platinum', + Spread: 0.01, + 'Open Price': 1071.6, + Price: 1071.0993, + Buy: 1071.0943, + Sell: 1071.1043, + Change: -0.5007, + 'Change(%)': -0.0467, + Volume: 3039, + 'High(D)': 1081.2, + 'Low(D)': 1070.5, + 'High(Y)': 1120.6, + 'Low(Y)': 812.4, + 'Start(Y)': 966.5, + 'Change On Year(%)': 10.8225, + }, + { + Ticker: 'XEC', + Image: xecImage, + Type: 'Palladium', + Spread: 0.01, + 'Open Price': 600.55, + Price: 601.0005, + Buy: 600.9955, + Sell: 601.0055, + Change: 0.4505, + 'Change(%)': 0.075, + Volume: 651, + 'High(D)': 607.2, + 'Low(D)': 598.4, + 'High(Y)': 690, + 'Low(Y)': 458.6, + 'Start(Y)': 574.3, + 'Change On Year(%)': 4.6492, + }, + { + Ticker: '18C', + Image: eighteenCImage, + Type: 'Oil', + Spread: 0.015, + 'Open Price': 45.54, + Price: 45.7899, + Buy: 45.7824, + Sell: 45.7974, + Change: 0.2499, + 'Change(%)': 0.5487, + Volume: 107196, + 'High(D)': 45.94, + 'Low(D)': 45.0, + 'High(Y)': 65.28, + 'Low(Y)': 30.79, + 'Start(Y)': 48.035, + 'Change On Year(%)': -4.6739, + }, + { + Ticker: 'BITCOIN', + Image: bitcoinImage, + Type: 'Brent', + Spread: 0.01, + 'Open Price': 46.06, + Price: 46.05, + Buy: 46.06, + Sell: 46.06, + Change: -0.01, + 'Change(%)': -0.0217, + Volume: 59818, + 'High(D)': 46.48, + 'Low(D)': 45.6, + 'High(Y)': 71.14, + 'Low(Y)': 30.02, + 'Start(Y)': 50.58, + 'Change On Year(%)': -8.9561, + }, + { + Ticker: 'ETHERIUM', + Image: ethImage, + Type: 'Natural Gas', + Spread: 0.02, + 'Open Price': 2.094, + Price: 2.104, + Buy: 2.094, + Sell: 2.094, + Change: 0.01, + 'Change(%)': 0.4776, + Volume: 2783, + 'High(D)': 2.11, + 'Low(D)': 2.09, + 'High(Y)': 3.2, + 'Low(Y)': 1.84, + 'Start(Y)': 2.52, + 'Change On Year(%)': -16.5079, + }, + { + Ticker: 'INCH', + Image: inchImage, + Type: 'RBOB Gas', + Spread: 0.015, + 'Open Price': 1.5086, + Price: 1.9532, + Buy: 1.9457, + Sell: 1.9607, + Change: 0.4446, + 'Change(%)': 29.4686, + Volume: 2646, + 'High(D)': 1.9532, + 'Low(D)': 1.5, + 'High(Y)': 2.05, + 'Low(Y)': 1.15, + 'Start(Y)': 1.6, + 'Change On Year(%)': 22.0727, + }, + { + Ticker: 'BUSD', + Image: busdImage, + Type: 'Diesel', + Spread: 0.015, + 'Open Price': 1.3474, + Price: 1.3574, + Buy: 1.3474, + Sell: 1.3474, + Change: 0.01, + 'Change(%)': 0.7422, + Volume: 2971, + 'High(D)': 1.36, + 'Low(D)': 1.34, + 'High(Y)': 2.11, + 'Low(Y)': 0.92, + 'Start(Y)': 1.515, + 'Change On Year(%)': -10.4026, + }, + { + Ticker: 'GBP', + Image: gbpImage, + Type: 'Ethanol', + Spread: 0.01, + 'Open Price': 1.512, + Price: 2.7538, + Buy: 2.7488, + Sell: 2.7588, + Change: 1.2418, + 'Change(%)': 82.1323, + Volume: 14, + 'High(D)': 2.7538, + 'Low(D)': 1.1168, + 'High(Y)': 2.7538, + 'Low(Y)': 1.1168, + 'Start(Y)': 1.475, + 'Change On Year(%)': 86.7011, + }, + { + Ticker: 'EUR', + Image: eurImage, + Type: 'Uranium', + Spread: 0.02, + 'Open Price': 27.55, + Price: 27.58, + Buy: 27.55, + Sell: 27.55, + Change: 0.03, + 'Change(%)': 0.1089, + Volume: 12, + 'High(D)': 27.55, + 'Low(D)': 27.55, + 'High(Y)': 29.32, + 'Low(Y)': 21.28, + 'Start(Y)': 25.3, + 'Change On Year(%)': 9.0119, + }, +]; +export class FinancialData { + generateData = (count) => { + const currData = []; + + for (let i = 0; i < count; i++) { + const dataObj = Object.assign({}, DATA[i]); + + for (const mockData of MOCKFINANCEDATA) { + for (const prop in mockData) { + if (mockData.hasOwnProperty(prop)) { + dataObj[prop] = mockData[prop]; + } + } + } + + dataObj.ID = i; + this.randomizeObjectData(dataObj); + currData.push(dataObj); + } + + return currData; + }; + randomizeObjectData = (dataObj) => { + const changeP = 'Change(%)'; + const res = this.generateNewPrice(dataObj.Price); + dataObj.Change = res.Price - dataObj.Price; + dataObj.Price = res.Price; + dataObj[changeP] = res.ChangePercent; + }; + generateNewPrice = (oldPrice) => { + const rnd = parseFloat(Math.random().toFixed(2)); + const volatility = 2; + let newPrice = 0; + let changePercent = 2 * volatility * rnd; + + if (changePercent > volatility) { + changePercent -= 2 * volatility; + } + + const changeAmount = oldPrice * (changePercent / 100); + newPrice = oldPrice + changeAmount; + const result = { + Price: 0, + ChangePercent: 0, + }; + result.Price = parseFloat(newPrice.toFixed(2)); + result.ChangePercent = parseFloat(changePercent.toFixed(2)); + return result; + }; +} diff --git a/vue-options-api-demos/grid/live-data/main.js b/vue-options-api-demos/grid/live-data/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/live-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/live-data/main.vue b/vue-options-api-demos/grid/live-data/main.vue new file mode 100644 index 00000000..59e3abfd --- /dev/null +++ b/vue-options-api-demos/grid/live-data/main.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/vue-options-api-demos/grid/live-data/services.js b/vue-options-api-demos/grid/live-data/services.js new file mode 100644 index 00000000..0ba85ee9 --- /dev/null +++ b/vue-options-api-demos/grid/live-data/services.js @@ -0,0 +1,52 @@ +export const updateRandomPrices = (data) => { + const newData = data.slice(); + + for ( + let i = Math.round(Math.random() * 10); + i < newData.length; + i += Math.round(Math.random() * 10) + ) { + randomizeObjectData(newData[i]); + } + + return newData; +}; +export const updateAllPrices = (data) => { + const newData = data.slice(); + + for (const dataRow of newData) { + randomizeObjectData(dataRow); + } + + return newData; +}; +export const randomizeObjectData = (dataObj) => { + const changeP = 'Change(%)'; + const res = generateNewPrice(dataObj.Price); + dataObj.Change = res.Price - dataObj.Price; + dataObj.Price = res.Price; + dataObj[changeP] = res.ChangePercent; +}; +export const generateNewPrice = (oldPrice) => { + let rnd = Math.random(); + rnd = Math.round(rnd * 100) / 100; + const volatility = 2; + let newPrice = 0; + let changePercent = 2 * volatility * rnd; + + if (changePercent > volatility) { + changePercent -= 2 * volatility; + } + + const changeAmount = oldPrice * (changePercent / 100); + newPrice = oldPrice + changeAmount; + newPrice = Math.round(newPrice * 100) / 100; + const result = { + Price: 0, + ChangePercent: 0, + }; + changePercent = Math.round(changePercent * 100) / 100; + result.Price = newPrice; + result.ChangePercent = changePercent; + return result; +}; diff --git a/vue-options-api-demos/grid/live-data/trends.js b/vue-options-api-demos/grid/live-data/trends.js new file mode 100644 index 00000000..74334aa7 --- /dev/null +++ b/vue-options-api-demos/grid/live-data/trends.js @@ -0,0 +1,18 @@ +export const negative = (rowData) => { + return rowData['Change(%)'] < 0; +}; +export const positive = (rowData) => { + return rowData['Change(%)'] > 0; +}; +export const changeNegative = (rowData) => { + return rowData['Change(%)'] < 0 && rowData['Change(%)'] > -1; +}; +export const changePositive = (rowData) => { + return rowData['Change(%)'] > 0 && rowData['Change(%)'] < 1; +}; +export const strongPositive = (rowData) => { + return rowData['Change(%)'] >= 1; +}; +export const strongNegative = (rowData) => { + return rowData['Change(%)'] <= -1; +}; diff --git a/vue-options-api-demos/grid/live-data/utils.js b/vue-options-api-demos/grid/live-data/utils.js new file mode 100644 index 00000000..2d138a89 --- /dev/null +++ b/vue-options-api-demos/grid/live-data/utils.js @@ -0,0 +1,60 @@ +import { + changeNegative, + changePositive, + negative, + positive, + strongNegative, + strongPositive, +} from './trends'; +export const trends = (dataItem) => { + return { + changeNegative: changeNegative(dataItem), + changePositive: changePositive(dataItem), + negative: negative(dataItem), + positive: positive(dataItem), + strongNegative: strongNegative(dataItem), + strongPositive: strongPositive(dataItem), + }; +}; +export const nFormatter = (num) => { + const lookup = [ + { + value: 1, + symbol: '', + }, + { + value: 1e3, + symbol: 'K', + }, + { + value: 1e6, + symbol: 'M', + }, + { + value: 1e9, + symbol: 'G', + }, + { + value: 1e12, + symbol: 'T', + }, + { + value: 1e15, + symbol: 'P', + }, + { + value: 1e18, + symbol: 'E', + }, + ]; + const rx = /\.0+$|(\.[0-9]*[1-9])0+$/; + let item = lookup + .slice() + .reverse() + .find(function (item) { + return num >= item.value; + }); + return item + ? (num / item.value).toFixed(3).replace(rx, '$1') + item.symbol + : '0'; +}; diff --git a/vue-options-api-demos/grid/paging/basic/main.js b/vue-options-api-demos/grid/paging/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/paging/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/paging/basic/main.vue b/vue-options-api-demos/grid/paging/basic/main.vue new file mode 100644 index 00000000..15d4eff4 --- /dev/null +++ b/vue-options-api-demos/grid/paging/basic/main.vue @@ -0,0 +1,88 @@ + + diff --git a/vue-options-api-demos/grid/paging/types/main.js b/vue-options-api-demos/grid/paging/types/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/paging/types/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/paging/types/main.vue b/vue-options-api-demos/grid/paging/types/main.vue new file mode 100644 index 00000000..0adf76e3 --- /dev/null +++ b/vue-options-api-demos/grid/paging/types/main.vue @@ -0,0 +1,166 @@ + + diff --git a/vue-options-api-demos/grid/pdf/all-pages/main.js b/vue-options-api-demos/grid/pdf/all-pages/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/pdf/all-pages/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/pdf/all-pages/main.vue b/vue-options-api-demos/grid/pdf/all-pages/main.vue new file mode 100644 index 00000000..c5be79f6 --- /dev/null +++ b/vue-options-api-demos/grid/pdf/all-pages/main.vue @@ -0,0 +1,83 @@ + + diff --git a/vue-options-api-demos/grid/pdf/basic/main.js b/vue-options-api-demos/grid/pdf/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/pdf/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/pdf/basic/main.vue b/vue-options-api-demos/grid/pdf/basic/main.vue new file mode 100644 index 00000000..133c53d7 --- /dev/null +++ b/vue-options-api-demos/grid/pdf/basic/main.vue @@ -0,0 +1,83 @@ + + diff --git a/vue-options-api-demos/grid/pdf/custom-columns/main.js b/vue-options-api-demos/grid/pdf/custom-columns/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/pdf/custom-columns/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/pdf/custom-columns/main.vue b/vue-options-api-demos/grid/pdf/custom-columns/main.vue new file mode 100644 index 00000000..a846c981 --- /dev/null +++ b/vue-options-api-demos/grid/pdf/custom-columns/main.vue @@ -0,0 +1,101 @@ + + diff --git a/vue-options-api-demos/grid/pdf/custom-fonts/main.js b/vue-options-api-demos/grid/pdf/custom-fonts/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/pdf/custom-fonts/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/pdf/custom-fonts/main.vue b/vue-options-api-demos/grid/pdf/custom-fonts/main.vue new file mode 100644 index 00000000..115b7f6b --- /dev/null +++ b/vue-options-api-demos/grid/pdf/custom-fonts/main.vue @@ -0,0 +1,84 @@ + + diff --git a/vue-options-api-demos/grid/pdf/custom-fonts/styles.css b/vue-options-api-demos/grid/pdf/custom-fonts/styles.css new file mode 100644 index 00000000..77abc1f8 --- /dev/null +++ b/vue-options-api-demos/grid/pdf/custom-fonts/styles.css @@ -0,0 +1,38 @@ + /* + Use the DejaVu Sans font for displaying and embedding in the PDF file. + The standard PDF fonts do not support Unicode characters. + */ + div { + font-family: "DejaVu Sans", "Arial", sans-serif; + font-size: 12px; + } + + /* + The examples load the DejaVu Sans from the Kendo UI CDN. + Other fonts have to be hosted from your application. + The official site of the Deja Vu Fonts project is + https://dejavu-fonts.github.io/. + */ + @font-face { + font-family: "DejaVu Sans"; + src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans.ttf") format("truetype"); + } + + @font-face { + font-family: "DejaVu Sans"; + font-weight: bold; + src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Bold.ttf") format("truetype"); + } + + @font-face { + font-family: "DejaVu Sans"; + font-style: italic; + src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf") format("truetype"); + } + + @font-face { + font-family: "DejaVu Sans"; + font-weight: bold; + font-style: italic; + src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf") format("truetype"); + } diff --git a/vue-options-api-demos/grid/pdf/fit-content/main.js b/vue-options-api-demos/grid/pdf/fit-content/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/pdf/fit-content/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/pdf/fit-content/main.vue b/vue-options-api-demos/grid/pdf/fit-content/main.vue new file mode 100644 index 00000000..9a1a9210 --- /dev/null +++ b/vue-options-api-demos/grid/pdf/fit-content/main.vue @@ -0,0 +1,86 @@ + + diff --git a/vue-options-api-demos/grid/pdf/page-template/main.js b/vue-options-api-demos/grid/pdf/page-template/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/pdf/page-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/pdf/page-template/main.vue b/vue-options-api-demos/grid/pdf/page-template/main.vue new file mode 100644 index 00000000..b50bb1f6 --- /dev/null +++ b/vue-options-api-demos/grid/pdf/page-template/main.vue @@ -0,0 +1,96 @@ + + diff --git a/vue-options-api-demos/grid/performance/main.js b/vue-options-api-demos/grid/performance/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/performance/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/performance/main.vue b/vue-options-api-demos/grid/performance/main.vue new file mode 100644 index 00000000..1ce99570 --- /dev/null +++ b/vue-options-api-demos/grid/performance/main.vue @@ -0,0 +1,145 @@ + + diff --git a/vue-options-api-demos/grid/persist-state/ColumnMenu.vue b/vue-options-api-demos/grid/persist-state/ColumnMenu.vue new file mode 100644 index 00000000..1c5085e2 --- /dev/null +++ b/vue-options-api-demos/grid/persist-state/ColumnMenu.vue @@ -0,0 +1,190 @@ + + diff --git a/vue-options-api-demos/grid/persist-state/DetailComponent.vue b/vue-options-api-demos/grid/persist-state/DetailComponent.vue new file mode 100644 index 00000000..6758ceac --- /dev/null +++ b/vue-options-api-demos/grid/persist-state/DetailComponent.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/persist-state/es.json b/vue-options-api-demos/grid/persist-state/es.json new file mode 100644 index 00000000..72eb2b1c --- /dev/null +++ b/vue-options-api-demos/grid/persist-state/es.json @@ -0,0 +1,55 @@ +{ + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "numerictextbox": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "grid": { + "groupPanelEmpty": "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio", + "noRecords": "No hay datos disponibles.", + "pagerFirstPage": "Ir a la primera página", + "pagerPreviousPage": "Ir a la página anterior", + "pagerNextPage": "Ir a la página siguiente", + "pagerLastPage": "Ir a la última página", + "pagerPage": "Página", + "pagerOf": "de", + "pagerTotalPages": "{0}", + "pagerItems": "ítems", + "pagerInfo": "{0} - {1} de {2} ítems", + "pagerItemsPerPage": "ítems por página", + "filterEqOperator": "Es igual a", + "filterNotEqOperator": "No es igual a", + "filterIsNullOperator": "Es nulo", + "filterIsNotNullOperator": "No es nulo", + "filterIsEmptyOperator": "Está vacío", + "filterIsNotEmptyOperator": "No está vacío", + "filterStartsWithOperator": "Comienza con", + "filterContainsOperator": "Contiene", + "filterNotContainsOperator": "No contiene", + "filterEndsWithOperator": "Termina en", + "filterGteOperator": "Es mayor o igual que", + "filterGtOperator": "Es mayor que", + "filterLteOperator": "Es menor o igual que", + "filterLtOperator": "Es menor o igual que", + "filterIsTrue": "Sí", + "filterIsFalse": "No", + "filterBooleanAll": "(Todas)", + "filterAfterOrEqualOperator": "Es posterior o igual a", + "filterAfterOperator": "Es posterior", + "filterBeforeOperator": "Es anterior", + "filterBeforeOrEqualOperator": "Es anterior o igual a", + "filterFilterButton": "Filtrar", + "filterClearButton": "Limpiar filtros", + "filterAndLogic": "Y", + "filterOrLogic": "O" + } +} diff --git a/vue-options-api-demos/grid/persist-state/main.js b/vue-options-api-demos/grid/persist-state/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/persist-state/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/persist-state/main.vue b/vue-options-api-demos/grid/persist-state/main.vue new file mode 100644 index 00000000..4940da0b --- /dev/null +++ b/vue-options-api-demos/grid/persist-state/main.vue @@ -0,0 +1,349 @@ + + + diff --git a/vue-options-api-demos/grid/persist-state/orders.json b/vue-options-api-demos/grid/persist-state/orders.json new file mode 100644 index 00000000..9d8d8ac9 --- /dev/null +++ b/vue-options-api-demos/grid/persist-state/orders.json @@ -0,0 +1,25576 @@ +[ + { + "orderID": 10271, + "customerID": "SPLIR", + "employeeID": 6, + "orderDate": "1996-08-01 00:00:00.000", + "requiredDate": "1996-08-29 00:00:00.000", + "shippedDate": "1996-08-30 00:00:00.000", + "shipVia": 2, + "freight": 4.54, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10266, + "customerID": "WARTH", + "employeeID": 3, + "orderDate": "1996-07-26 00:00:00.000", + "requiredDate": "1996-09-06 00:00:00.000", + "shippedDate": "1996-07-31 00:00:00.000", + "shipVia": 3, + "freight": 25.73, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 12, + "unitPrice": 30.4, + "quantity": 12, + "discount": 0.05 + } + ] + }, + { + "orderID": 10279, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1996-08-13 00:00:00.000", + "requiredDate": "1996-09-10 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 2, + "freight": 25.83, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10292, + "customerID": "TRADH", + "employeeID": 1, + "orderDate": "1996-08-28 00:00:00.000", + "requiredDate": "1996-09-25 00:00:00.000", + "shippedDate": "1996-09-02 00:00:00.000", + "shipVia": 2, + "freight": 1.35, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10295, + "customerID": "VINET", + "employeeID": 2, + "orderDate": "1996-09-02 00:00:00.000", + "requiredDate": "1996-09-30 00:00:00.000", + "shippedDate": "1996-09-10 00:00:00.000", + "shipVia": 2, + "freight": 1.15, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10313, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1996-09-24 00:00:00.000", + "requiredDate": "1996-10-22 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 1.96, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10317, + "customerID": "LONEP", + "employeeID": 6, + "orderDate": "1996-09-30 00:00:00.000", + "requiredDate": "1996-10-28 00:00:00.000", + "shippedDate": "1996-10-10 00:00:00.000", + "shipVia": 1, + "freight": 12.69, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10322, + "customerID": "PERIC", + "employeeID": 7, + "orderDate": "1996-10-04 00:00:00.000", + "requiredDate": "1996-11-01 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 3, + "freight": 0.4, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10320, + "customerID": "WARTH", + "employeeID": 5, + "orderDate": "1996-10-03 00:00:00.000", + "requiredDate": "1996-10-17 00:00:00.000", + "shippedDate": "1996-10-18 00:00:00.000", + "shipVia": 3, + "freight": 34.57, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10321, + "customerID": "ISLAT", + "employeeID": 3, + "orderDate": "1996-10-03 00:00:00.000", + "requiredDate": "1996-10-31 00:00:00.000", + "shippedDate": "1996-10-11 00:00:00.000", + "shipVia": 2, + "freight": 3.43, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10336, + "customerID": "PRINI", + "employeeID": 7, + "orderDate": "1996-10-23 00:00:00.000", + "requiredDate": "1996-11-20 00:00:00.000", + "shippedDate": "1996-10-25 00:00:00.000", + "shipVia": 2, + "freight": 15.51, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10349, + "customerID": "SPLIR", + "employeeID": 7, + "orderDate": "1996-11-08 00:00:00.000", + "requiredDate": "1996-12-06 00:00:00.000", + "shippedDate": "1996-11-15 00:00:00.000", + "shipVia": 1, + "freight": 8.63, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10331, + "customerID": "BONAP", + "employeeID": 9, + "orderDate": "1996-10-16 00:00:00.000", + "requiredDate": "1996-11-27 00:00:00.000", + "shippedDate": "1996-10-21 00:00:00.000", + "shipVia": 1, + "freight": 10.19, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10365, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1996-11-27 00:00:00.000", + "requiredDate": "1996-12-25 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 2, + "freight": 22, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10371, + "customerID": "LAMAI", + "employeeID": 1, + "orderDate": "1996-12-03 00:00:00.000", + "requiredDate": "1996-12-31 00:00:00.000", + "shippedDate": "1996-12-24 00:00:00.000", + "shipVia": 1, + "freight": 0.45, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10376, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1996-12-09 00:00:00.000", + "requiredDate": "1997-01-06 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 2, + "freight": 20.39, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 42, + "discount": 0.05 + } + ] + }, + { + "orderID": 10378, + "customerID": "FOLKO", + "employeeID": 5, + "orderDate": "1996-12-10 00:00:00.000", + "requiredDate": "1997-01-07 00:00:00.000", + "shippedDate": "1996-12-19 00:00:00.000", + "shipVia": 3, + "freight": 5.44, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10392, + "customerID": "PICCO", + "employeeID": 2, + "orderDate": "1996-12-24 00:00:00.000", + "requiredDate": "1997-01-21 00:00:00.000", + "shippedDate": "1997-01-01 00:00:00.000", + "shipVia": 3, + "freight": 122.46, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10391, + "customerID": "DRACD", + "employeeID": 3, + "orderDate": "1996-12-23 00:00:00.000", + "requiredDate": "1997-01-20 00:00:00.000", + "shippedDate": "1996-12-31 00:00:00.000", + "shipVia": 3, + "freight": 5.45, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10405, + "customerID": "LINOD", + "employeeID": 1, + "orderDate": "1997-01-06 00:00:00.000", + "requiredDate": "1997-02-03 00:00:00.000", + "shippedDate": "1997-01-22 00:00:00.000", + "shipVia": 1, + "freight": 34.82, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 3, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10412, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-01-13 00:00:00.000", + "requiredDate": "1997-02-10 00:00:00.000", + "shippedDate": "1997-01-15 00:00:00.000", + "shipVia": 2, + "freight": 3.77, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10422, + "customerID": "FRANS", + "employeeID": 2, + "orderDate": "1997-01-22 00:00:00.000", + "requiredDate": "1997-02-19 00:00:00.000", + "shippedDate": "1997-01-31 00:00:00.000", + "shipVia": 1, + "freight": 3.02, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10433, + "customerID": "PRINI", + "employeeID": 3, + "orderDate": "1997-02-03 00:00:00.000", + "requiredDate": "1997-03-03 00:00:00.000", + "shippedDate": "1997-03-04 00:00:00.000", + "shipVia": 3, + "freight": 73.83, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10427, + "customerID": "PICCO", + "employeeID": 4, + "orderDate": "1997-01-27 00:00:00.000", + "requiredDate": "1997-02-24 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 2, + "freight": 31.29, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10437, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-02-05 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-02-12 00:00:00.000", + "shipVia": 1, + "freight": 19.97, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10428, + "customerID": "REGGC", + "employeeID": 7, + "orderDate": "1997-01-28 00:00:00.000", + "requiredDate": "1997-02-25 00:00:00.000", + "shippedDate": "1997-02-04 00:00:00.000", + "shipVia": 1, + "freight": 11.09, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10441, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1997-02-10 00:00:00.000", + "requiredDate": "1997-03-24 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 73.02, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10457, + "customerID": "KOENE", + "employeeID": 2, + "orderDate": "1997-02-25 00:00:00.000", + "requiredDate": "1997-03-25 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 1, + "freight": 11.57, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10478, + "customerID": "VICTE", + "employeeID": 2, + "orderDate": "1997-03-18 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-26 00:00:00.000", + "shipVia": 3, + "freight": 4.81, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10482, + "customerID": "LAZYK", + "employeeID": 1, + "orderDate": "1997-03-21 00:00:00.000", + "requiredDate": "1997-04-18 00:00:00.000", + "shippedDate": "1997-04-10 00:00:00.000", + "shipVia": 3, + "freight": 7.48, + "shipName": "Lazy K Kountry Store", + "shipAddress": { + "street": "12 Orchestra Terrace", + "city": "Walla Walla", + "region": "WA", + "postalCode": 99362, + "country": "USA" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10494, + "customerID": "COMMI", + "employeeID": 4, + "orderDate": "1997-04-02 00:00:00.000", + "requiredDate": "1997-04-30 00:00:00.000", + "shippedDate": "1997-04-09 00:00:00.000", + "shipVia": 2, + "freight": 65.99, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10501, + "customerID": "BLAUS", + "employeeID": 9, + "orderDate": "1997-04-09 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 3, + "freight": 8.85, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10496, + "customerID": "TRADH", + "employeeID": 7, + "orderDate": "1997-04-04 00:00:00.000", + "requiredDate": "1997-05-02 00:00:00.000", + "shippedDate": "1997-04-07 00:00:00.000", + "shipVia": 2, + "freight": 46.77, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10509, + "customerID": "BLAUS", + "employeeID": 4, + "orderDate": "1997-04-17 00:00:00.000", + "requiredDate": "1997-05-15 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 1, + "freight": 0.15, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10505, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-04-14 00:00:00.000", + "requiredDate": "1997-05-12 00:00:00.000", + "shippedDate": "1997-04-21 00:00:00.000", + "shipVia": 3, + "freight": 7.13, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10545, + "customerID": "LAZYK", + "employeeID": 8, + "orderDate": "1997-05-22 00:00:00.000", + "requiredDate": "1997-06-19 00:00:00.000", + "shippedDate": "1997-06-26 00:00:00.000", + "shipVia": 2, + "freight": 11.92, + "shipName": "Lazy K Kountry Store", + "shipAddress": { + "street": "12 Orchestra Terrace", + "city": "Walla Walla", + "region": "WA", + "postalCode": 99362, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10556, + "customerID": "SIMOB", + "employeeID": 2, + "orderDate": "1997-06-03 00:00:00.000", + "requiredDate": "1997-07-15 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 1, + "freight": 9.8, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10568, + "customerID": "GALED", + "employeeID": 3, + "orderDate": "1997-06-13 00:00:00.000", + "requiredDate": "1997-07-11 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 3, + "freight": 6.54, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10581, + "customerID": "FAMIA", + "employeeID": 3, + "orderDate": "1997-06-26 00:00:00.000", + "requiredDate": "1997-07-24 00:00:00.000", + "shippedDate": "1997-07-02 00:00:00.000", + "shipVia": 1, + "freight": 3.01, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10585, + "customerID": "WELLI", + "employeeID": 7, + "orderDate": "1997-07-01 00:00:00.000", + "requiredDate": "1997-07-29 00:00:00.000", + "shippedDate": "1997-07-10 00:00:00.000", + "shipVia": 1, + "freight": 13.41, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10586, + "customerID": "REGGC", + "employeeID": 9, + "orderDate": "1997-07-02 00:00:00.000", + "requiredDate": "1997-07-30 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 1, + "freight": 0.48, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 4, + "discount": 0.15 + } + ] + }, + { + "orderID": 10589, + "customerID": "GREAL", + "employeeID": 8, + "orderDate": "1997-07-04 00:00:00.000", + "requiredDate": "1997-08-01 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 2, + "freight": 4.42, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10584, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1997-06-30 00:00:00.000", + "requiredDate": "1997-07-28 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 1, + "freight": 59.14, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0.05 + } + ] + }, + { + "orderID": 10599, + "customerID": "BSBEV", + "employeeID": 6, + "orderDate": "1997-07-15 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-07-21 00:00:00.000", + "shipVia": 3, + "freight": 29.98, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10602, + "customerID": "VAFFE", + "employeeID": 8, + "orderDate": "1997-07-17 00:00:00.000", + "requiredDate": "1997-08-14 00:00:00.000", + "shippedDate": "1997-07-22 00:00:00.000", + "shipVia": 2, + "freight": 2.92, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 77, + "unitPrice": 13, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10608, + "customerID": "TOMSP", + "employeeID": 4, + "orderDate": "1997-07-23 00:00:00.000", + "requiredDate": "1997-08-20 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 27.79, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10610, + "customerID": "LAMAI", + "employeeID": 8, + "orderDate": "1997-07-25 00:00:00.000", + "requiredDate": "1997-08-22 00:00:00.000", + "shippedDate": "1997-08-06 00:00:00.000", + "shipVia": 1, + "freight": 26.78, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 21, + "discount": 0.25 + } + ] + }, + { + "orderID": 10615, + "customerID": "WILMK", + "employeeID": 2, + "orderDate": "1997-07-30 00:00:00.000", + "requiredDate": "1997-08-27 00:00:00.000", + "shippedDate": "1997-08-06 00:00:00.000", + "shipVia": 3, + "freight": 0.75, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10617, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1997-07-31 00:00:00.000", + "requiredDate": "1997-08-28 00:00:00.000", + "shippedDate": "1997-08-04 00:00:00.000", + "shipVia": 2, + "freight": 18.53, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10628, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1997-08-12 00:00:00.000", + "requiredDate": "1997-09-09 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 3, + "freight": 30.36, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10631, + "customerID": "LAMAI", + "employeeID": 8, + "orderDate": "1997-08-14 00:00:00.000", + "requiredDate": "1997-09-11 00:00:00.000", + "shippedDate": "1997-08-15 00:00:00.000", + "shipVia": 1, + "freight": 0.87, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 8, + "discount": 0.1 + } + ] + }, + { + "orderID": 10639, + "customerID": "SANTG", + "employeeID": 7, + "orderDate": "1997-08-20 00:00:00.000", + "requiredDate": "1997-09-17 00:00:00.000", + "shippedDate": "1997-08-27 00:00:00.000", + "shipVia": 3, + "freight": 38.64, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10655, + "customerID": "REGGC", + "employeeID": 1, + "orderDate": "1997-09-03 00:00:00.000", + "requiredDate": "1997-10-01 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 2, + "freight": 4.41, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10660, + "customerID": "HUNGC", + "employeeID": 8, + "orderDate": "1997-09-08 00:00:00.000", + "requiredDate": "1997-10-06 00:00:00.000", + "shippedDate": "1997-10-15 00:00:00.000", + "shipVia": 1, + "freight": 111.29, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10662, + "customerID": "LONEP", + "employeeID": 3, + "orderDate": "1997-09-09 00:00:00.000", + "requiredDate": "1997-10-07 00:00:00.000", + "shippedDate": "1997-09-18 00:00:00.000", + "shipVia": 2, + "freight": 1.28, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10669, + "customerID": "SIMOB", + "employeeID": 2, + "orderDate": "1997-09-15 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-09-22 00:00:00.000", + "shipVia": 1, + "freight": 24.39, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10679, + "customerID": "BLONP", + "employeeID": 8, + "orderDate": "1997-09-23 00:00:00.000", + "requiredDate": "1997-10-21 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 3, + "freight": 27.94, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10683, + "customerID": "DUMON", + "employeeID": 2, + "orderDate": "1997-09-26 00:00:00.000", + "requiredDate": "1997-10-24 00:00:00.000", + "shippedDate": "1997-10-01 00:00:00.000", + "shipVia": 1, + "freight": 4.4, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10674, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-09-18 00:00:00.000", + "requiredDate": "1997-10-16 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 2, + "freight": 0.9, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10692, + "customerID": "ALFKI", + "employeeID": 4, + "orderDate": "1997-10-03 00:00:00.000", + "requiredDate": "1997-10-31 00:00:00.000", + "shippedDate": "1997-10-13 00:00:00.000", + "shipVia": 2, + "freight": 61.02, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10689, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-10-01 00:00:00.000", + "requiredDate": "1997-10-29 00:00:00.000", + "shippedDate": "1997-10-07 00:00:00.000", + "shipVia": 2, + "freight": 13.42, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10699, + "customerID": "MORGK", + "employeeID": 3, + "orderDate": "1997-10-09 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-13 00:00:00.000", + "shipVia": 3, + "freight": 0.58, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10721, + "customerID": "QUICK", + "employeeID": 5, + "orderDate": "1997-10-29 00:00:00.000", + "requiredDate": "1997-11-26 00:00:00.000", + "shippedDate": "1997-10-31 00:00:00.000", + "shipVia": 3, + "freight": 48.92, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 50, + "discount": 0.05 + } + ] + }, + { + "orderID": 10723, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1997-10-30 00:00:00.000", + "requiredDate": "1997-11-27 00:00:00.000", + "shippedDate": "1997-11-25 00:00:00.000", + "shipVia": 1, + "freight": 21.72, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10738, + "customerID": "SPECD", + "employeeID": 2, + "orderDate": "1997-11-12 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 1, + "freight": 2.91, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10741, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1997-11-14 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 3, + "freight": 10.96, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10732, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1997-11-06 00:00:00.000", + "requiredDate": "1997-12-04 00:00:00.000", + "shippedDate": "1997-11-07 00:00:00.000", + "shipVia": 1, + "freight": 16.97, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10743, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-11-17 00:00:00.000", + "requiredDate": "1997-12-15 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 23.72, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 46, + "unitPrice": 12, + "quantity": 28, + "discount": 0.05 + } + ] + }, + { + "orderID": 10754, + "customerID": "MAGAA", + "employeeID": 6, + "orderDate": "1997-11-25 00:00:00.000", + "requiredDate": "1997-12-23 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 3, + "freight": 2.38, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10744, + "customerID": "VAFFE", + "employeeID": 6, + "orderDate": "1997-11-17 00:00:00.000", + "requiredDate": "1997-12-15 00:00:00.000", + "shippedDate": "1997-11-24 00:00:00.000", + "shipVia": 1, + "freight": 69.19, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10765, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1997-12-04 00:00:00.000", + "requiredDate": "1998-01-01 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 3, + "freight": 42.74, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 80, + "discount": 0.1 + } + ] + }, + { + "orderID": 10770, + "customerID": "HANAR", + "employeeID": 8, + "orderDate": "1997-12-09 00:00:00.000", + "requiredDate": "1998-01-06 00:00:00.000", + "shippedDate": "1997-12-17 00:00:00.000", + "shipVia": 3, + "freight": 5.32, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10771, + "customerID": "ERNSH", + "employeeID": 9, + "orderDate": "1997-12-10 00:00:00.000", + "requiredDate": "1998-01-07 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 2, + "freight": 11.19, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10767, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1997-12-05 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 3, + "freight": 1.59, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10782, + "customerID": "CACTU", + "employeeID": 9, + "orderDate": "1997-12-17 00:00:00.000", + "requiredDate": "1998-01-14 00:00:00.000", + "shippedDate": "1997-12-22 00:00:00.000", + "shipVia": 3, + "freight": 1.1, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10777, + "customerID": "GOURL", + "employeeID": 7, + "orderDate": "1997-12-15 00:00:00.000", + "requiredDate": "1997-12-29 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 2, + "freight": 3.01, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10778, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1998-01-13 00:00:00.000", + "shippedDate": "1997-12-24 00:00:00.000", + "shipVia": 1, + "freight": 6.79, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10797, + "customerID": "DRACD", + "employeeID": 7, + "orderDate": "1997-12-25 00:00:00.000", + "requiredDate": "1998-01-22 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 2, + "freight": 33.35, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10807, + "customerID": "FRANS", + "employeeID": 4, + "orderDate": "1997-12-31 00:00:00.000", + "requiredDate": "1998-01-28 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 1.36, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10809, + "customerID": "WELLI", + "employeeID": 7, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 1, + "freight": 4.87, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10815, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 3, + "freight": 14.62, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10820, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 37.52, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10843, + "customerID": "VICTE", + "employeeID": 4, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-18 00:00:00.000", + "shippedDate": "1998-01-26 00:00:00.000", + "shipVia": 2, + "freight": 9.26, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 4, + "discount": 0.25 + } + ] + }, + { + "orderID": 10844, + "customerID": "PICCO", + "employeeID": 8, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-18 00:00:00.000", + "shippedDate": "1998-01-26 00:00:00.000", + "shipVia": 2, + "freight": 25.22, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10853, + "customerID": "BLAUS", + "employeeID": 9, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-03 00:00:00.000", + "shipVia": 2, + "freight": 53.83, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10874, + "customerID": "GODOS", + "employeeID": 5, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-02-11 00:00:00.000", + "shipVia": 2, + "freight": 19.58, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10867, + "customerID": "LONEP", + "employeeID": 6, + "orderDate": "1998-02-03 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-11 00:00:00.000", + "shipVia": 1, + "freight": 1.93, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10878, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-10 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 46.69, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10883, + "customerID": "LONEP", + "employeeID": 8, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 3, + "freight": 0.53, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10887, + "customerID": "GALED", + "employeeID": 8, + "orderDate": "1998-02-13 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-02-16 00:00:00.000", + "shipVia": 3, + "freight": 1.25, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10891, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1998-02-17 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 2, + "freight": 20.37, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10892, + "customerID": "MAISD", + "employeeID": 4, + "orderDate": "1998-02-17 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 2, + "freight": 120.27, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10881, + "customerID": "CACTU", + "employeeID": 4, + "orderDate": "1998-02-11 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 2.84, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 73, + "unitPrice": 15, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10900, + "customerID": "WELLI", + "employeeID": 1, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 2, + "freight": 1.66, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 3, + "discount": 0.25 + } + ] + }, + { + "orderID": 10905, + "customerID": "WELLI", + "employeeID": 9, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 13.72, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10914, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 1, + "freight": 21.19, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10906, + "customerID": "WOLZA", + "employeeID": 4, + "orderDate": "1998-02-25 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 3, + "freight": 26.29, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10907, + "customerID": "SPECD", + "employeeID": 6, + "orderDate": "1998-02-25 00:00:00.000", + "requiredDate": "1998-03-25 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 9.19, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10920, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-03-31 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 2, + "freight": 29.61, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10934, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-12 00:00:00.000", + "shipVia": 3, + "freight": 32.01, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10936, + "customerID": "GREAL", + "employeeID": 3, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 2, + "freight": 33.68, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10942, + "customerID": "REGGC", + "employeeID": 9, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 17.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 49, + "unitPrice": 20, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10947, + "customerID": "BSBEV", + "employeeID": 3, + "orderDate": "1998-03-13 00:00:00.000", + "requiredDate": "1998-04-10 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 2, + "freight": 3.26, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10955, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-03-17 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-20 00:00:00.000", + "shipVia": 2, + "freight": 3.26, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 12, + "discount": 0.2 + } + ] + }, + { + "orderID": 10950, + "customerID": "MAGAA", + "employeeID": 1, + "orderDate": "1998-03-16 00:00:00.000", + "requiredDate": "1998-04-13 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 2, + "freight": 2.5, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10963, + "customerID": "FURIB", + "employeeID": 9, + "orderDate": "1998-03-19 00:00:00.000", + "requiredDate": "1998-04-16 00:00:00.000", + "shippedDate": "1998-03-26 00:00:00.000", + "shipVia": 3, + "freight": 2.7, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 60, + "unitPrice": 34, + "quantity": 2, + "discount": 0.15 + } + ] + }, + { + "orderID": 10969, + "customerID": "COMMI", + "employeeID": 1, + "orderDate": "1998-03-23 00:00:00.000", + "requiredDate": "1998-04-20 00:00:00.000", + "shippedDate": "1998-03-30 00:00:00.000", + "shipVia": 2, + "freight": 0.21, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 46, + "unitPrice": 12, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10970, + "customerID": "BOLID", + "employeeID": 9, + "orderDate": "1998-03-24 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-04-24 00:00:00.000", + "shipVia": 1, + "freight": 16.16, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10971, + "customerID": "FRANR", + "employeeID": 2, + "orderDate": "1998-03-24 00:00:00.000", + "requiredDate": "1998-04-21 00:00:00.000", + "shippedDate": "1998-04-02 00:00:00.000", + "shipVia": 2, + "freight": 121.82, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10965, + "customerID": "OLDWO", + "employeeID": 6, + "orderDate": "1998-03-20 00:00:00.000", + "requiredDate": "1998-04-17 00:00:00.000", + "shippedDate": "1998-03-30 00:00:00.000", + "shipVia": 3, + "freight": 144.38, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10974, + "customerID": "SPLIR", + "employeeID": 3, + "orderDate": "1998-03-25 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-04-03 00:00:00.000", + "shipVia": 3, + "freight": 12.96, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10980, + "customerID": "FOLKO", + "employeeID": 4, + "orderDate": "1998-03-27 00:00:00.000", + "requiredDate": "1998-05-08 00:00:00.000", + "shippedDate": "1998-04-17 00:00:00.000", + "shipVia": 1, + "freight": 1.26, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10981, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1998-03-27 00:00:00.000", + "requiredDate": "1998-04-24 00:00:00.000", + "shippedDate": "1998-04-02 00:00:00.000", + "shipVia": 2, + "freight": 193.37, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10959, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1998-03-18 00:00:00.000", + "requiredDate": "1998-04-29 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 2, + "freight": 4.98, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10992, + "customerID": "THEBI", + "employeeID": 1, + "orderDate": "1998-04-01 00:00:00.000", + "requiredDate": "1998-04-29 00:00:00.000", + "shippedDate": "1998-04-03 00:00:00.000", + "shipVia": 3, + "freight": 4.27, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10994, + "customerID": "VAFFE", + "employeeID": 2, + "orderDate": "1998-04-02 00:00:00.000", + "requiredDate": "1998-04-16 00:00:00.000", + "shippedDate": "1998-04-09 00:00:00.000", + "shipVia": 3, + "freight": 65.53, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 18, + "discount": 0.05 + } + ] + }, + { + "orderID": 10996, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1998-04-02 00:00:00.000", + "requiredDate": "1998-04-30 00:00:00.000", + "shippedDate": "1998-04-10 00:00:00.000", + "shipVia": 2, + "freight": 1.12, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 11014, + "customerID": "LINOD", + "employeeID": 2, + "orderDate": "1998-04-10 00:00:00.000", + "requiredDate": "1998-05-08 00:00:00.000", + "shippedDate": "1998-04-15 00:00:00.000", + "shipVia": 3, + "freight": 23.6, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 28, + "discount": 0.1 + } + ] + }, + { + "orderID": 11020, + "customerID": "OTTIK", + "employeeID": 2, + "orderDate": "1998-04-14 00:00:00.000", + "requiredDate": "1998-05-12 00:00:00.000", + "shippedDate": "1998-04-16 00:00:00.000", + "shipVia": 2, + "freight": 43.3, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 24, + "discount": 0.15 + } + ] + }, + { + "orderID": 11040, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-04-22 00:00:00.000", + "requiredDate": "1998-05-20 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 18.84, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 11043, + "customerID": "SPECD", + "employeeID": 5, + "orderDate": "1998-04-22 00:00:00.000", + "requiredDate": "1998-05-20 00:00:00.000", + "shippedDate": "1998-04-29 00:00:00.000", + "shipVia": 2, + "freight": 8.8, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 11044, + "customerID": "WOLZA", + "employeeID": 4, + "orderDate": "1998-04-23 00:00:00.000", + "requiredDate": "1998-05-21 00:00:00.000", + "shippedDate": "1998-05-01 00:00:00.000", + "shipVia": 1, + "freight": 8.72, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 11048, + "customerID": "BOTTM", + "employeeID": 7, + "orderDate": "1998-04-24 00:00:00.000", + "requiredDate": "1998-05-22 00:00:00.000", + "shippedDate": "1998-04-30 00:00:00.000", + "shipVia": 3, + "freight": 24.12, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 42, + "discount": 0 + } + ] + }, + { + "orderID": 11037, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1998-04-21 00:00:00.000", + "requiredDate": "1998-05-19 00:00:00.000", + "shippedDate": "1998-04-27 00:00:00.000", + "shipVia": 1, + "freight": 3.2, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 11050, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-04-27 00:00:00.000", + "requiredDate": "1998-05-25 00:00:00.000", + "shippedDate": "1998-05-05 00:00:00.000", + "shipVia": 2, + "freight": 59.41, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0.1 + } + ] + }, + { + "orderID": 11057, + "customerID": "NORTS", + "employeeID": 3, + "orderDate": "1998-04-29 00:00:00.000", + "requiredDate": "1998-05-27 00:00:00.000", + "shippedDate": "1998-05-01 00:00:00.000", + "shipVia": 3, + "freight": 4.13, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 11061, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-04-30 00:00:00.000", + "requiredDate": "1998-06-11 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 14.01, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 11051, + "customerID": "LAMAI", + "employeeID": 7, + "orderDate": "1998-04-27 00:00:00.000", + "requiredDate": "1998-05-25 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 2.79, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 11067, + "customerID": "DRACD", + "employeeID": 1, + "orderDate": "1998-05-04 00:00:00.000", + "requiredDate": "1998-05-18 00:00:00.000", + "shippedDate": "1998-05-06 00:00:00.000", + "shipVia": 2, + "freight": 7.98, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 11069, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1998-05-04 00:00:00.000", + "requiredDate": "1998-06-01 00:00:00.000", + "shippedDate": "1998-05-06 00:00:00.000", + "shipVia": 2, + "freight": 15.67, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 11074, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1998-05-06 00:00:00.000", + "requiredDate": "1998-06-03 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 2, + "freight": 18.44, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10248, + "customerID": "VINET", + "employeeID": 5, + "orderDate": "1996-07-04 00:00:00.000", + "requiredDate": "1996-08-01 00:00:00.000", + "shippedDate": "1996-07-16 00:00:00.000", + "shipVia": 3, + "freight": 32.38, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 14, + "quantity": 12, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 9.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10249, + "customerID": "TOMSP", + "employeeID": 6, + "orderDate": "1996-07-05 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-10 00:00:00.000", + "shipVia": 1, + "freight": 11.61, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 9, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10250, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1996-07-08 00:00:00.000", + "requiredDate": "1996-08-05 00:00:00.000", + "shippedDate": "1996-07-12 00:00:00.000", + "shipVia": 2, + "freight": 65.83, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10252, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1996-07-09 00:00:00.000", + "requiredDate": "1996-08-06 00:00:00.000", + "shippedDate": "1996-07-11 00:00:00.000", + "shipVia": 2, + "freight": 51.3, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10253, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1996-07-10 00:00:00.000", + "requiredDate": "1996-07-24 00:00:00.000", + "shippedDate": "1996-07-16 00:00:00.000", + "shipVia": 2, + "freight": 58.17, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 42, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10251, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1996-07-08 00:00:00.000", + "requiredDate": "1996-08-05 00:00:00.000", + "shippedDate": "1996-07-15 00:00:00.000", + "shipVia": 1, + "freight": 41.34, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 22, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0.05 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10257, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1996-07-16 00:00:00.000", + "requiredDate": "1996-08-13 00:00:00.000", + "shippedDate": "1996-07-22 00:00:00.000", + "shipVia": 3, + "freight": 81.91, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 25, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10258, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1996-07-17 00:00:00.000", + "requiredDate": "1996-08-14 00:00:00.000", + "shippedDate": "1996-07-23 00:00:00.000", + "shipVia": 1, + "freight": 140.51, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 5, + "unitPrice": 17, + "quantity": 65, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10259, + "customerID": "CENTC", + "employeeID": 4, + "orderDate": "1996-07-18 00:00:00.000", + "requiredDate": "1996-08-15 00:00:00.000", + "shippedDate": "1996-07-25 00:00:00.000", + "shipVia": 3, + "freight": 3.25, + "shipName": "Centro comercial Moctezuma", + "shipAddress": { + "street": "Sierras de Granada 9993", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5022, + "country": "Mexico" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10260, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1996-07-19 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-29 00:00:00.000", + "shipVia": 1, + "freight": 55.09, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 16, + "discount": 0.25 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 50, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 21, + "discount": 0.25 + } + ] + }, + { + "orderID": 10261, + "customerID": "QUEDE", + "employeeID": 4, + "orderDate": "1996-07-19 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-30 00:00:00.000", + "shipVia": 2, + "freight": 3.05, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10262, + "customerID": "RATTC", + "employeeID": 8, + "orderDate": "1996-07-22 00:00:00.000", + "requiredDate": "1996-08-19 00:00:00.000", + "shippedDate": "1996-07-25 00:00:00.000", + "shipVia": 3, + "freight": 48.29, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 5, + "unitPrice": 17, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 7, + "unitPrice": 24, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10256, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1996-07-15 00:00:00.000", + "requiredDate": "1996-08-12 00:00:00.000", + "shippedDate": "1996-07-17 00:00:00.000", + "shipVia": 2, + "freight": 13.97, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10255, + "customerID": "RICSU", + "employeeID": 9, + "orderDate": "1996-07-12 00:00:00.000", + "requiredDate": "1996-08-09 00:00:00.000", + "shippedDate": "1996-07-15 00:00:00.000", + "shipVia": 3, + "freight": 148.33, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 35, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10264, + "customerID": "FOLKO", + "employeeID": 6, + "orderDate": "1996-07-24 00:00:00.000", + "requiredDate": "1996-08-21 00:00:00.000", + "shippedDate": "1996-08-23 00:00:00.000", + "shipVia": 3, + "freight": 3.67, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 35, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10265, + "customerID": "BLONP", + "employeeID": 2, + "orderDate": "1996-07-25 00:00:00.000", + "requiredDate": "1996-08-22 00:00:00.000", + "shippedDate": "1996-08-12 00:00:00.000", + "shipVia": 1, + "freight": 55.28, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10254, + "customerID": "CHOPS", + "employeeID": 5, + "orderDate": "1996-07-11 00:00:00.000", + "requiredDate": "1996-08-08 00:00:00.000", + "shippedDate": "1996-07-23 00:00:00.000", + "shipVia": 2, + "freight": 22.98, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10263, + "customerID": "ERNSH", + "employeeID": 9, + "orderDate": "1996-07-23 00:00:00.000", + "requiredDate": "1996-08-20 00:00:00.000", + "shippedDate": "1996-07-31 00:00:00.000", + "shipVia": 3, + "freight": 146.06, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 28, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 36, + "discount": 0.25 + } + ] + }, + { + "orderID": 10268, + "customerID": "GROSR", + "employeeID": 8, + "orderDate": "1996-07-30 00:00:00.000", + "requiredDate": "1996-08-27 00:00:00.000", + "shippedDate": "1996-08-02 00:00:00.000", + "shipVia": 3, + "freight": 66.29, + "shipName": "GROSELLA-Restaurante", + "shipAddress": { + "street": "5ª Ave. Los Palos Grandes", + "city": "Caracas", + "region": "DF", + "postalCode": 1081, + "country": "Venezuela" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10267, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-07-29 00:00:00.000", + "requiredDate": "1996-08-26 00:00:00.000", + "shippedDate": "1996-08-06 00:00:00.000", + "shipVia": 1, + "freight": 208.58, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 50, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10270, + "customerID": "WARTH", + "employeeID": 1, + "orderDate": "1996-08-01 00:00:00.000", + "requiredDate": "1996-08-29 00:00:00.000", + "shippedDate": "1996-08-02 00:00:00.000", + "shipVia": 1, + "freight": 136.54, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10274, + "customerID": "VINET", + "employeeID": 6, + "orderDate": "1996-08-06 00:00:00.000", + "requiredDate": "1996-09-03 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 1, + "freight": 6.01, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10275, + "customerID": "MAGAA", + "employeeID": 1, + "orderDate": "1996-08-07 00:00:00.000", + "requiredDate": "1996-09-04 00:00:00.000", + "shippedDate": "1996-08-09 00:00:00.000", + "shipVia": 1, + "freight": 26.93, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 6, + "discount": 0.05 + } + ] + }, + { + "orderID": 10276, + "customerID": "TORTU", + "employeeID": 8, + "orderDate": "1996-08-08 00:00:00.000", + "requiredDate": "1996-08-22 00:00:00.000", + "shippedDate": "1996-08-14 00:00:00.000", + "shipVia": 3, + "freight": 13.84, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10277, + "customerID": "MORGK", + "employeeID": 2, + "orderDate": "1996-08-09 00:00:00.000", + "requiredDate": "1996-09-06 00:00:00.000", + "shippedDate": "1996-08-13 00:00:00.000", + "shipVia": 3, + "freight": 125.77, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10273, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1996-08-05 00:00:00.000", + "requiredDate": "1996-09-02 00:00:00.000", + "shippedDate": "1996-08-12 00:00:00.000", + "shipVia": 3, + "freight": 76.07, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 33, + "discount": 0.05 + }, + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10272, + "customerID": "RATTC", + "employeeID": 6, + "orderDate": "1996-08-02 00:00:00.000", + "requiredDate": "1996-08-30 00:00:00.000", + "shippedDate": "1996-08-06 00:00:00.000", + "shipVia": 2, + "freight": 98.03, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10278, + "customerID": "BERGS", + "employeeID": 8, + "orderDate": "1996-08-12 00:00:00.000", + "requiredDate": "1996-09-09 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 2, + "freight": 92.69, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 73, + "unitPrice": 12, + "quantity": 25, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 15, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 8, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10269, + "customerID": "WHITC", + "employeeID": 5, + "orderDate": "1996-07-31 00:00:00.000", + "requiredDate": "1996-08-14 00:00:00.000", + "shippedDate": "1996-08-09 00:00:00.000", + "shipVia": 1, + "freight": 4.56, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10280, + "customerID": "BERGS", + "employeeID": 2, + "orderDate": "1996-08-14 00:00:00.000", + "requiredDate": "1996-09-11 00:00:00.000", + "shippedDate": "1996-09-12 00:00:00.000", + "shipVia": 1, + "freight": 8.98, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 12, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10281, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1996-08-14 00:00:00.000", + "requiredDate": "1996-08-28 00:00:00.000", + "shippedDate": "1996-08-21 00:00:00.000", + "shipVia": 1, + "freight": 2.94, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 1, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10282, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1996-08-15 00:00:00.000", + "requiredDate": "1996-09-12 00:00:00.000", + "shippedDate": "1996-08-21 00:00:00.000", + "shipVia": 1, + "freight": 12.69, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10283, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-08-16 00:00:00.000", + "requiredDate": "1996-09-13 00:00:00.000", + "shippedDate": "1996-08-23 00:00:00.000", + "shipVia": 3, + "freight": 84.81, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 15, + "unitPrice": 12.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 18, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 3, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10284, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1996-08-19 00:00:00.000", + "requiredDate": "1996-09-16 00:00:00.000", + "shippedDate": "1996-08-27 00:00:00.000", + "shipVia": 1, + "freight": 76.56, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 21, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 67, + "unitPrice": 11.2, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10285, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1996-08-20 00:00:00.000", + "requiredDate": "1996-09-17 00:00:00.000", + "shippedDate": "1996-08-26 00:00:00.000", + "shipVia": 2, + "freight": 76.83, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 36, + "discount": 0.2 + } + ] + }, + { + "orderID": 10286, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1996-08-21 00:00:00.000", + "requiredDate": "1996-09-18 00:00:00.000", + "shippedDate": "1996-08-30 00:00:00.000", + "shipVia": 3, + "freight": 229.24, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 100, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10287, + "customerID": "RICAR", + "employeeID": 8, + "orderDate": "1996-08-22 00:00:00.000", + "requiredDate": "1996-09-19 00:00:00.000", + "shippedDate": "1996-08-28 00:00:00.000", + "shipVia": 3, + "freight": 12.76, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10288, + "customerID": "REGGC", + "employeeID": 4, + "orderDate": "1996-08-23 00:00:00.000", + "requiredDate": "1996-09-20 00:00:00.000", + "shippedDate": "1996-09-03 00:00:00.000", + "shipVia": 1, + "freight": 7.45, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 3, + "discount": 0.1 + } + ] + }, + { + "orderID": 10289, + "customerID": "BSBEV", + "employeeID": 7, + "orderDate": "1996-08-26 00:00:00.000", + "requiredDate": "1996-09-23 00:00:00.000", + "shippedDate": "1996-08-28 00:00:00.000", + "shipVia": 3, + "freight": 22.77, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 3, + "unitPrice": 8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10290, + "customerID": "COMMI", + "employeeID": 8, + "orderDate": "1996-08-27 00:00:00.000", + "requiredDate": "1996-09-24 00:00:00.000", + "shippedDate": "1996-09-03 00:00:00.000", + "shipVia": 1, + "freight": 79.7, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 5, + "unitPrice": 17, + "quantity": 20, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 15, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10291, + "customerID": "QUEDE", + "employeeID": 6, + "orderDate": "1996-08-27 00:00:00.000", + "requiredDate": "1996-09-24 00:00:00.000", + "shippedDate": "1996-09-04 00:00:00.000", + "shipVia": 2, + "freight": 6.4, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 24, + "discount": 0.1 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10296, + "customerID": "LILAS", + "employeeID": 6, + "orderDate": "1996-09-03 00:00:00.000", + "requiredDate": "1996-10-01 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 1, + "freight": 0.12, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10297, + "customerID": "BLONP", + "employeeID": 5, + "orderDate": "1996-09-04 00:00:00.000", + "requiredDate": "1996-10-16 00:00:00.000", + "shippedDate": "1996-09-10 00:00:00.000", + "shipVia": 2, + "freight": 5.74, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 60, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10298, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1996-09-05 00:00:00.000", + "requiredDate": "1996-10-03 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 2, + "freight": 168.22, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10299, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1996-09-06 00:00:00.000", + "requiredDate": "1996-10-04 00:00:00.000", + "shippedDate": "1996-09-13 00:00:00.000", + "shipVia": 2, + "freight": 29.76, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10300, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1996-09-09 00:00:00.000", + "requiredDate": "1996-10-07 00:00:00.000", + "shippedDate": "1996-09-18 00:00:00.000", + "shipVia": 2, + "freight": 17.68, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10301, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1996-09-09 00:00:00.000", + "requiredDate": "1996-10-07 00:00:00.000", + "shippedDate": "1996-09-17 00:00:00.000", + "shipVia": 2, + "freight": 45.08, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10293, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1996-08-29 00:00:00.000", + "requiredDate": "1996-09-26 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 3, + "freight": 21.18, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 12, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 5, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10294, + "customerID": "RATTC", + "employeeID": 4, + "orderDate": "1996-08-30 00:00:00.000", + "requiredDate": "1996-09-27 00:00:00.000", + "shippedDate": "1996-09-05 00:00:00.000", + "shipVia": 2, + "freight": 147.26, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 18, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 21, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10302, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1996-09-10 00:00:00.000", + "requiredDate": "1996-10-08 00:00:00.000", + "shippedDate": "1996-10-09 00:00:00.000", + "shipVia": 2, + "freight": 6.27, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 28, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10303, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1996-09-11 00:00:00.000", + "requiredDate": "1996-10-09 00:00:00.000", + "shippedDate": "1996-09-18 00:00:00.000", + "shipVia": 2, + "freight": 107.83, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10304, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1996-09-12 00:00:00.000", + "requiredDate": "1996-10-10 00:00:00.000", + "shippedDate": "1996-09-17 00:00:00.000", + "shipVia": 2, + "freight": 63.79, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 10, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10306, + "customerID": "ROMEY", + "employeeID": 1, + "orderDate": "1996-09-16 00:00:00.000", + "requiredDate": "1996-10-14 00:00:00.000", + "shippedDate": "1996-09-23 00:00:00.000", + "shipVia": 3, + "freight": 7.56, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10305, + "customerID": "OLDWO", + "employeeID": 8, + "orderDate": "1996-09-13 00:00:00.000", + "requiredDate": "1996-10-11 00:00:00.000", + "shippedDate": "1996-10-09 00:00:00.000", + "shipVia": 3, + "freight": 257.62, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 18, + "unitPrice": 50, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10307, + "customerID": "LONEP", + "employeeID": 2, + "orderDate": "1996-09-17 00:00:00.000", + "requiredDate": "1996-10-15 00:00:00.000", + "shippedDate": "1996-09-25 00:00:00.000", + "shipVia": 2, + "freight": 0.56, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 10, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10308, + "customerID": "ANATR", + "employeeID": 7, + "orderDate": "1996-09-18 00:00:00.000", + "requiredDate": "1996-10-16 00:00:00.000", + "shippedDate": "1996-09-24 00:00:00.000", + "shipVia": 3, + "freight": 1.61, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 1, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10309, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1996-09-19 00:00:00.000", + "requiredDate": "1996-10-17 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 1, + "freight": 47.3, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 6, + "unitPrice": 20, + "quantity": 30, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10310, + "customerID": "THEBI", + "employeeID": 8, + "orderDate": "1996-09-20 00:00:00.000", + "requiredDate": "1996-10-18 00:00:00.000", + "shippedDate": "1996-09-27 00:00:00.000", + "shipVia": 2, + "freight": 17.52, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10314, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1996-09-25 00:00:00.000", + "requiredDate": "1996-10-23 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 74.16, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10315, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1996-09-26 00:00:00.000", + "requiredDate": "1996-10-24 00:00:00.000", + "shippedDate": "1996-10-03 00:00:00.000", + "shipVia": 2, + "freight": 41.76, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 14, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10316, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1996-09-27 00:00:00.000", + "requiredDate": "1996-10-25 00:00:00.000", + "shippedDate": "1996-10-08 00:00:00.000", + "shipVia": 3, + "freight": 150.15, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 70, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10311, + "customerID": "DUMON", + "employeeID": 1, + "orderDate": "1996-09-20 00:00:00.000", + "requiredDate": "1996-10-04 00:00:00.000", + "shippedDate": "1996-09-26 00:00:00.000", + "shipVia": 3, + "freight": 24.69, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 6, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10312, + "customerID": "WANDK", + "employeeID": 2, + "orderDate": "1996-09-23 00:00:00.000", + "requiredDate": "1996-10-21 00:00:00.000", + "shippedDate": "1996-10-03 00:00:00.000", + "shipVia": 2, + "freight": 40.26, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10319, + "customerID": "TORTU", + "employeeID": 7, + "orderDate": "1996-10-02 00:00:00.000", + "requiredDate": "1996-10-30 00:00:00.000", + "shippedDate": "1996-10-11 00:00:00.000", + "shipVia": 3, + "freight": 64.5, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 8, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 14, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10318, + "customerID": "ISLAT", + "employeeID": 8, + "orderDate": "1996-10-01 00:00:00.000", + "requiredDate": "1996-10-29 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 4.73, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 20, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10326, + "customerID": "BOLID", + "employeeID": 4, + "orderDate": "1996-10-10 00:00:00.000", + "requiredDate": "1996-11-07 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 2, + "freight": 77.92, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 24, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 16, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10323, + "customerID": "KOENE", + "employeeID": 4, + "orderDate": "1996-10-07 00:00:00.000", + "requiredDate": "1996-11-04 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 1, + "freight": 4.88, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 15, + "unitPrice": 12.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 4, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10327, + "customerID": "FOLKO", + "employeeID": 2, + "orderDate": "1996-10-11 00:00:00.000", + "requiredDate": "1996-11-08 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 1, + "freight": 63.36, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10328, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1996-10-14 00:00:00.000", + "requiredDate": "1996-11-11 00:00:00.000", + "shippedDate": "1996-10-17 00:00:00.000", + "shipVia": 3, + "freight": 87.03, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 40, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10330, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-10-16 00:00:00.000", + "requiredDate": "1996-11-13 00:00:00.000", + "shippedDate": "1996-10-28 00:00:00.000", + "shipVia": 1, + "freight": 12.75, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 50, + "discount": 0.15 + } + ] + }, + { + "orderID": 10329, + "customerID": "SPLIR", + "employeeID": 4, + "orderDate": "1996-10-15 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 2, + "freight": 191.67, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 12, + "discount": 0.05 + } + ] + }, + { + "orderID": 10324, + "customerID": "SAVEA", + "employeeID": 9, + "orderDate": "1996-10-08 00:00:00.000", + "requiredDate": "1996-11-05 00:00:00.000", + "shippedDate": "1996-10-10 00:00:00.000", + "shipVia": 1, + "freight": 214.27, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 70, + "discount": 0.15 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 80, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 40, + "discount": 0.15 + } + ] + }, + { + "orderID": 10333, + "customerID": "WARTH", + "employeeID": 5, + "orderDate": "1996-10-18 00:00:00.000", + "requiredDate": "1996-11-15 00:00:00.000", + "shippedDate": "1996-10-25 00:00:00.000", + "shipVia": 3, + "freight": 0.59, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 40, + "discount": 0.1 + } + ] + }, + { + "orderID": 10334, + "customerID": "VICTE", + "employeeID": 8, + "orderDate": "1996-10-21 00:00:00.000", + "requiredDate": "1996-11-18 00:00:00.000", + "shippedDate": "1996-10-28 00:00:00.000", + "shipVia": 2, + "freight": 8.56, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 10, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10335, + "customerID": "HUNGO", + "employeeID": 7, + "orderDate": "1996-10-22 00:00:00.000", + "requiredDate": "1996-11-19 00:00:00.000", + "shippedDate": "1996-10-24 00:00:00.000", + "shipVia": 2, + "freight": 42.11, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 48, + "discount": 0.2 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 7, + "discount": 0.2 + } + ] + }, + { + "orderID": 10337, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-10-24 00:00:00.000", + "requiredDate": "1996-11-21 00:00:00.000", + "shippedDate": "1996-10-29 00:00:00.000", + "shipVia": 3, + "freight": 108.26, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 24, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 28, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10338, + "customerID": "OLDWO", + "employeeID": 4, + "orderDate": "1996-10-25 00:00:00.000", + "requiredDate": "1996-11-22 00:00:00.000", + "shippedDate": "1996-10-29 00:00:00.000", + "shipVia": 3, + "freight": 84.21, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10339, + "customerID": "MEREP", + "employeeID": 2, + "orderDate": "1996-10-28 00:00:00.000", + "requiredDate": "1996-11-25 00:00:00.000", + "shippedDate": "1996-11-04 00:00:00.000", + "shipVia": 2, + "freight": 15.66, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10340, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1996-10-29 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 166.31, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10341, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1996-10-29 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-05 00:00:00.000", + "shipVia": 3, + "freight": 26.78, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 8, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0.15 + } + ] + }, + { + "orderID": 10342, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-10-30 00:00:00.000", + "requiredDate": "1996-11-13 00:00:00.000", + "shippedDate": "1996-11-04 00:00:00.000", + "shipVia": 2, + "freight": 54.83, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 56, + "discount": 0.2 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10343, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1996-10-31 00:00:00.000", + "requiredDate": "1996-11-28 00:00:00.000", + "shippedDate": "1996-11-06 00:00:00.000", + "shipVia": 1, + "freight": 110.37, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 4, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10344, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1996-11-01 00:00:00.000", + "requiredDate": "1996-11-29 00:00:00.000", + "shippedDate": "1996-11-05 00:00:00.000", + "shipVia": 2, + "freight": 23.29, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 35, + "discount": 0 + }, + { + "productID": 8, + "unitPrice": 32, + "quantity": 70, + "discount": 0.25 + } + ] + }, + { + "orderID": 10345, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1996-11-04 00:00:00.000", + "requiredDate": "1996-12-02 00:00:00.000", + "shippedDate": "1996-11-11 00:00:00.000", + "shipVia": 2, + "freight": 249.06, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 8, + "unitPrice": 32, + "quantity": 70, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 80, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10346, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1996-11-05 00:00:00.000", + "requiredDate": "1996-12-17 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 142.08, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 36, + "discount": 0.1 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10347, + "customerID": "FAMIA", + "employeeID": 4, + "orderDate": "1996-11-06 00:00:00.000", + "requiredDate": "1996-12-04 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 3.1, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 4, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0.15 + } + ] + }, + { + "orderID": 10348, + "customerID": "WANDK", + "employeeID": 4, + "orderDate": "1996-11-07 00:00:00.000", + "requiredDate": "1996-12-05 00:00:00.000", + "shippedDate": "1996-11-15 00:00:00.000", + "shipVia": 2, + "freight": 0.78, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10325, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1996-10-09 00:00:00.000", + "requiredDate": "1996-10-23 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 3, + "freight": 64.86, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 9, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 4, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 40, + "discount": 0 + }, + { + "productID": 6, + "unitPrice": 20, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10350, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1996-11-11 00:00:00.000", + "requiredDate": "1996-12-09 00:00:00.000", + "shippedDate": "1996-12-03 00:00:00.000", + "shipVia": 2, + "freight": 64.19, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 50, + "unitPrice": 13, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10332, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1996-10-17 00:00:00.000", + "requiredDate": "1996-11-28 00:00:00.000", + "shippedDate": "1996-10-21 00:00:00.000", + "shipVia": 2, + "freight": 52.84, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 16, + "discount": 0.2 + } + ] + }, + { + "orderID": 10351, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1996-11-11 00:00:00.000", + "requiredDate": "1996-12-09 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 1, + "freight": 162.33, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 13, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 77, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10355, + "customerID": "AROUT", + "employeeID": 6, + "orderDate": "1996-11-15 00:00:00.000", + "requiredDate": "1996-12-13 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 1, + "freight": 41.95, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10356, + "customerID": "WANDK", + "employeeID": 6, + "orderDate": "1996-11-18 00:00:00.000", + "requiredDate": "1996-12-16 00:00:00.000", + "shippedDate": "1996-11-27 00:00:00.000", + "shipVia": 2, + "freight": 36.71, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10357, + "customerID": "LILAS", + "employeeID": 1, + "orderDate": "1996-11-19 00:00:00.000", + "requiredDate": "1996-12-17 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 34.88, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 16, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 8, + "discount": 0.2 + } + ] + }, + { + "orderID": 10358, + "customerID": "LAMAI", + "employeeID": 5, + "orderDate": "1996-11-20 00:00:00.000", + "requiredDate": "1996-12-18 00:00:00.000", + "shippedDate": "1996-11-27 00:00:00.000", + "shipVia": 1, + "freight": 19.64, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10359, + "customerID": "SEVES", + "employeeID": 5, + "orderDate": "1996-11-21 00:00:00.000", + "requiredDate": "1996-12-19 00:00:00.000", + "shippedDate": "1996-11-26 00:00:00.000", + "shipVia": 3, + "freight": 288.43, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 56, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 80, + "discount": 0.05 + } + ] + }, + { + "orderID": 10360, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1996-11-22 00:00:00.000", + "requiredDate": "1996-12-20 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 131.7, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 35, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 35, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10361, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1996-11-22 00:00:00.000", + "requiredDate": "1996-12-20 00:00:00.000", + "shippedDate": "1996-12-03 00:00:00.000", + "shipVia": 2, + "freight": 183.17, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 54, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 55, + "discount": 0.1 + } + ] + }, + { + "orderID": 10353, + "customerID": "PICCO", + "employeeID": 7, + "orderDate": "1996-11-13 00:00:00.000", + "requiredDate": "1996-12-11 00:00:00.000", + "shippedDate": "1996-11-25 00:00:00.000", + "shipVia": 3, + "freight": 360.63, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10363, + "customerID": "DRACD", + "employeeID": 4, + "orderDate": "1996-11-26 00:00:00.000", + "requiredDate": "1996-12-24 00:00:00.000", + "shippedDate": "1996-12-04 00:00:00.000", + "shipVia": 3, + "freight": 30.54, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10352, + "customerID": "FURIB", + "employeeID": 3, + "orderDate": "1996-11-12 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-18 00:00:00.000", + "shipVia": 3, + "freight": 1.3, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10364, + "customerID": "EASTC", + "employeeID": 1, + "orderDate": "1996-11-26 00:00:00.000", + "requiredDate": "1997-01-07 00:00:00.000", + "shippedDate": "1996-12-04 00:00:00.000", + "shipVia": 1, + "freight": 71.97, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10354, + "customerID": "PERIC", + "employeeID": 8, + "orderDate": "1996-11-14 00:00:00.000", + "requiredDate": "1996-12-12 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 3, + "freight": 53.8, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10362, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1996-11-25 00:00:00.000", + "requiredDate": "1996-12-23 00:00:00.000", + "shippedDate": "1996-11-28 00:00:00.000", + "shipVia": 1, + "freight": 96.04, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10366, + "customerID": "GALED", + "employeeID": 8, + "orderDate": "1996-11-28 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1996-12-30 00:00:00.000", + "shipVia": 2, + "freight": 10.14, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 5, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10367, + "customerID": "VAFFE", + "employeeID": 7, + "orderDate": "1996-11-28 00:00:00.000", + "requiredDate": "1996-12-26 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 13.55, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 36, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 18, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10372, + "customerID": "QUEEN", + "employeeID": 5, + "orderDate": "1996-12-04 00:00:00.000", + "requiredDate": "1997-01-01 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 890.78, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 70, + "discount": 0.25 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 42, + "discount": 0.25 + } + ] + }, + { + "orderID": 10373, + "customerID": "HUNGO", + "employeeID": 4, + "orderDate": "1996-12-05 00:00:00.000", + "requiredDate": "1997-01-02 00:00:00.000", + "shippedDate": "1996-12-11 00:00:00.000", + "shipVia": 3, + "freight": 124.12, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 80, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10374, + "customerID": "WOLZA", + "employeeID": 1, + "orderDate": "1996-12-05 00:00:00.000", + "requiredDate": "1997-01-02 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 3, + "freight": 3.94, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10375, + "customerID": "HUNGC", + "employeeID": 3, + "orderDate": "1996-12-06 00:00:00.000", + "requiredDate": "1997-01-03 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 20.12, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10368, + "customerID": "ERNSH", + "employeeID": 2, + "orderDate": "1996-11-29 00:00:00.000", + "requiredDate": "1996-12-27 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 2, + "freight": 101.95, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 13, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 35, + "discount": 0.1 + } + ] + }, + { + "orderID": 10369, + "customerID": "SPLIR", + "employeeID": 8, + "orderDate": "1996-12-02 00:00:00.000", + "requiredDate": "1996-12-30 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 195.68, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 20, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 18, + "discount": 0.25 + } + ] + }, + { + "orderID": 10379, + "customerID": "QUEDE", + "employeeID": 2, + "orderDate": "1996-12-11 00:00:00.000", + "requiredDate": "1997-01-08 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 1, + "freight": 45.03, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 16, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10370, + "customerID": "CHOPS", + "employeeID": 6, + "orderDate": "1996-12-03 00:00:00.000", + "requiredDate": "1996-12-31 00:00:00.000", + "shippedDate": "1996-12-27 00:00:00.000", + "shipVia": 2, + "freight": 1.17, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10380, + "customerID": "HUNGO", + "employeeID": 8, + "orderDate": "1996-12-12 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 3, + "freight": 35.03, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10377, + "customerID": "SEVES", + "employeeID": 1, + "orderDate": "1996-12-09 00:00:00.000", + "requiredDate": "1997-01-06 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 3, + "freight": 22.21, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10384, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1996-12-16 00:00:00.000", + "requiredDate": "1997-01-13 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 3, + "freight": 168.64, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10385, + "customerID": "SPLIR", + "employeeID": 1, + "orderDate": "1996-12-17 00:00:00.000", + "requiredDate": "1997-01-14 00:00:00.000", + "shippedDate": "1996-12-23 00:00:00.000", + "shipVia": 2, + "freight": 30.96, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 8, + "discount": 0.2 + } + ] + }, + { + "orderID": 10386, + "customerID": "FAMIA", + "employeeID": 9, + "orderDate": "1996-12-18 00:00:00.000", + "requiredDate": "1997-01-01 00:00:00.000", + "shippedDate": "1996-12-25 00:00:00.000", + "shipVia": 3, + "freight": 13.99, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10387, + "customerID": "SANTG", + "employeeID": 1, + "orderDate": "1996-12-18 00:00:00.000", + "requiredDate": "1997-01-15 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 2, + "freight": 93.63, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 12, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10388, + "customerID": "SEVES", + "employeeID": 2, + "orderDate": "1996-12-19 00:00:00.000", + "requiredDate": "1997-01-16 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 1, + "freight": 34.86, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 45, + "unitPrice": 7.6, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10389, + "customerID": "BOTTM", + "employeeID": 4, + "orderDate": "1996-12-20 00:00:00.000", + "requiredDate": "1997-01-17 00:00:00.000", + "shippedDate": "1996-12-24 00:00:00.000", + "shipVia": 2, + "freight": 47.42, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 16, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10382, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1996-12-13 00:00:00.000", + "requiredDate": "1997-01-10 00:00:00.000", + "shippedDate": "1996-12-16 00:00:00.000", + "shipVia": 1, + "freight": 94.77, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 14, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 17, + "quantity": 32, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 50, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10381, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-12-12 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 3, + "freight": 7.99, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 74, + "unitPrice": 8, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10383, + "customerID": "AROUT", + "employeeID": 8, + "orderDate": "1996-12-16 00:00:00.000", + "requiredDate": "1997-01-13 00:00:00.000", + "shippedDate": "1996-12-18 00:00:00.000", + "shipVia": 3, + "freight": 34.24, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10390, + "customerID": "ERNSH", + "employeeID": 6, + "orderDate": "1996-12-23 00:00:00.000", + "requiredDate": "1997-01-20 00:00:00.000", + "shippedDate": "1996-12-26 00:00:00.000", + "shipVia": 1, + "freight": 126.38, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 45, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 24, + "discount": 0.1 + } + ] + }, + { + "orderID": 10396, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1996-12-27 00:00:00.000", + "requiredDate": "1997-01-10 00:00:00.000", + "shippedDate": "1997-01-06 00:00:00.000", + "shipVia": 3, + "freight": 135.35, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10397, + "customerID": "PRINI", + "employeeID": 5, + "orderDate": "1996-12-27 00:00:00.000", + "requiredDate": "1997-01-24 00:00:00.000", + "shippedDate": "1997-01-02 00:00:00.000", + "shipVia": 1, + "freight": 60.26, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10398, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1996-12-30 00:00:00.000", + "requiredDate": "1997-01-27 00:00:00.000", + "shippedDate": "1997-01-09 00:00:00.000", + "shipVia": 3, + "freight": 89.16, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 120, + "discount": 0.1 + } + ] + }, + { + "orderID": 10399, + "customerID": "VAFFE", + "employeeID": 8, + "orderDate": "1996-12-31 00:00:00.000", + "requiredDate": "1997-01-14 00:00:00.000", + "shippedDate": "1997-01-08 00:00:00.000", + "shipVia": 3, + "freight": 27.36, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10400, + "customerID": "EASTC", + "employeeID": 1, + "orderDate": "1997-01-01 00:00:00.000", + "requiredDate": "1997-01-29 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 3, + "freight": 83.93, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 35, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 21, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10401, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1997-01-01 00:00:00.000", + "requiredDate": "1997-01-29 00:00:00.000", + "shippedDate": "1997-01-10 00:00:00.000", + "shipVia": 1, + "freight": 12.51, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 18, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 70, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10394, + "customerID": "HUNGC", + "employeeID": 1, + "orderDate": "1996-12-25 00:00:00.000", + "requiredDate": "1997-01-22 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 3, + "freight": 30.34, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10402, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-01-02 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-10 00:00:00.000", + "shipVia": 2, + "freight": 67.88, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 65, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10393, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1996-12-25 00:00:00.000", + "requiredDate": "1997-01-22 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 3, + "freight": 126.56, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 70, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 32, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 7, + "discount": 0.25 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 42, + "discount": 0.25 + } + ] + }, + { + "orderID": 10395, + "customerID": "HILAA", + "employeeID": 6, + "orderDate": "1996-12-26 00:00:00.000", + "requiredDate": "1997-01-23 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 1, + "freight": 184.41, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 8, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 70, + "discount": 0.1 + } + ] + }, + { + "orderID": 10406, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1997-01-07 00:00:00.000", + "requiredDate": "1997-02-18 00:00:00.000", + "shippedDate": "1997-01-13 00:00:00.000", + "shipVia": 1, + "freight": 108.04, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 42, + "discount": 0.1 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10407, + "customerID": "OTTIK", + "employeeID": 2, + "orderDate": "1997-01-07 00:00:00.000", + "requiredDate": "1997-02-04 00:00:00.000", + "shippedDate": "1997-01-30 00:00:00.000", + "shipVia": 2, + "freight": 91.48, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10408, + "customerID": "FOLIG", + "employeeID": 8, + "orderDate": "1997-01-08 00:00:00.000", + "requiredDate": "1997-02-05 00:00:00.000", + "shippedDate": "1997-01-14 00:00:00.000", + "shipVia": 1, + "freight": 11.26, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10409, + "customerID": "OCEAN", + "employeeID": 3, + "orderDate": "1997-01-09 00:00:00.000", + "requiredDate": "1997-02-06 00:00:00.000", + "shippedDate": "1997-01-14 00:00:00.000", + "shipVia": 1, + "freight": 29.83, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 12, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10410, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-01-10 00:00:00.000", + "requiredDate": "1997-02-07 00:00:00.000", + "shippedDate": "1997-01-15 00:00:00.000", + "shipVia": 3, + "freight": 2.4, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 49, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10411, + "customerID": "BOTTM", + "employeeID": 9, + "orderDate": "1997-01-10 00:00:00.000", + "requiredDate": "1997-02-07 00:00:00.000", + "shippedDate": "1997-01-21 00:00:00.000", + "shipVia": 3, + "freight": 23.65, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0.2 + } + ] + }, + { + "orderID": 10404, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1997-01-03 00:00:00.000", + "requiredDate": "1997-01-31 00:00:00.000", + "shippedDate": "1997-01-08 00:00:00.000", + "shipVia": 1, + "freight": 155.97, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10413, + "customerID": "LAMAI", + "employeeID": 3, + "orderDate": "1997-01-14 00:00:00.000", + "requiredDate": "1997-02-11 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 2, + "freight": 95.66, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 24, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 40, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10403, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-01-03 00:00:00.000", + "requiredDate": "1997-01-31 00:00:00.000", + "shippedDate": "1997-01-09 00:00:00.000", + "shipVia": 3, + "freight": 73.79, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 10.2, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10414, + "customerID": "FAMIA", + "employeeID": 2, + "orderDate": "1997-01-14 00:00:00.000", + "requiredDate": "1997-02-11 00:00:00.000", + "shippedDate": "1997-01-17 00:00:00.000", + "shipVia": 3, + "freight": 21.48, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 18, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10415, + "customerID": "HUNGC", + "employeeID": 3, + "orderDate": "1997-01-15 00:00:00.000", + "requiredDate": "1997-02-12 00:00:00.000", + "shippedDate": "1997-01-24 00:00:00.000", + "shipVia": 1, + "freight": 0.2, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10419, + "customerID": "RICSU", + "employeeID": 4, + "orderDate": "1997-01-20 00:00:00.000", + "requiredDate": "1997-02-17 00:00:00.000", + "shippedDate": "1997-01-30 00:00:00.000", + "shipVia": 2, + "freight": 137.35, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10420, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1997-01-21 00:00:00.000", + "requiredDate": "1997-02-18 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 1, + "freight": 44.12, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 9, + "unitPrice": 77.6, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 2, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 73, + "unitPrice": 12, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10421, + "customerID": "QUEDE", + "employeeID": 8, + "orderDate": "1997-01-21 00:00:00.000", + "requiredDate": "1997-03-04 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 1, + "freight": 99.23, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 4, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10423, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1997-01-23 00:00:00.000", + "requiredDate": "1997-02-06 00:00:00.000", + "shippedDate": "1997-02-24 00:00:00.000", + "shipVia": 3, + "freight": 24.5, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 14, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10424, + "customerID": "MEREP", + "employeeID": 7, + "orderDate": "1997-01-23 00:00:00.000", + "requiredDate": "1997-02-20 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 2, + "freight": 370.61, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 49, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 60, + "discount": 0.2 + } + ] + }, + { + "orderID": 10418, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-01-17 00:00:00.000", + "requiredDate": "1997-02-14 00:00:00.000", + "shippedDate": "1997-01-24 00:00:00.000", + "shipVia": 1, + "freight": 17.55, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 55, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 16, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10417, + "customerID": "SIMOB", + "employeeID": 4, + "orderDate": "1997-01-16 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-28 00:00:00.000", + "shipVia": 3, + "freight": 70.29, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 36, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10416, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-01-16 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 3, + "freight": 22.72, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10425, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1997-01-24 00:00:00.000", + "requiredDate": "1997-02-21 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 2, + "freight": 7.93, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 10, + "discount": 0.25 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10429, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1997-01-29 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 56.63, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 50, + "unitPrice": 13, + "quantity": 40, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10430, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-01-30 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-02-03 00:00:00.000", + "shipVia": 1, + "freight": 458.78, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 70, + "discount": 0.2 + } + ] + }, + { + "orderID": 10431, + "customerID": "BOTTM", + "employeeID": 4, + "orderDate": "1997-01-30 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 44.17, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10432, + "customerID": "SPLIR", + "employeeID": 3, + "orderDate": "1997-01-31 00:00:00.000", + "requiredDate": "1997-02-14 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 4.34, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10434, + "customerID": "FOLKO", + "employeeID": 3, + "orderDate": "1997-02-03 00:00:00.000", + "requiredDate": "1997-03-03 00:00:00.000", + "shippedDate": "1997-02-13 00:00:00.000", + "shipVia": 2, + "freight": 17.92, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10436, + "customerID": "BLONP", + "employeeID": 3, + "orderDate": "1997-02-05 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-02-11 00:00:00.000", + "shipVia": 2, + "freight": 156.66, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 24, + "discount": 0.1 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 5, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10435, + "customerID": "CONSH", + "employeeID": 8, + "orderDate": "1997-02-04 00:00:00.000", + "requiredDate": "1997-03-18 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 9.21, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 22, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10426, + "customerID": "GALED", + "employeeID": 4, + "orderDate": "1997-01-27 00:00:00.000", + "requiredDate": "1997-02-24 00:00:00.000", + "shippedDate": "1997-02-06 00:00:00.000", + "shipVia": 1, + "freight": 18.69, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10442, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1997-02-11 00:00:00.000", + "requiredDate": "1997-03-11 00:00:00.000", + "shippedDate": "1997-02-18 00:00:00.000", + "shipVia": 2, + "freight": 47.94, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 80, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10443, + "customerID": "REGGC", + "employeeID": 8, + "orderDate": "1997-02-12 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 1, + "freight": 13.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10444, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-02-12 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-21 00:00:00.000", + "shipVia": 3, + "freight": 3.5, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 15, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 8, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10445, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-02-13 00:00:00.000", + "requiredDate": "1997-03-13 00:00:00.000", + "shippedDate": "1997-02-20 00:00:00.000", + "shipVia": 1, + "freight": 9.3, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10446, + "customerID": "TOMSP", + "employeeID": 6, + "orderDate": "1997-02-14 00:00:00.000", + "requiredDate": "1997-03-14 00:00:00.000", + "shippedDate": "1997-02-19 00:00:00.000", + "shipVia": 1, + "freight": 14.68, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 3, + "discount": 0.1 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 12, + "discount": 0.1 + } + ] + }, + { + "orderID": 10440, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1997-02-10 00:00:00.000", + "requiredDate": "1997-03-10 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 86.53, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 45, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 49, + "discount": 0.15 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 90, + "discount": 0.15 + } + ] + }, + { + "orderID": 10439, + "customerID": "MEREP", + "employeeID": 6, + "orderDate": "1997-02-07 00:00:00.000", + "requiredDate": "1997-03-07 00:00:00.000", + "shippedDate": "1997-02-10 00:00:00.000", + "shipVia": 3, + "freight": 4.07, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 12, + "unitPrice": 30.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 16, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10448, + "customerID": "RANCH", + "employeeID": 4, + "orderDate": "1997-02-17 00:00:00.000", + "requiredDate": "1997-03-17 00:00:00.000", + "shippedDate": "1997-02-24 00:00:00.000", + "shipVia": 2, + "freight": 38.82, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10438, + "customerID": "TOMSP", + "employeeID": 3, + "orderDate": "1997-02-06 00:00:00.000", + "requiredDate": "1997-03-06 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 2, + "freight": 8.24, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10447, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1997-02-14 00:00:00.000", + "requiredDate": "1997-03-14 00:00:00.000", + "shippedDate": "1997-03-07 00:00:00.000", + "shipVia": 2, + "freight": 68.66, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 40, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 35, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10452, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-02-20 00:00:00.000", + "requiredDate": "1997-03-20 00:00:00.000", + "shippedDate": "1997-02-26 00:00:00.000", + "shipVia": 1, + "freight": 140.26, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 100, + "discount": 0.05 + } + ] + }, + { + "orderID": 10453, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-02-21 00:00:00.000", + "requiredDate": "1997-03-21 00:00:00.000", + "shippedDate": "1997-02-26 00:00:00.000", + "shipVia": 2, + "freight": 25.36, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 48, + "unitPrice": 10.2, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10454, + "customerID": "LAMAI", + "employeeID": 4, + "orderDate": "1997-02-21 00:00:00.000", + "requiredDate": "1997-03-21 00:00:00.000", + "shippedDate": "1997-02-25 00:00:00.000", + "shipVia": 3, + "freight": 2.74, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10455, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-02-24 00:00:00.000", + "requiredDate": "1997-04-07 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 2, + "freight": 180.45, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 25, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10456, + "customerID": "KOENE", + "employeeID": 8, + "orderDate": "1997-02-25 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 8.12, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 21, + "discount": 0.15 + } + ] + }, + { + "orderID": 10450, + "customerID": "VICTE", + "employeeID": 8, + "orderDate": "1997-02-19 00:00:00.000", + "requiredDate": "1997-03-19 00:00:00.000", + "shippedDate": "1997-03-11 00:00:00.000", + "shipVia": 2, + "freight": 7.23, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10451, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-02-19 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-03-12 00:00:00.000", + "shipVia": 3, + "freight": 189.09, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 120, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 35, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 55, + "discount": 0.1 + } + ] + }, + { + "orderID": 10449, + "customerID": "BLONP", + "employeeID": 3, + "orderDate": "1997-02-18 00:00:00.000", + "requiredDate": "1997-03-18 00:00:00.000", + "shippedDate": "1997-02-27 00:00:00.000", + "shipVia": 2, + "freight": 53.3, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 14, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10461, + "customerID": "LILAS", + "employeeID": 1, + "orderDate": "1997-02-28 00:00:00.000", + "requiredDate": "1997-03-28 00:00:00.000", + "shippedDate": "1997-03-05 00:00:00.000", + "shipVia": 3, + "freight": 148.61, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 28, + "discount": 0.25 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 60, + "discount": 0.25 + } + ] + }, + { + "orderID": 10462, + "customerID": "CONSH", + "employeeID": 2, + "orderDate": "1997-03-03 00:00:00.000", + "requiredDate": "1997-03-31 00:00:00.000", + "shippedDate": "1997-03-18 00:00:00.000", + "shipVia": 1, + "freight": 6.17, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 1, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10463, + "customerID": "SUPRD", + "employeeID": 5, + "orderDate": "1997-03-04 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-06 00:00:00.000", + "shipVia": 3, + "freight": 14.78, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 21, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10464, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1997-03-04 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 89, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 16, + "discount": 0.2 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 3, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10465, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1997-03-05 00:00:00.000", + "requiredDate": "1997-04-02 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 3, + "freight": 145.04, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 20, + "discount": 0 + }, + { + "productID": 45, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 50, + "unitPrice": 13, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10466, + "customerID": "COMMI", + "employeeID": 4, + "orderDate": "1997-03-06 00:00:00.000", + "requiredDate": "1997-04-03 00:00:00.000", + "shippedDate": "1997-03-13 00:00:00.000", + "shipVia": 1, + "freight": 11.93, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10460, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1997-02-28 00:00:00.000", + "requiredDate": "1997-03-28 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 1, + "freight": 16.27, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 4, + "discount": 0.25 + } + ] + }, + { + "orderID": 10459, + "customerID": "VICTE", + "employeeID": 4, + "orderDate": "1997-02-27 00:00:00.000", + "requiredDate": "1997-03-27 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 25.09, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10468, + "customerID": "KOENE", + "employeeID": 3, + "orderDate": "1997-03-07 00:00:00.000", + "requiredDate": "1997-04-04 00:00:00.000", + "shippedDate": "1997-03-12 00:00:00.000", + "shipVia": 3, + "freight": 44.12, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 8, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10469, + "customerID": "WHITC", + "employeeID": 1, + "orderDate": "1997-03-10 00:00:00.000", + "requiredDate": "1997-04-07 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 1, + "freight": 60.18, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 2, + "discount": 0.15 + } + ] + }, + { + "orderID": 10458, + "customerID": "SUPRD", + "employeeID": 7, + "orderDate": "1997-02-26 00:00:00.000", + "requiredDate": "1997-03-26 00:00:00.000", + "shippedDate": "1997-03-04 00:00:00.000", + "shipVia": 3, + "freight": 147.06, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10470, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-03-11 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 64.56, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 30, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10467, + "customerID": "MAGAA", + "employeeID": 8, + "orderDate": "1997-03-06 00:00:00.000", + "requiredDate": "1997-04-03 00:00:00.000", + "shippedDate": "1997-03-11 00:00:00.000", + "shipVia": 2, + "freight": 4.93, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 28, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10474, + "customerID": "PERIC", + "employeeID": 5, + "orderDate": "1997-03-13 00:00:00.000", + "requiredDate": "1997-04-10 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 2, + "freight": 83.49, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 18, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 21, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10475, + "customerID": "SUPRD", + "employeeID": 9, + "orderDate": "1997-03-14 00:00:00.000", + "requiredDate": "1997-04-11 00:00:00.000", + "shippedDate": "1997-04-04 00:00:00.000", + "shipVia": 1, + "freight": 68.52, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 42, + "discount": 0.15 + } + ] + }, + { + "orderID": 10476, + "customerID": "HILAA", + "employeeID": 8, + "orderDate": "1997-03-17 00:00:00.000", + "requiredDate": "1997-04-14 00:00:00.000", + "shippedDate": "1997-03-24 00:00:00.000", + "shipVia": 3, + "freight": 4.41, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 2, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10477, + "customerID": "PRINI", + "employeeID": 5, + "orderDate": "1997-03-17 00:00:00.000", + "requiredDate": "1997-04-14 00:00:00.000", + "shippedDate": "1997-03-25 00:00:00.000", + "shipVia": 2, + "freight": 13.02, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10479, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1997-03-19 00:00:00.000", + "requiredDate": "1997-04-16 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 3, + "freight": 708.95, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 28, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 60, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10471, + "customerID": "BSBEV", + "employeeID": 2, + "orderDate": "1997-03-11 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-18 00:00:00.000", + "shipVia": 3, + "freight": 45.59, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 30, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10472, + "customerID": "SEVES", + "employeeID": 8, + "orderDate": "1997-03-12 00:00:00.000", + "requiredDate": "1997-04-09 00:00:00.000", + "shippedDate": "1997-03-19 00:00:00.000", + "shipVia": 1, + "freight": 4.2, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 80, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10481, + "customerID": "RICAR", + "employeeID": 8, + "orderDate": "1997-03-20 00:00:00.000", + "requiredDate": "1997-04-17 00:00:00.000", + "shippedDate": "1997-03-25 00:00:00.000", + "shipVia": 2, + "freight": 64.33, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 49, + "unitPrice": 16, + "quantity": 24, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10473, + "customerID": "ISLAT", + "employeeID": 1, + "orderDate": "1997-03-13 00:00:00.000", + "requiredDate": "1997-03-27 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 3, + "freight": 16.37, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10484, + "customerID": "BSBEV", + "employeeID": 3, + "orderDate": "1997-03-24 00:00:00.000", + "requiredDate": "1997-04-21 00:00:00.000", + "shippedDate": "1997-04-01 00:00:00.000", + "shipVia": 3, + "freight": 6.88, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10485, + "customerID": "LINOD", + "employeeID": 4, + "orderDate": "1997-03-25 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-31 00:00:00.000", + "shipVia": 2, + "freight": 64.45, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 3, + "unitPrice": 8, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 60, + "discount": 0.1 + } + ] + }, + { + "orderID": 10486, + "customerID": "HILAA", + "employeeID": 1, + "orderDate": "1997-03-26 00:00:00.000", + "requiredDate": "1997-04-23 00:00:00.000", + "shippedDate": "1997-04-02 00:00:00.000", + "shipVia": 2, + "freight": 30.53, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 5, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 25, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10487, + "customerID": "QUEEN", + "employeeID": 2, + "orderDate": "1997-03-26 00:00:00.000", + "requiredDate": "1997-04-23 00:00:00.000", + "shippedDate": "1997-03-28 00:00:00.000", + "shipVia": 2, + "freight": 71.07, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 5, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0.25 + } + ] + }, + { + "orderID": 10488, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-03-27 00:00:00.000", + "requiredDate": "1997-04-24 00:00:00.000", + "shippedDate": "1997-04-02 00:00:00.000", + "shipVia": 2, + "freight": 4.93, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 12, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10489, + "customerID": "PICCO", + "employeeID": 6, + "orderDate": "1997-03-28 00:00:00.000", + "requiredDate": "1997-04-25 00:00:00.000", + "shippedDate": "1997-04-09 00:00:00.000", + "shipVia": 2, + "freight": 5.29, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10483, + "customerID": "WHITC", + "employeeID": 7, + "orderDate": "1997-03-24 00:00:00.000", + "requiredDate": "1997-04-21 00:00:00.000", + "shippedDate": "1997-04-25 00:00:00.000", + "shipVia": 2, + "freight": 15.28, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 35, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10491, + "customerID": "FURIB", + "employeeID": 8, + "orderDate": "1997-03-31 00:00:00.000", + "requiredDate": "1997-04-28 00:00:00.000", + "shippedDate": "1997-04-08 00:00:00.000", + "shipVia": 3, + "freight": 16.96, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 7, + "discount": 0.15 + } + ] + }, + { + "orderID": 10480, + "customerID": "FOLIG", + "employeeID": 6, + "orderDate": "1997-03-20 00:00:00.000", + "requiredDate": "1997-04-17 00:00:00.000", + "shippedDate": "1997-03-24 00:00:00.000", + "shipVia": 2, + "freight": 1.35, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10490, + "customerID": "HILAA", + "employeeID": 7, + "orderDate": "1997-03-31 00:00:00.000", + "requiredDate": "1997-04-28 00:00:00.000", + "shippedDate": "1997-04-03 00:00:00.000", + "shipVia": 2, + "freight": 210.19, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 60, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10492, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-04-01 00:00:00.000", + "requiredDate": "1997-04-29 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 1, + "freight": 62.89, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10493, + "customerID": "LAMAI", + "employeeID": 4, + "orderDate": "1997-04-02 00:00:00.000", + "requiredDate": "1997-04-30 00:00:00.000", + "shippedDate": "1997-04-10 00:00:00.000", + "shipVia": 3, + "freight": 10.64, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10498, + "customerID": "HILAA", + "employeeID": 8, + "orderDate": "1997-04-07 00:00:00.000", + "requiredDate": "1997-05-05 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 2, + "freight": 29.75, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10499, + "customerID": "LILAS", + "employeeID": 4, + "orderDate": "1997-04-08 00:00:00.000", + "requiredDate": "1997-05-06 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 2, + "freight": 102.02, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10500, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1997-04-09 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-04-17 00:00:00.000", + "shipVia": 1, + "freight": 42.68, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 8, + "discount": 0.05 + } + ] + }, + { + "orderID": 10502, + "customerID": "PERIC", + "employeeID": 2, + "orderDate": "1997-04-10 00:00:00.000", + "requiredDate": "1997-05-08 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 1, + "freight": 69.32, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 21, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 6, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10503, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1997-04-11 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 2, + "freight": 16.74, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 70, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10497, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1997-04-04 00:00:00.000", + "requiredDate": "1997-05-02 00:00:00.000", + "shippedDate": "1997-04-07 00:00:00.000", + "shipVia": 1, + "freight": 36.21, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 14, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10495, + "customerID": "LAUGB", + "employeeID": 3, + "orderDate": "1997-04-03 00:00:00.000", + "requiredDate": "1997-05-01 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 3, + "freight": 4.65, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10504, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1997-04-11 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-04-18 00:00:00.000", + "shipVia": 3, + "freight": 59.13, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 12, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 12, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10508, + "customerID": "OTTIK", + "employeeID": 1, + "orderDate": "1997-04-16 00:00:00.000", + "requiredDate": "1997-05-14 00:00:00.000", + "shippedDate": "1997-05-13 00:00:00.000", + "shipVia": 2, + "freight": 4.99, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10510, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-04-18 00:00:00.000", + "requiredDate": "1997-05-16 00:00:00.000", + "shippedDate": "1997-04-28 00:00:00.000", + "shipVia": 3, + "freight": 367.63, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 36, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 36, + "discount": 0.1 + } + ] + }, + { + "orderID": 10511, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-04-18 00:00:00.000", + "requiredDate": "1997-05-16 00:00:00.000", + "shippedDate": "1997-04-21 00:00:00.000", + "shipVia": 3, + "freight": 350.64, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 10, + "discount": 0.15 + } + ] + }, + { + "orderID": 10512, + "customerID": "FAMIA", + "employeeID": 7, + "orderDate": "1997-04-21 00:00:00.000", + "requiredDate": "1997-05-19 00:00:00.000", + "shippedDate": "1997-04-24 00:00:00.000", + "shipVia": 2, + "freight": 3.53, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 9, + "discount": 0.15 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 6, + "discount": 0.15 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10513, + "customerID": "WANDK", + "employeeID": 7, + "orderDate": "1997-04-22 00:00:00.000", + "requiredDate": "1997-06-03 00:00:00.000", + "shippedDate": "1997-04-28 00:00:00.000", + "shipVia": 1, + "freight": 105.65, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10506, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1997-04-15 00:00:00.000", + "requiredDate": "1997-05-13 00:00:00.000", + "shippedDate": "1997-05-02 00:00:00.000", + "shipVia": 2, + "freight": 21.19, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 14, + "discount": 0.1 + } + ] + }, + { + "orderID": 10515, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-04-23 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 1, + "freight": 204.47, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 16, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 120, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 16, + "discount": 0.15 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 84, + "discount": 0.15 + } + ] + }, + { + "orderID": 10516, + "customerID": "HUNGO", + "employeeID": 2, + "orderDate": "1997-04-24 00:00:00.000", + "requiredDate": "1997-05-22 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 3, + "freight": 62.78, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 80, + "discount": 0.1 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10507, + "customerID": "ANTON", + "employeeID": 7, + "orderDate": "1997-04-15 00:00:00.000", + "requiredDate": "1997-05-13 00:00:00.000", + "shippedDate": "1997-04-22 00:00:00.000", + "shipVia": 1, + "freight": 47.45, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10514, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1997-04-22 00:00:00.000", + "requiredDate": "1997-05-20 00:00:00.000", + "shippedDate": "1997-05-16 00:00:00.000", + "shipVia": 2, + "freight": 789.95, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 39, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 50, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 81, + "quantity": 39, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 35, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10517, + "customerID": "NORTS", + "employeeID": 3, + "orderDate": "1997-04-24 00:00:00.000", + "requiredDate": "1997-05-22 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 3, + "freight": 32.07, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 6, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 4, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10518, + "customerID": "TORTU", + "employeeID": 4, + "orderDate": "1997-04-25 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-05-05 00:00:00.000", + "shipVia": 2, + "freight": 218.15, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 5, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10519, + "customerID": "CHOPS", + "employeeID": 6, + "orderDate": "1997-04-28 00:00:00.000", + "requiredDate": "1997-05-26 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 3, + "freight": 91.76, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 40, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10520, + "customerID": "SANTG", + "employeeID": 7, + "orderDate": "1997-04-29 00:00:00.000", + "requiredDate": "1997-05-27 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 1, + "freight": 13.37, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 8, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10521, + "customerID": "CACTU", + "employeeID": 8, + "orderDate": "1997-04-29 00:00:00.000", + "requiredDate": "1997-05-27 00:00:00.000", + "shippedDate": "1997-05-02 00:00:00.000", + "shipVia": 2, + "freight": 17.22, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 10, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10522, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1997-04-30 00:00:00.000", + "requiredDate": "1997-05-28 00:00:00.000", + "shippedDate": "1997-05-06 00:00:00.000", + "shipVia": 1, + "freight": 45.33, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10523, + "customerID": "SEVES", + "employeeID": 7, + "orderDate": "1997-05-01 00:00:00.000", + "requiredDate": "1997-05-29 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 2, + "freight": 77.63, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 20, + "unitPrice": 81, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 37, + "unitPrice": 26, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10524, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-05-01 00:00:00.000", + "requiredDate": "1997-05-29 00:00:00.000", + "shippedDate": "1997-05-07 00:00:00.000", + "shipVia": 2, + "freight": 244.79, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 2, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 10, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 60, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10525, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1997-05-02 00:00:00.000", + "requiredDate": "1997-05-30 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 2, + "freight": 11.06, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10526, + "customerID": "WARTH", + "employeeID": 4, + "orderDate": "1997-05-05 00:00:00.000", + "requiredDate": "1997-06-02 00:00:00.000", + "shippedDate": "1997-05-15 00:00:00.000", + "shipVia": 2, + "freight": 58.59, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 8, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10527, + "customerID": "QUICK", + "employeeID": 7, + "orderDate": "1997-05-05 00:00:00.000", + "requiredDate": "1997-06-02 00:00:00.000", + "shippedDate": "1997-05-07 00:00:00.000", + "shipVia": 1, + "freight": 41.9, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10528, + "customerID": "GREAL", + "employeeID": 6, + "orderDate": "1997-05-06 00:00:00.000", + "requiredDate": "1997-05-20 00:00:00.000", + "shippedDate": "1997-05-09 00:00:00.000", + "shipVia": 2, + "freight": 3.35, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 3, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 8, + "discount": 0.2 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10529, + "customerID": "MAISD", + "employeeID": 5, + "orderDate": "1997-05-07 00:00:00.000", + "requiredDate": "1997-06-04 00:00:00.000", + "shippedDate": "1997-05-09 00:00:00.000", + "shipVia": 2, + "freight": 66.69, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 14, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10530, + "customerID": "PICCO", + "employeeID": 3, + "orderDate": "1997-05-08 00:00:00.000", + "requiredDate": "1997-06-05 00:00:00.000", + "shippedDate": "1997-05-12 00:00:00.000", + "shipVia": 2, + "freight": 339.22, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 40, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 25, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10531, + "customerID": "OCEAN", + "employeeID": 7, + "orderDate": "1997-05-08 00:00:00.000", + "requiredDate": "1997-06-05 00:00:00.000", + "shippedDate": "1997-05-19 00:00:00.000", + "shipVia": 1, + "freight": 8.12, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10532, + "customerID": "EASTC", + "employeeID": 7, + "orderDate": "1997-05-09 00:00:00.000", + "requiredDate": "1997-06-06 00:00:00.000", + "shippedDate": "1997-05-12 00:00:00.000", + "shipVia": 3, + "freight": 74.46, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10536, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-05-14 00:00:00.000", + "requiredDate": "1997-06-11 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 2, + "freight": 58.88, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10537, + "customerID": "RICSU", + "employeeID": 1, + "orderDate": "1997-05-14 00:00:00.000", + "requiredDate": "1997-05-28 00:00:00.000", + "shippedDate": "1997-05-19 00:00:00.000", + "shipVia": 1, + "freight": 78.85, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 6, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 21, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10538, + "customerID": "BSBEV", + "employeeID": 9, + "orderDate": "1997-05-15 00:00:00.000", + "requiredDate": "1997-06-12 00:00:00.000", + "shippedDate": "1997-05-16 00:00:00.000", + "shipVia": 3, + "freight": 4.87, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 7, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10539, + "customerID": "BSBEV", + "employeeID": 6, + "orderDate": "1997-05-16 00:00:00.000", + "requiredDate": "1997-06-13 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 3, + "freight": 12.36, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 8, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 15, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 6, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10540, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1997-05-19 00:00:00.000", + "requiredDate": "1997-06-16 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 3, + "freight": 1007.64, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 40, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10541, + "customerID": "HANAR", + "employeeID": 2, + "orderDate": "1997-05-19 00:00:00.000", + "requiredDate": "1997-06-16 00:00:00.000", + "shippedDate": "1997-05-29 00:00:00.000", + "shipVia": 1, + "freight": 68.65, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0.1 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 36, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 9, + "discount": 0.1 + } + ] + }, + { + "orderID": 10534, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1997-05-12 00:00:00.000", + "requiredDate": "1997-06-09 00:00:00.000", + "shippedDate": "1997-05-14 00:00:00.000", + "shipVia": 2, + "freight": 27.94, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 10, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10533, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1997-05-12 00:00:00.000", + "requiredDate": "1997-06-09 00:00:00.000", + "shippedDate": "1997-05-22 00:00:00.000", + "shipVia": 1, + "freight": 188.04, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 24, + "discount": 0.05 + } + ] + }, + { + "orderID": 10535, + "customerID": "ANTON", + "employeeID": 4, + "orderDate": "1997-05-13 00:00:00.000", + "requiredDate": "1997-06-10 00:00:00.000", + "shippedDate": "1997-05-21 00:00:00.000", + "shipVia": 1, + "freight": 15.64, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10543, + "customerID": "LILAS", + "employeeID": 8, + "orderDate": "1997-05-21 00:00:00.000", + "requiredDate": "1997-06-18 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 2, + "freight": 48.17, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10542, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-05-20 00:00:00.000", + "requiredDate": "1997-06-17 00:00:00.000", + "shippedDate": "1997-05-26 00:00:00.000", + "shipVia": 3, + "freight": 10.95, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 24, + "discount": 0.05 + } + ] + }, + { + "orderID": 10546, + "customerID": "VICTE", + "employeeID": 1, + "orderDate": "1997-05-23 00:00:00.000", + "requiredDate": "1997-06-20 00:00:00.000", + "shippedDate": "1997-05-27 00:00:00.000", + "shipVia": 3, + "freight": 194.72, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 10, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10547, + "customerID": "SEVES", + "employeeID": 3, + "orderDate": "1997-05-23 00:00:00.000", + "requiredDate": "1997-06-20 00:00:00.000", + "shippedDate": "1997-06-02 00:00:00.000", + "shipVia": 2, + "freight": 178.43, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10548, + "customerID": "TOMSP", + "employeeID": 3, + "orderDate": "1997-05-26 00:00:00.000", + "requiredDate": "1997-06-23 00:00:00.000", + "shippedDate": "1997-06-02 00:00:00.000", + "shipVia": 2, + "freight": 1.43, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0.25 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10550, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1997-05-28 00:00:00.000", + "requiredDate": "1997-06-25 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 3, + "freight": 4.32, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10544, + "customerID": "LONEP", + "employeeID": 4, + "orderDate": "1997-05-21 00:00:00.000", + "requiredDate": "1997-06-18 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 1, + "freight": 24.91, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 7, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10553, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-05-30 00:00:00.000", + "requiredDate": "1997-06-27 00:00:00.000", + "shippedDate": "1997-06-03 00:00:00.000", + "shipVia": 2, + "freight": 149.49, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 14, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 24, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10554, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-05-30 00:00:00.000", + "requiredDate": "1997-06-27 00:00:00.000", + "shippedDate": "1997-06-05 00:00:00.000", + "shipVia": 3, + "freight": 120.97, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10555, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-06-02 00:00:00.000", + "requiredDate": "1997-06-30 00:00:00.000", + "shippedDate": "1997-06-04 00:00:00.000", + "shipVia": 3, + "freight": 252.49, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 18, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10557, + "customerID": "LEHMS", + "employeeID": 9, + "orderDate": "1997-06-03 00:00:00.000", + "requiredDate": "1997-06-17 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 2, + "freight": 96.72, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10558, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-06-04 00:00:00.000", + "requiredDate": "1997-07-02 00:00:00.000", + "shippedDate": "1997-06-10 00:00:00.000", + "shipVia": 2, + "freight": 72.97, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 25, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 18, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 3, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10551, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1997-05-28 00:00:00.000", + "requiredDate": "1997-07-09 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 3, + "freight": 72.95, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10549, + "customerID": "QUICK", + "employeeID": 5, + "orderDate": "1997-05-27 00:00:00.000", + "requiredDate": "1997-06-10 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 1, + "freight": 171.24, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 55, + "discount": 0.15 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 100, + "discount": 0.15 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 48, + "discount": 0.15 + } + ] + }, + { + "orderID": 10552, + "customerID": "HILAA", + "employeeID": 2, + "orderDate": "1997-05-29 00:00:00.000", + "requiredDate": "1997-06-26 00:00:00.000", + "shippedDate": "1997-06-05 00:00:00.000", + "shipVia": 1, + "freight": 83.22, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 18, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10562, + "customerID": "REGGC", + "employeeID": 1, + "orderDate": "1997-06-09 00:00:00.000", + "requiredDate": "1997-07-07 00:00:00.000", + "shippedDate": "1997-06-12 00:00:00.000", + "shipVia": 1, + "freight": 22.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10563, + "customerID": "RICAR", + "employeeID": 2, + "orderDate": "1997-06-10 00:00:00.000", + "requiredDate": "1997-07-22 00:00:00.000", + "shippedDate": "1997-06-24 00:00:00.000", + "shipVia": 2, + "freight": 60.43, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 25, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10564, + "customerID": "RATTC", + "employeeID": 4, + "orderDate": "1997-06-10 00:00:00.000", + "requiredDate": "1997-07-08 00:00:00.000", + "shippedDate": "1997-06-16 00:00:00.000", + "shipVia": 3, + "freight": 13.75, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0.05 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10565, + "customerID": "MEREP", + "employeeID": 8, + "orderDate": "1997-06-11 00:00:00.000", + "requiredDate": "1997-07-09 00:00:00.000", + "shippedDate": "1997-06-18 00:00:00.000", + "shipVia": 2, + "freight": 7.15, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10566, + "customerID": "BLONP", + "employeeID": 9, + "orderDate": "1997-06-12 00:00:00.000", + "requiredDate": "1997-07-10 00:00:00.000", + "shippedDate": "1997-06-18 00:00:00.000", + "shipVia": 1, + "freight": 88.4, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 18, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10567, + "customerID": "HUNGO", + "employeeID": 1, + "orderDate": "1997-06-12 00:00:00.000", + "requiredDate": "1997-07-10 00:00:00.000", + "shippedDate": "1997-06-17 00:00:00.000", + "shipVia": 1, + "freight": 33.97, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 60, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 3, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10559, + "customerID": "BLONP", + "employeeID": 6, + "orderDate": "1997-06-05 00:00:00.000", + "requiredDate": "1997-07-03 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 1, + "freight": 8.05, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 18, + "discount": 0.05 + } + ] + }, + { + "orderID": 10569, + "customerID": "RATTC", + "employeeID": 5, + "orderDate": "1997-06-16 00:00:00.000", + "requiredDate": "1997-07-14 00:00:00.000", + "shippedDate": "1997-07-11 00:00:00.000", + "shipVia": 1, + "freight": 58.98, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10560, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-06-06 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-09 00:00:00.000", + "shipVia": 1, + "freight": 36.65, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10570, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-06-17 00:00:00.000", + "requiredDate": "1997-07-15 00:00:00.000", + "shippedDate": "1997-06-19 00:00:00.000", + "shipVia": 3, + "freight": 188.99, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10571, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-06-17 00:00:00.000", + "requiredDate": "1997-07-29 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 3, + "freight": 26.06, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 11, + "discount": 0.15 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 28, + "discount": 0.15 + } + ] + }, + { + "orderID": 10572, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-06-18 00:00:00.000", + "requiredDate": "1997-07-16 00:00:00.000", + "shippedDate": "1997-06-25 00:00:00.000", + "shipVia": 2, + "freight": 116.43, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 50, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10561, + "customerID": "FOLKO", + "employeeID": 2, + "orderDate": "1997-06-06 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-09 00:00:00.000", + "shipVia": 2, + "freight": 242.21, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10573, + "customerID": "ANTON", + "employeeID": 7, + "orderDate": "1997-06-19 00:00:00.000", + "requiredDate": "1997-07-17 00:00:00.000", + "shippedDate": "1997-06-20 00:00:00.000", + "shipVia": 3, + "freight": 84.84, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 18, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 40, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10574, + "customerID": "TRAIH", + "employeeID": 4, + "orderDate": "1997-06-19 00:00:00.000", + "requiredDate": "1997-07-17 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 2, + "freight": 37.6, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 2, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10578, + "customerID": "BSBEV", + "employeeID": 4, + "orderDate": "1997-06-24 00:00:00.000", + "requiredDate": "1997-07-22 00:00:00.000", + "shippedDate": "1997-07-25 00:00:00.000", + "shipVia": 3, + "freight": 29.6, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10579, + "customerID": "LETSS", + "employeeID": 1, + "orderDate": "1997-06-25 00:00:00.000", + "requiredDate": "1997-07-23 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 2, + "freight": 13.73, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10580, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-06-26 00:00:00.000", + "requiredDate": "1997-07-24 00:00:00.000", + "shippedDate": "1997-07-01 00:00:00.000", + "shipVia": 3, + "freight": 75.89, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 9, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10582, + "customerID": "BLAUS", + "employeeID": 3, + "orderDate": "1997-06-27 00:00:00.000", + "requiredDate": "1997-07-25 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 2, + "freight": 27.71, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 4, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10583, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-06-30 00:00:00.000", + "requiredDate": "1997-07-28 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 2, + "freight": 7.28, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 10, + "discount": 0.15 + } + ] + }, + { + "orderID": 10577, + "customerID": "TRAIH", + "employeeID": 9, + "orderDate": "1997-06-23 00:00:00.000", + "requiredDate": "1997-08-04 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 2, + "freight": 25.41, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 77, + "unitPrice": 13, + "quantity": 18, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10576, + "customerID": "TORTU", + "employeeID": 3, + "orderDate": "1997-06-23 00:00:00.000", + "requiredDate": "1997-07-07 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 3, + "freight": 18.56, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10587, + "customerID": "QUEDE", + "employeeID": 1, + "orderDate": "1997-07-02 00:00:00.000", + "requiredDate": "1997-07-30 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 1, + "freight": 62.52, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 6, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10588, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-07-03 00:00:00.000", + "requiredDate": "1997-07-31 00:00:00.000", + "shippedDate": "1997-07-10 00:00:00.000", + "shipVia": 3, + "freight": 194.67, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 100, + "discount": 0.2 + } + ] + }, + { + "orderID": 10590, + "customerID": "MEREP", + "employeeID": 4, + "orderDate": "1997-07-07 00:00:00.000", + "requiredDate": "1997-08-04 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 3, + "freight": 44.77, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10575, + "customerID": "MORGK", + "employeeID": 5, + "orderDate": "1997-06-20 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 1, + "freight": 127.34, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 12, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10591, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1997-07-07 00:00:00.000", + "requiredDate": "1997-07-21 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 1, + "freight": 55.92, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10595, + "customerID": "ERNSH", + "employeeID": 2, + "orderDate": "1997-07-10 00:00:00.000", + "requiredDate": "1997-08-07 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 1, + "freight": 96.78, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 65, + "discount": 0.25 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 120, + "discount": 0.25 + } + ] + }, + { + "orderID": 10596, + "customerID": "WHITC", + "employeeID": 8, + "orderDate": "1997-07-11 00:00:00.000", + "requiredDate": "1997-08-08 00:00:00.000", + "shippedDate": "1997-08-12 00:00:00.000", + "shipVia": 1, + "freight": 16.34, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10597, + "customerID": "PICCO", + "employeeID": 7, + "orderDate": "1997-07-11 00:00:00.000", + "requiredDate": "1997-08-08 00:00:00.000", + "shippedDate": "1997-07-18 00:00:00.000", + "shipVia": 3, + "freight": 35.12, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0.2 + } + ] + }, + { + "orderID": 10598, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1997-07-14 00:00:00.000", + "requiredDate": "1997-08-11 00:00:00.000", + "shippedDate": "1997-07-18 00:00:00.000", + "shipVia": 3, + "freight": 44.42, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 50, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10600, + "customerID": "HUNGC", + "employeeID": 4, + "orderDate": "1997-07-16 00:00:00.000", + "requiredDate": "1997-08-13 00:00:00.000", + "shippedDate": "1997-07-21 00:00:00.000", + "shipVia": 1, + "freight": 45.13, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 4, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10601, + "customerID": "HILAA", + "employeeID": 7, + "orderDate": "1997-07-16 00:00:00.000", + "requiredDate": "1997-08-27 00:00:00.000", + "shippedDate": "1997-07-22 00:00:00.000", + "shipVia": 1, + "freight": 58.3, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 60, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10603, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-07-18 00:00:00.000", + "requiredDate": "1997-08-15 00:00:00.000", + "shippedDate": "1997-08-08 00:00:00.000", + "shipVia": 2, + "freight": 48.77, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 48, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10604, + "customerID": "FURIB", + "employeeID": 1, + "orderDate": "1997-07-18 00:00:00.000", + "requiredDate": "1997-08-15 00:00:00.000", + "shippedDate": "1997-07-29 00:00:00.000", + "shipVia": 1, + "freight": 7.46, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10605, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1997-07-21 00:00:00.000", + "requiredDate": "1997-08-18 00:00:00.000", + "shippedDate": "1997-07-29 00:00:00.000", + "shipVia": 2, + "freight": 379.13, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10606, + "customerID": "TRADH", + "employeeID": 4, + "orderDate": "1997-07-22 00:00:00.000", + "requiredDate": "1997-08-19 00:00:00.000", + "shippedDate": "1997-07-31 00:00:00.000", + "shipVia": 3, + "freight": 79.4, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10594, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1997-07-09 00:00:00.000", + "requiredDate": "1997-08-06 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 2, + "freight": 5.24, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10593, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1997-07-09 00:00:00.000", + "requiredDate": "1997-08-06 00:00:00.000", + "shippedDate": "1997-08-13 00:00:00.000", + "shipVia": 2, + "freight": 174.2, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 4, + "discount": 0.2 + } + ] + }, + { + "orderID": 10592, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-07-08 00:00:00.000", + "requiredDate": "1997-08-05 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 1, + "freight": 32.1, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 5, + "discount": 0.05 + } + ] + }, + { + "orderID": 10607, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-07-22 00:00:00.000", + "requiredDate": "1997-08-19 00:00:00.000", + "shippedDate": "1997-07-25 00:00:00.000", + "shipVia": 1, + "freight": 200.24, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 45, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 100, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 42, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10609, + "customerID": "DUMON", + "employeeID": 7, + "orderDate": "1997-07-24 00:00:00.000", + "requiredDate": "1997-08-21 00:00:00.000", + "shippedDate": "1997-07-30 00:00:00.000", + "shipVia": 2, + "freight": 1.85, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10614, + "customerID": "BLAUS", + "employeeID": 8, + "orderDate": "1997-07-29 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 3, + "freight": 1.93, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 14, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 8, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10616, + "customerID": "GREAL", + "employeeID": 1, + "orderDate": "1997-07-31 00:00:00.000", + "requiredDate": "1997-08-28 00:00:00.000", + "shippedDate": "1997-08-05 00:00:00.000", + "shipVia": 2, + "freight": 116.53, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 14, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10618, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1997-08-01 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-08 00:00:00.000", + "shipVia": 1, + "freight": 154.68, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 70, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10619, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-08-04 00:00:00.000", + "requiredDate": "1997-09-01 00:00:00.000", + "shippedDate": "1997-08-07 00:00:00.000", + "shipVia": 3, + "freight": 91.05, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 42, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10612, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1997-07-28 00:00:00.000", + "requiredDate": "1997-08-25 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 544.08, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 70, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 55, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 18, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 40, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 80, + "discount": 0 + } + ] + }, + { + "orderID": 10613, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1997-07-29 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 8.11, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10611, + "customerID": "WOLZA", + "employeeID": 6, + "orderDate": "1997-07-25 00:00:00.000", + "requiredDate": "1997-08-22 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 80.65, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10621, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-08-05 00:00:00.000", + "requiredDate": "1997-09-02 00:00:00.000", + "shippedDate": "1997-08-11 00:00:00.000", + "shipVia": 2, + "freight": 23.73, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 5, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10620, + "customerID": "LAUGB", + "employeeID": 2, + "orderDate": "1997-08-05 00:00:00.000", + "requiredDate": "1997-09-02 00:00:00.000", + "shippedDate": "1997-08-14 00:00:00.000", + "shipVia": 3, + "freight": 0.94, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 5, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10625, + "customerID": "ANATR", + "employeeID": 3, + "orderDate": "1997-08-08 00:00:00.000", + "requiredDate": "1997-09-05 00:00:00.000", + "shippedDate": "1997-08-14 00:00:00.000", + "shipVia": 1, + "freight": 43.9, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 3, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10623, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-08-07 00:00:00.000", + "requiredDate": "1997-09-04 00:00:00.000", + "shippedDate": "1997-08-12 00:00:00.000", + "shipVia": 2, + "freight": 97.18, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 21, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 3, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10622, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1997-08-06 00:00:00.000", + "requiredDate": "1997-09-03 00:00:00.000", + "shippedDate": "1997-08-11 00:00:00.000", + "shipVia": 3, + "freight": 50.97, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0.2 + } + ] + }, + { + "orderID": 10624, + "customerID": "THECR", + "employeeID": 4, + "orderDate": "1997-08-07 00:00:00.000", + "requiredDate": "1997-09-04 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 2, + "freight": 94.8, + "shipName": "The Cracker Box", + "shipAddress": { + "street": "55 Grizzly Peak Rd.", + "city": "Butte", + "region": "MT", + "postalCode": 59801, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 6, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10626, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-08-11 00:00:00.000", + "requiredDate": "1997-09-08 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 2, + "freight": 138.69, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10627, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-08-11 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 107.46, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 35, + "discount": 0.15 + } + ] + }, + { + "orderID": 10630, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-08-13 00:00:00.000", + "requiredDate": "1997-09-10 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 2, + "freight": 32.35, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10629, + "customerID": "GODOS", + "employeeID": 4, + "orderDate": "1997-08-12 00:00:00.000", + "requiredDate": "1997-09-09 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 3, + "freight": 85.46, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10632, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1997-08-14 00:00:00.000", + "requiredDate": "1997-09-11 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 1, + "freight": 41.38, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10633, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1997-08-15 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-18 00:00:00.000", + "shipVia": 3, + "freight": 477.9, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 36, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 13, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 80, + "discount": 0.15 + } + ] + }, + { + "orderID": 10634, + "customerID": "FOLIG", + "employeeID": 4, + "orderDate": "1997-08-15 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 487.38, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 35, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 2, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10638, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1997-08-20 00:00:00.000", + "requiredDate": "1997-09-17 00:00:00.000", + "shippedDate": "1997-09-01 00:00:00.000", + "shipVia": 1, + "freight": 158.44, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10640, + "customerID": "WANDK", + "employeeID": 4, + "orderDate": "1997-08-21 00:00:00.000", + "requiredDate": "1997-09-18 00:00:00.000", + "shippedDate": "1997-08-28 00:00:00.000", + "shipVia": 1, + "freight": 23.55, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10641, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1997-08-22 00:00:00.000", + "requiredDate": "1997-09-19 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 2, + "freight": 179.61, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 50, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10642, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1997-08-22 00:00:00.000", + "requiredDate": "1997-09-19 00:00:00.000", + "shippedDate": "1997-09-05 00:00:00.000", + "shipVia": 3, + "freight": 41.89, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10643, + "customerID": "ALFKI", + "employeeID": 6, + "orderDate": "1997-08-25 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-09-02 00:00:00.000", + "shipVia": 1, + "freight": 29.46, + "shipName": "Alfreds Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 2, + "discount": 0.25 + } + ] + }, + { + "orderID": 10636, + "customerID": "WARTH", + "employeeID": 4, + "orderDate": "1997-08-19 00:00:00.000", + "requiredDate": "1997-09-16 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 1, + "freight": 1.15, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 25, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10644, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1997-08-25 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-09-01 00:00:00.000", + "shipVia": 2, + "freight": 0.14, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 21, + "discount": 0.1 + } + ] + }, + { + "orderID": 10635, + "customerID": "MAGAA", + "employeeID": 8, + "orderDate": "1997-08-18 00:00:00.000", + "requiredDate": "1997-09-15 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 47.46, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 4, + "unitPrice": 22, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10637, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1997-08-19 00:00:00.000", + "requiredDate": "1997-09-16 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 1, + "freight": 201.29, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10645, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1997-08-26 00:00:00.000", + "requiredDate": "1997-09-23 00:00:00.000", + "shippedDate": "1997-09-02 00:00:00.000", + "shipVia": 1, + "freight": 12.41, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10649, + "customerID": "MAISD", + "employeeID": 5, + "orderDate": "1997-08-28 00:00:00.000", + "requiredDate": "1997-09-25 00:00:00.000", + "shippedDate": "1997-08-29 00:00:00.000", + "shipVia": 3, + "freight": 6.2, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10650, + "customerID": "FAMIA", + "employeeID": 5, + "orderDate": "1997-08-29 00:00:00.000", + "requiredDate": "1997-09-26 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 3, + "freight": 176.81, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10651, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1997-09-01 00:00:00.000", + "requiredDate": "1997-09-29 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 2, + "freight": 20.6, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10652, + "customerID": "GOURL", + "employeeID": 4, + "orderDate": "1997-09-01 00:00:00.000", + "requiredDate": "1997-09-29 00:00:00.000", + "shippedDate": "1997-09-08 00:00:00.000", + "shipVia": 2, + "freight": 7.14, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10653, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1997-09-02 00:00:00.000", + "requiredDate": "1997-09-30 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 93.25, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10654, + "customerID": "BERGS", + "employeeID": 5, + "orderDate": "1997-09-02 00:00:00.000", + "requiredDate": "1997-09-30 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 1, + "freight": 55.26, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10647, + "customerID": "QUEDE", + "employeeID": 4, + "orderDate": "1997-08-27 00:00:00.000", + "requiredDate": "1997-09-10 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 2, + "freight": 45.54, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10656, + "customerID": "GREAL", + "employeeID": 6, + "orderDate": "1997-09-04 00:00:00.000", + "requiredDate": "1997-10-02 00:00:00.000", + "shippedDate": "1997-09-10 00:00:00.000", + "shipVia": 1, + "freight": 57.15, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 3, + "discount": 0.1 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10657, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1997-09-04 00:00:00.000", + "requiredDate": "1997-10-02 00:00:00.000", + "shippedDate": "1997-09-15 00:00:00.000", + "shipVia": 2, + "freight": 352.69, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 24, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 45, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 45, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10658, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-09-05 00:00:00.000", + "requiredDate": "1997-10-03 00:00:00.000", + "shippedDate": "1997-09-08 00:00:00.000", + "shipVia": 1, + "freight": 364.15, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 55, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 70, + "discount": 0.05 + } + ] + }, + { + "orderID": 10646, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-08-27 00:00:00.000", + "requiredDate": "1997-10-08 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 3, + "freight": 142.33, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10648, + "customerID": "RICAR", + "employeeID": 5, + "orderDate": "1997-08-28 00:00:00.000", + "requiredDate": "1997-10-09 00:00:00.000", + "shippedDate": "1997-09-09 00:00:00.000", + "shipVia": 2, + "freight": 14.25, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10659, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1997-09-05 00:00:00.000", + "requiredDate": "1997-10-03 00:00:00.000", + "shippedDate": "1997-09-10 00:00:00.000", + "shipVia": 2, + "freight": 105.81, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10664, + "customerID": "FURIB", + "employeeID": 1, + "orderDate": "1997-09-10 00:00:00.000", + "requiredDate": "1997-10-08 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 3, + "freight": 1.27, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 12, + "discount": 0.15 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10661, + "customerID": "HUNGO", + "employeeID": 7, + "orderDate": "1997-09-09 00:00:00.000", + "requiredDate": "1997-10-07 00:00:00.000", + "shippedDate": "1997-09-15 00:00:00.000", + "shipVia": 3, + "freight": 17.55, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 49, + "discount": 0.2 + } + ] + }, + { + "orderID": 10665, + "customerID": "LONEP", + "employeeID": 1, + "orderDate": "1997-09-11 00:00:00.000", + "requiredDate": "1997-10-09 00:00:00.000", + "shippedDate": "1997-09-17 00:00:00.000", + "shipVia": 2, + "freight": 26.31, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10663, + "customerID": "BONAP", + "employeeID": 2, + "orderDate": "1997-09-10 00:00:00.000", + "requiredDate": "1997-09-24 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 2, + "freight": 113.15, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10666, + "customerID": "RICSU", + "employeeID": 7, + "orderDate": "1997-09-12 00:00:00.000", + "requiredDate": "1997-10-10 00:00:00.000", + "shippedDate": "1997-09-22 00:00:00.000", + "shipVia": 2, + "freight": 232.42, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 36, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10667, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1997-09-12 00:00:00.000", + "requiredDate": "1997-10-10 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 78.09, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 14, + "discount": 0.2 + } + ] + }, + { + "orderID": 10668, + "customerID": "WANDK", + "employeeID": 1, + "orderDate": "1997-09-15 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-09-23 00:00:00.000", + "shipVia": 2, + "freight": 47.22, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10670, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1997-09-16 00:00:00.000", + "requiredDate": "1997-10-14 00:00:00.000", + "shippedDate": "1997-09-18 00:00:00.000", + "shipVia": 1, + "freight": 203.48, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 32, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 60, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 50, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 25, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10672, + "customerID": "BERGS", + "employeeID": 9, + "orderDate": "1997-09-17 00:00:00.000", + "requiredDate": "1997-10-01 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 2, + "freight": 95.75, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10671, + "customerID": "FRANR", + "employeeID": 1, + "orderDate": "1997-09-17 00:00:00.000", + "requiredDate": "1997-10-15 00:00:00.000", + "shippedDate": "1997-09-24 00:00:00.000", + "shipVia": 1, + "freight": 30.34, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10673, + "customerID": "WILMK", + "employeeID": 2, + "orderDate": "1997-09-18 00:00:00.000", + "requiredDate": "1997-10-16 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 22.76, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 6, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 6, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10677, + "customerID": "ANTON", + "employeeID": 1, + "orderDate": "1997-09-22 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 3, + "freight": 4.03, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 8, + "discount": 0.15 + } + ] + }, + { + "orderID": 10678, + "customerID": "SAVEA", + "employeeID": 7, + "orderDate": "1997-09-23 00:00:00.000", + "requiredDate": "1997-10-21 00:00:00.000", + "shippedDate": "1997-10-16 00:00:00.000", + "shipVia": 3, + "freight": 388.98, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 100, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 120, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10680, + "customerID": "OLDWO", + "employeeID": 1, + "orderDate": "1997-09-24 00:00:00.000", + "requiredDate": "1997-10-22 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 1, + "freight": 26.61, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10681, + "customerID": "GREAL", + "employeeID": 3, + "orderDate": "1997-09-25 00:00:00.000", + "requiredDate": "1997-10-23 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 3, + "freight": 76.13, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10682, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1997-09-25 00:00:00.000", + "requiredDate": "1997-10-23 00:00:00.000", + "shippedDate": "1997-10-01 00:00:00.000", + "shipVia": 2, + "freight": 36.13, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 4, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10675, + "customerID": "FRANK", + "employeeID": 5, + "orderDate": "1997-09-19 00:00:00.000", + "requiredDate": "1997-10-17 00:00:00.000", + "shippedDate": "1997-09-23 00:00:00.000", + "shipVia": 2, + "freight": 31.85, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10684, + "customerID": "OTTIK", + "employeeID": 3, + "orderDate": "1997-09-26 00:00:00.000", + "requiredDate": "1997-10-24 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 1, + "freight": 145.63, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10685, + "customerID": "GOURL", + "employeeID": 4, + "orderDate": "1997-09-29 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 2, + "freight": 33.75, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 4, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10676, + "customerID": "TORTU", + "employeeID": 2, + "orderDate": "1997-09-22 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-09-29 00:00:00.000", + "shipVia": 2, + "freight": 2.01, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 2, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10686, + "customerID": "PICCO", + "employeeID": 2, + "orderDate": "1997-09-30 00:00:00.000", + "requiredDate": "1997-10-28 00:00:00.000", + "shippedDate": "1997-10-08 00:00:00.000", + "shipVia": 1, + "freight": 96.5, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10687, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-09-30 00:00:00.000", + "requiredDate": "1997-10-28 00:00:00.000", + "shippedDate": "1997-10-30 00:00:00.000", + "shipVia": 2, + "freight": 296.43, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 6, + "discount": 0.25 + } + ] + }, + { + "orderID": 10691, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-10-03 00:00:00.000", + "requiredDate": "1997-11-14 00:00:00.000", + "shippedDate": "1997-10-22 00:00:00.000", + "shipVia": 2, + "freight": 810.05, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 24, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 40, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 48, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10693, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1997-10-06 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-10-10 00:00:00.000", + "shipVia": 3, + "freight": 139.34, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 6, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10694, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1997-10-06 00:00:00.000", + "requiredDate": "1997-11-03 00:00:00.000", + "shippedDate": "1997-10-09 00:00:00.000", + "shipVia": 3, + "freight": 398.36, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 90, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10695, + "customerID": "WILMK", + "employeeID": 7, + "orderDate": "1997-10-07 00:00:00.000", + "requiredDate": "1997-11-18 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 1, + "freight": 16.72, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 10, + "discount": 0 + }, + { + "productID": 12, + "unitPrice": 38, + "quantity": 4, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10696, + "customerID": "WHITC", + "employeeID": 8, + "orderDate": "1997-10-08 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 3, + "freight": 102.55, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10697, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1997-10-08 00:00:00.000", + "requiredDate": "1997-11-05 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 1, + "freight": 45.52, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 9, + "discount": 0.25 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10698, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-10-09 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-17 00:00:00.000", + "shipVia": 1, + "freight": 272.47, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 65, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 8, + "discount": 0.05 + } + ] + }, + { + "orderID": 10690, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1997-10-02 00:00:00.000", + "requiredDate": "1997-10-30 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 1, + "freight": 15.8, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10702, + "customerID": "ALFKI", + "employeeID": 4, + "orderDate": "1997-10-13 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-10-21 00:00:00.000", + "shipVia": 1, + "freight": 23.94, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 15, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10700, + "customerID": "SAVEA", + "employeeID": 3, + "orderDate": "1997-10-10 00:00:00.000", + "requiredDate": "1997-11-07 00:00:00.000", + "shippedDate": "1997-10-16 00:00:00.000", + "shipVia": 1, + "freight": 65.1, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 60, + "discount": 0.2 + } + ] + }, + { + "orderID": 10688, + "customerID": "VAFFE", + "employeeID": 4, + "orderDate": "1997-10-01 00:00:00.000", + "requiredDate": "1997-10-15 00:00:00.000", + "shippedDate": "1997-10-07 00:00:00.000", + "shipVia": 2, + "freight": 299.09, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10701, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1997-10-13 00:00:00.000", + "requiredDate": "1997-10-27 00:00:00.000", + "shippedDate": "1997-10-15 00:00:00.000", + "shipVia": 3, + "freight": 220.31, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 42, + "discount": 0.15 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 35, + "discount": 0.15 + } + ] + }, + { + "orderID": 10703, + "customerID": "FOLKO", + "employeeID": 6, + "orderDate": "1997-10-14 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-10-20 00:00:00.000", + "shipVia": 2, + "freight": 152.3, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 5, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 35, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10704, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1997-10-14 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-11-07 00:00:00.000", + "shipVia": 1, + "freight": 4.78, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 6, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10708, + "customerID": "THEBI", + "employeeID": 6, + "orderDate": "1997-10-17 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 2.96, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 4, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10709, + "customerID": "GOURL", + "employeeID": 1, + "orderDate": "1997-10-17 00:00:00.000", + "requiredDate": "1997-11-14 00:00:00.000", + "shippedDate": "1997-11-20 00:00:00.000", + "shipVia": 3, + "freight": 210.8, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 40, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 28, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10710, + "customerID": "FRANS", + "employeeID": 1, + "orderDate": "1997-10-20 00:00:00.000", + "requiredDate": "1997-11-17 00:00:00.000", + "shippedDate": "1997-10-23 00:00:00.000", + "shipVia": 1, + "freight": 4.98, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 5, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10711, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-10-21 00:00:00.000", + "requiredDate": "1997-12-02 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 2, + "freight": 52.41, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 42, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 120, + "discount": 0 + } + ] + }, + { + "orderID": 10712, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1997-10-21 00:00:00.000", + "requiredDate": "1997-11-18 00:00:00.000", + "shippedDate": "1997-10-31 00:00:00.000", + "shipVia": 1, + "freight": 89.93, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 3, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10713, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1997-10-22 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-24 00:00:00.000", + "shipVia": 1, + "freight": 167.05, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 30, + "discount": 0 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 110, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10707, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1997-10-16 00:00:00.000", + "requiredDate": "1997-10-30 00:00:00.000", + "shippedDate": "1997-10-23 00:00:00.000", + "shipVia": 3, + "freight": 21.74, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 21, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 40, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 28, + "discount": 0.15 + } + ] + }, + { + "orderID": 10715, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1997-10-23 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 1, + "freight": 63.2, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 21, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10706, + "customerID": "OLDWO", + "employeeID": 8, + "orderDate": "1997-10-16 00:00:00.000", + "requiredDate": "1997-11-13 00:00:00.000", + "shippedDate": "1997-10-21 00:00:00.000", + "shipVia": 3, + "freight": 135.63, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 24, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10705, + "customerID": "HILAA", + "employeeID": 9, + "orderDate": "1997-10-15 00:00:00.000", + "requiredDate": "1997-11-12 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 2, + "freight": 3.52, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 4, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10714, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-10-22 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-27 00:00:00.000", + "shipVia": 3, + "freight": 24.49, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 18, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 27, + "discount": 0.25 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10719, + "customerID": "LETSS", + "employeeID": 8, + "orderDate": "1997-10-27 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 51.44, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 3, + "discount": 0.25 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10720, + "customerID": "QUEDE", + "employeeID": 8, + "orderDate": "1997-10-28 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 9.53, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10722, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-10-29 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-04 00:00:00.000", + "shipVia": 1, + "freight": 74.58, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 3, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 45, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 42, + "discount": 0 + } + ] + }, + { + "orderID": 10724, + "customerID": "MEREP", + "employeeID": 8, + "orderDate": "1997-10-30 00:00:00.000", + "requiredDate": "1997-12-11 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 57.75, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10716, + "customerID": "RANCH", + "employeeID": 4, + "orderDate": "1997-10-24 00:00:00.000", + "requiredDate": "1997-11-21 00:00:00.000", + "shippedDate": "1997-10-27 00:00:00.000", + "shipVia": 2, + "freight": 22.57, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 5, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 7, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10726, + "customerID": "EASTC", + "employeeID": 4, + "orderDate": "1997-11-03 00:00:00.000", + "requiredDate": "1997-11-17 00:00:00.000", + "shippedDate": "1997-12-05 00:00:00.000", + "shipVia": 1, + "freight": 16.56, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 25, + "discount": 0 + }, + { + "productID": 11, + "unitPrice": 21, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10717, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1997-10-24 00:00:00.000", + "requiredDate": "1997-11-21 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 2, + "freight": 59.25, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 32, + "discount": 0.05 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 15, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10727, + "customerID": "REGGC", + "employeeID": 2, + "orderDate": "1997-11-03 00:00:00.000", + "requiredDate": "1997-12-01 00:00:00.000", + "shippedDate": "1997-12-05 00:00:00.000", + "shipVia": 1, + "freight": 89.9, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10728, + "customerID": "QUEEN", + "employeeID": 4, + "orderDate": "1997-11-04 00:00:00.000", + "requiredDate": "1997-12-02 00:00:00.000", + "shippedDate": "1997-11-11 00:00:00.000", + "shipVia": 2, + "freight": 58.33, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 12, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10729, + "customerID": "LINOD", + "employeeID": 8, + "orderDate": "1997-11-04 00:00:00.000", + "requiredDate": "1997-12-16 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 3, + "freight": 141.06, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 50, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10730, + "customerID": "BONAP", + "employeeID": 5, + "orderDate": "1997-11-05 00:00:00.000", + "requiredDate": "1997-12-03 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 1, + "freight": 20.12, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 3, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10718, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-10-27 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 3, + "freight": 170.88, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 36, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 40, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10725, + "customerID": "FAMIA", + "employeeID": 4, + "orderDate": "1997-10-31 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 3, + "freight": 10.83, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 4, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10731, + "customerID": "CHOPS", + "employeeID": 7, + "orderDate": "1997-11-06 00:00:00.000", + "requiredDate": "1997-12-04 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 1, + "freight": 96.65, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10735, + "customerID": "LETSS", + "employeeID": 6, + "orderDate": "1997-11-10 00:00:00.000", + "requiredDate": "1997-12-08 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 45.97, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10736, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-11-11 00:00:00.000", + "requiredDate": "1997-12-09 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 44.1, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 40, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10737, + "customerID": "VINET", + "employeeID": 2, + "orderDate": "1997-11-11 00:00:00.000", + "requiredDate": "1997-12-09 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 2, + "freight": 7.79, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 4, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10739, + "customerID": "VINET", + "employeeID": 3, + "orderDate": "1997-11-12 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-17 00:00:00.000", + "shipVia": 3, + "freight": 11.08, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 6, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10740, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1997-11-13 00:00:00.000", + "requiredDate": "1997-12-11 00:00:00.000", + "shippedDate": "1997-11-25 00:00:00.000", + "shipVia": 2, + "freight": 81.88, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 14, + "discount": 0.2 + } + ] + }, + { + "orderID": 10733, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-11-07 00:00:00.000", + "requiredDate": "1997-12-05 00:00:00.000", + "shippedDate": "1997-11-10 00:00:00.000", + "shipVia": 3, + "freight": 110.11, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 16, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10742, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-11-14 00:00:00.000", + "requiredDate": "1997-12-12 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 3, + "freight": 243.73, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 50, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10734, + "customerID": "GOURL", + "employeeID": 2, + "orderDate": "1997-11-07 00:00:00.000", + "requiredDate": "1997-12-05 00:00:00.000", + "shippedDate": "1997-11-12 00:00:00.000", + "shipVia": 3, + "freight": 1.63, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10747, + "customerID": "PICCO", + "employeeID": 6, + "orderDate": "1997-11-19 00:00:00.000", + "requiredDate": "1997-12-17 00:00:00.000", + "shippedDate": "1997-11-26 00:00:00.000", + "shipVia": 1, + "freight": 117.33, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 8, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 35, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 9, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10748, + "customerID": "SAVEA", + "employeeID": 3, + "orderDate": "1997-11-20 00:00:00.000", + "requiredDate": "1997-12-18 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 1, + "freight": 232.55, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 44, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 40, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10749, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-11-20 00:00:00.000", + "requiredDate": "1997-12-18 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 61.53, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 15, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10750, + "customerID": "WARTH", + "employeeID": 9, + "orderDate": "1997-11-21 00:00:00.000", + "requiredDate": "1997-12-19 00:00:00.000", + "shippedDate": "1997-11-24 00:00:00.000", + "shipVia": 1, + "freight": 79.3, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 5, + "discount": 0.15 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10751, + "customerID": "RICSU", + "employeeID": 3, + "orderDate": "1997-11-24 00:00:00.000", + "requiredDate": "1997-12-22 00:00:00.000", + "shippedDate": "1997-12-03 00:00:00.000", + "shipVia": 3, + "freight": 130.79, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 30, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10752, + "customerID": "NORTS", + "employeeID": 2, + "orderDate": "1997-11-24 00:00:00.000", + "requiredDate": "1997-12-22 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 3, + "freight": 1.39, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 8, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10753, + "customerID": "FRANS", + "employeeID": 3, + "orderDate": "1997-11-25 00:00:00.000", + "requiredDate": "1997-12-23 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 1, + "freight": 7.7, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 4, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10745, + "customerID": "QUICK", + "employeeID": 9, + "orderDate": "1997-11-18 00:00:00.000", + "requiredDate": "1997-12-16 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 1, + "freight": 3.52, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 24, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 16, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 45, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10755, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-11-26 00:00:00.000", + "requiredDate": "1997-12-24 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 2, + "freight": 16.71, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 14, + "discount": 0.25 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 25, + "discount": 0.25 + } + ] + }, + { + "orderID": 10756, + "customerID": "SPLIR", + "employeeID": 8, + "orderDate": "1997-11-27 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-02 00:00:00.000", + "shipVia": 2, + "freight": 73.21, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10746, + "customerID": "CHOPS", + "employeeID": 1, + "orderDate": "1997-11-19 00:00:00.000", + "requiredDate": "1997-12-17 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 3, + "freight": 31.43, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 28, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 9, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10757, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-11-27 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 1, + "freight": 8.19, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 7, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10761, + "customerID": "RATTC", + "employeeID": 5, + "orderDate": "1997-12-02 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 2, + "freight": 18.66, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10762, + "customerID": "FOLKO", + "employeeID": 3, + "orderDate": "1997-12-02 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 1, + "freight": 328.74, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 28, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10763, + "customerID": "FOLIG", + "employeeID": 3, + "orderDate": "1997-12-03 00:00:00.000", + "requiredDate": "1997-12-31 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 3, + "freight": 37.35, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 6, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10764, + "customerID": "ERNSH", + "employeeID": 6, + "orderDate": "1997-12-03 00:00:00.000", + "requiredDate": "1997-12-31 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 3, + "freight": 145.45, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 130, + "discount": 0.1 + } + ] + }, + { + "orderID": 10766, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-12-05 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 1, + "freight": 157.55, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 40, + "discount": 0 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 35, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10760, + "customerID": "MAISD", + "employeeID": 4, + "orderDate": "1997-12-01 00:00:00.000", + "requiredDate": "1997-12-29 00:00:00.000", + "shippedDate": "1997-12-10 00:00:00.000", + "shipVia": 1, + "freight": 155.64, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10768, + "customerID": "AROUT", + "employeeID": 3, + "orderDate": "1997-12-08 00:00:00.000", + "requiredDate": "1998-01-05 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 2, + "freight": 146.32, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 4, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10759, + "customerID": "ANATR", + "employeeID": 3, + "orderDate": "1997-11-28 00:00:00.000", + "requiredDate": "1997-12-26 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 3, + "freight": 11.99, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10769, + "customerID": "VAFFE", + "employeeID": 3, + "orderDate": "1997-12-08 00:00:00.000", + "requiredDate": "1998-01-05 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 1, + "freight": 65.06, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10772, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-12-10 00:00:00.000", + "requiredDate": "1998-01-07 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 91.28, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10758, + "customerID": "RICSU", + "employeeID": 3, + "orderDate": "1997-11-28 00:00:00.000", + "requiredDate": "1997-12-26 00:00:00.000", + "shippedDate": "1997-12-04 00:00:00.000", + "shipVia": 3, + "freight": 138.17, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 40, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10773, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1997-12-11 00:00:00.000", + "requiredDate": "1998-01-08 00:00:00.000", + "shippedDate": "1997-12-16 00:00:00.000", + "shipVia": 3, + "freight": 96.43, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 33, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 70, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 7, + "discount": 0.2 + } + ] + }, + { + "orderID": 10775, + "customerID": "THECR", + "employeeID": 7, + "orderDate": "1997-12-12 00:00:00.000", + "requiredDate": "1998-01-09 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 20.25, + "shipName": "The Cracker Box", + "shipAddress": { + "street": "55 Grizzly Peak Rd.", + "city": "Butte", + "region": "MT", + "postalCode": 59801, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 6, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10774, + "customerID": "FOLKO", + "employeeID": 4, + "orderDate": "1997-12-11 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 1, + "freight": 48.2, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10779, + "customerID": "MORGK", + "employeeID": 3, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1998-01-13 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 2, + "freight": 58.13, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10780, + "customerID": "LILAS", + "employeeID": 2, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-25 00:00:00.000", + "shipVia": 1, + "freight": 42.13, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10781, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-12-17 00:00:00.000", + "requiredDate": "1998-01-14 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 3, + "freight": 73.16, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10783, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 124.98, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10784, + "customerID": "MAGAA", + "employeeID": 4, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-22 00:00:00.000", + "shipVia": 3, + "freight": 70.09, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 2, + "discount": 0.15 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10785, + "customerID": "GROSR", + "employeeID": 1, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-24 00:00:00.000", + "shipVia": 3, + "freight": 1.51, + "shipName": "GROSELLA-Restaurante", + "shipAddress": { + "street": "5ª Ave. Los Palos Grandes", + "city": "Caracas", + "region": "DF", + "postalCode": 1081, + "country": "Venezuela" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10786, + "customerID": "QUEEN", + "employeeID": 8, + "orderDate": "1997-12-19 00:00:00.000", + "requiredDate": "1998-01-16 00:00:00.000", + "shippedDate": "1997-12-23 00:00:00.000", + "shipVia": 1, + "freight": 110.87, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 42, + "discount": 0.2 + } + ] + }, + { + "orderID": 10776, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1997-12-15 00:00:00.000", + "requiredDate": "1998-01-12 00:00:00.000", + "shippedDate": "1997-12-18 00:00:00.000", + "shipVia": 3, + "freight": 351.53, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 27, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 120, + "discount": 0.05 + } + ] + }, + { + "orderID": 10787, + "customerID": "LAMAI", + "employeeID": 2, + "orderDate": "1997-12-19 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 249.93, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10791, + "customerID": "FRANK", + "employeeID": 6, + "orderDate": "1997-12-23 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1998-01-01 00:00:00.000", + "shipVia": 2, + "freight": 16.85, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10792, + "customerID": "WOLZA", + "employeeID": 1, + "orderDate": "1997-12-23 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 3, + "freight": 23.79, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10793, + "customerID": "AROUT", + "employeeID": 3, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-08 00:00:00.000", + "shipVia": 3, + "freight": 4.52, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10794, + "customerID": "QUEDE", + "employeeID": 6, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 1, + "freight": 21.49, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10790, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 28.23, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 3, + "discount": 0.15 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10796, + "customerID": "HILAA", + "employeeID": 3, + "orderDate": "1997-12-25 00:00:00.000", + "requiredDate": "1998-01-22 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 1, + "freight": 26.52, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 24, + "discount": 0.2 + } + ] + }, + { + "orderID": 10788, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 2, + "freight": 42.7, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10789, + "customerID": "FOLIG", + "employeeID": 1, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 2, + "freight": 100.6, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10800, + "customerID": "SEVES", + "employeeID": 1, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-01-23 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 3, + "freight": 137.44, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 7, + "discount": 0.1 + } + ] + }, + { + "orderID": 10801, + "customerID": "BOLID", + "employeeID": 4, + "orderDate": "1997-12-29 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 2, + "freight": 97.09, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10795, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-20 00:00:00.000", + "shipVia": 2, + "freight": 126.66, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 65, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10798, + "customerID": "ISLAT", + "employeeID": 2, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-01-23 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 1, + "freight": 2.33, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 2, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10799, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 3, + "freight": 30.76, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10805, + "customerID": "THEBI", + "employeeID": 2, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 3, + "freight": 237.34, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10802, + "customerID": "SIMOB", + "employeeID": 4, + "orderDate": "1997-12-29 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 2, + "freight": 257.26, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10803, + "customerID": "WELLI", + "employeeID": 4, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-06 00:00:00.000", + "shipVia": 1, + "freight": 55.23, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10808, + "customerID": "OLDWO", + "employeeID": 2, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 3, + "freight": 45.53, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0.15 + } + ] + }, + { + "orderID": 10810, + "customerID": "LAUGB", + "employeeID": 2, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 3, + "freight": 4.33, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 7, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10811, + "customerID": "LINOD", + "employeeID": 8, + "orderDate": "1998-01-02 00:00:00.000", + "requiredDate": "1998-01-30 00:00:00.000", + "shippedDate": "1998-01-08 00:00:00.000", + "shipVia": 1, + "freight": 31.22, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 18, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10804, + "customerID": "SEVES", + "employeeID": 6, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 2, + "freight": 27.33, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 36, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 24, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 4, + "discount": 0.15 + } + ] + }, + { + "orderID": 10814, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 3, + "freight": 130.94, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 8, + "discount": 0.15 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10812, + "customerID": "REGGC", + "employeeID": 5, + "orderDate": "1998-01-02 00:00:00.000", + "requiredDate": "1998-01-30 00:00:00.000", + "shippedDate": "1998-01-12 00:00:00.000", + "shipVia": 1, + "freight": 59.78, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 16, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10817, + "customerID": "KOENE", + "employeeID": 3, + "orderDate": "1998-01-06 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 306.07, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10806, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1997-12-31 00:00:00.000", + "requiredDate": "1998-01-28 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 2, + "freight": 22.11, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 2, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10816, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-01-06 00:00:00.000", + "requiredDate": "1998-02-03 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 2, + "freight": 719.78, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10813, + "customerID": "RICAR", + "employeeID": 1, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 1, + "freight": 47.38, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10818, + "customerID": "MAGAA", + "employeeID": 7, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-12 00:00:00.000", + "shipVia": 3, + "freight": 65.48, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 20, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10819, + "customerID": "CACTU", + "employeeID": 2, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-16 00:00:00.000", + "shipVia": 3, + "freight": 19.76, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 7, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10821, + "customerID": "SPLIR", + "employeeID": 1, + "orderDate": "1998-01-08 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-01-15 00:00:00.000", + "shipVia": 1, + "freight": 36.68, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10822, + "customerID": "TRAIH", + "employeeID": 6, + "orderDate": "1998-01-08 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-01-16 00:00:00.000", + "shipVia": 3, + "freight": 7, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10823, + "customerID": "LILAS", + "employeeID": 5, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 163.97, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10824, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 1.23, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 9, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10825, + "customerID": "DRACD", + "employeeID": 1, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 1, + "freight": 79.25, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 12, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10826, + "customerID": "BLONP", + "employeeID": 6, + "orderDate": "1998-01-12 00:00:00.000", + "requiredDate": "1998-02-09 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 1, + "freight": 7.09, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10827, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1998-01-12 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 2, + "freight": 63.54, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 15, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10828, + "customerID": "RANCH", + "employeeID": 9, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 1, + "freight": 90.85, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 5, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10829, + "customerID": "ISLAT", + "employeeID": 9, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-02-10 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 1, + "freight": 154.72, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 20, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10830, + "customerID": "TRADH", + "employeeID": 4, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 2, + "freight": 81.83, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 6, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 28, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10831, + "customerID": "SANTG", + "employeeID": 3, + "orderDate": "1998-01-14 00:00:00.000", + "requiredDate": "1998-02-11 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 2, + "freight": 72.19, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 8, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 9, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10832, + "customerID": "LAMAI", + "employeeID": 2, + "orderDate": "1998-01-14 00:00:00.000", + "requiredDate": "1998-02-11 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 2, + "freight": 43.26, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 16, + "discount": 0.2 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10833, + "customerID": "OTTIK", + "employeeID": 6, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 2, + "freight": 71.49, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 9, + "discount": 0.1 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 9, + "discount": 0.1 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10834, + "customerID": "TRADH", + "employeeID": 1, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 3, + "freight": 29.78, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10838, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 59.28, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 4, + "discount": 0.25 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 50, + "discount": 0.25 + } + ] + }, + { + "orderID": 10839, + "customerID": "TRADH", + "employeeID": 3, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-01-22 00:00:00.000", + "shipVia": 3, + "freight": 35.43, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10840, + "customerID": "LINOD", + "employeeID": 4, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-16 00:00:00.000", + "shipVia": 2, + "freight": 2.71, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10841, + "customerID": "SUPRD", + "employeeID": 5, + "orderDate": "1998-01-20 00:00:00.000", + "requiredDate": "1998-02-17 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 2, + "freight": 424.3, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 50, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10842, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1998-01-20 00:00:00.000", + "requiredDate": "1998-02-17 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 3, + "freight": 54.42, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 5, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10836, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1998-01-16 00:00:00.000", + "requiredDate": "1998-02-13 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 1, + "freight": 411.88, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 52, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 24, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 60, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10835, + "customerID": "ALFKI", + "employeeID": 1, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 3, + "freight": 69.53, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 2, + "discount": 0.2 + } + ] + }, + { + "orderID": 10837, + "customerID": "BERGS", + "employeeID": 9, + "orderDate": "1998-01-16 00:00:00.000", + "requiredDate": "1998-02-13 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 13.32, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 25, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10845, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 212.98, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 70, + "discount": 0.1 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 42, + "discount": 0.1 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 48, + "discount": 0 + } + ] + }, + { + "orderID": 10848, + "customerID": "CONSH", + "employeeID": 7, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-02-20 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 2, + "freight": 38.24, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 3, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10850, + "customerID": "VICTE", + "employeeID": 1, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 49.19, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 4, + "discount": 0.15 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10847, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1998-01-22 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 3, + "freight": 487.57, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 80, + "discount": 0.2 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 37, + "unitPrice": 26, + "quantity": 60, + "discount": 0.2 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 36, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 55, + "discount": 0.2 + } + ] + }, + { + "orderID": 10846, + "customerID": "SUPRD", + "employeeID": 2, + "orderDate": "1998-01-22 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 56.46, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 21, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10849, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-02-20 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 2, + "freight": 0.56, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 49, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10851, + "customerID": "RICAR", + "employeeID": 5, + "orderDate": "1998-01-26 00:00:00.000", + "requiredDate": "1998-02-23 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 1, + "freight": 160.55, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 42, + "discount": 0.05 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 5, + "discount": 0.05 + } + ] + }, + { + "orderID": 10852, + "customerID": "RATTC", + "employeeID": 8, + "orderDate": "1998-01-26 00:00:00.000", + "requiredDate": "1998-02-09 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 174.05, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 6, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10854, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-05 00:00:00.000", + "shipVia": 2, + "freight": 100.22, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 100, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 65, + "discount": 0.15 + } + ] + }, + { + "orderID": 10855, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 1, + "freight": 170.97, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 24, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10856, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1998-01-28 00:00:00.000", + "requiredDate": "1998-02-25 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 2, + "freight": 58.43, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10857, + "customerID": "BERGS", + "employeeID": 8, + "orderDate": "1998-01-28 00:00:00.000", + "requiredDate": "1998-02-25 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 2, + "freight": 188.85, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0.25 + } + ] + }, + { + "orderID": 10858, + "customerID": "LACOR", + "employeeID": 2, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-03 00:00:00.000", + "shipVia": 1, + "freight": 52.51, + "shipName": "La corne d'abondance", + "shipAddress": { + "street": "67 avenue de l'Europe", + "city": "Versailles", + "region": "NULL", + "postalCode": 78000, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 5, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10859, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 2, + "freight": 76.1, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10860, + "customerID": "FRANR", + "employeeID": 3, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 3, + "freight": 19.26, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10861, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1998-01-30 00:00:00.000", + "requiredDate": "1998-02-27 00:00:00.000", + "shippedDate": "1998-02-17 00:00:00.000", + "shipVia": 2, + "freight": 14.93, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 42, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10862, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1998-01-30 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 2, + "freight": 53.23, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 25, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10863, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-17 00:00:00.000", + "shipVia": 2, + "freight": 30.26, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10864, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 2, + "freight": 3.04, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 4, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10865, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 348.14, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 80, + "discount": 0.05 + } + ] + }, + { + "orderID": 10869, + "customerID": "SEVES", + "employeeID": 5, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 1, + "freight": 143.28, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 40, + "discount": 0 + }, + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 50, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10870, + "customerID": "WOLZA", + "employeeID": 5, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-13 00:00:00.000", + "shipVia": 3, + "freight": 12.04, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10871, + "customerID": "BONAP", + "employeeID": 9, + "orderDate": "1998-02-05 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 2, + "freight": 112.27, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 16, + "discount": 0.05 + } + ] + }, + { + "orderID": 10872, + "customerID": "GODOS", + "employeeID": 5, + "orderDate": "1998-02-05 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 2, + "freight": 175.32, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10873, + "customerID": "WILMK", + "employeeID": 4, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 1, + "freight": 0.82, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10866, + "customerID": "BERGS", + "employeeID": 5, + "orderDate": "1998-02-03 00:00:00.000", + "requiredDate": "1998-03-03 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 109.11, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 6, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10876, + "customerID": "BONAP", + "employeeID": 7, + "orderDate": "1998-02-09 00:00:00.000", + "requiredDate": "1998-03-09 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 3, + "freight": 60.42, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10877, + "customerID": "RICAR", + "employeeID": 1, + "orderDate": "1998-02-09 00:00:00.000", + "requiredDate": "1998-03-09 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 1, + "freight": 38.06, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10868, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 2, + "freight": 191.27, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 20, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 42, + "discount": 0.1 + } + ] + }, + { + "orderID": 10875, + "customerID": "BERGS", + "employeeID": 4, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 2, + "freight": 32.37, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 25, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 15, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 21, + "discount": 0.1 + } + ] + }, + { + "orderID": 10882, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1998-02-11 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 3, + "freight": 23.1, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 25, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 32, + "discount": 0.15 + } + ] + }, + { + "orderID": 10884, + "customerID": "LETSS", + "employeeID": 4, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-13 00:00:00.000", + "shipVia": 2, + "freight": 90.97, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 21, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10885, + "customerID": "SUPRD", + "employeeID": 6, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 3, + "freight": 5.64, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 12, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10886, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1998-02-13 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 1, + "freight": 4.99, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 40, + "discount": 0 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10880, + "customerID": "FOLKO", + "employeeID": 7, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 88.01, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10879, + "customerID": "WILMK", + "employeeID": 3, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-10 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 3, + "freight": 8.5, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10889, + "customerID": "RATTC", + "employeeID": 9, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 3, + "freight": 280.61, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10890, + "customerID": "DUMON", + "employeeID": 7, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 32.76, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 15, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10893, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 2, + "freight": 77.78, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 30, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 24, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 35, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10894, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 1, + "freight": 116.13, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 28, + "discount": 0.05 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 120, + "discount": 0.05 + } + ] + }, + { + "orderID": 10888, + "customerID": "GODOS", + "employeeID": 1, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 2, + "freight": 51.87, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10898, + "customerID": "OCEAN", + "employeeID": 4, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 1.27, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10899, + "customerID": "LILAS", + "employeeID": 5, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-02-26 00:00:00.000", + "shipVia": 3, + "freight": 1.21, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 8, + "discount": 0.15 + } + ] + }, + { + "orderID": 10901, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1998-02-23 00:00:00.000", + "requiredDate": "1998-03-23 00:00:00.000", + "shippedDate": "1998-02-26 00:00:00.000", + "shipVia": 1, + "freight": 62.09, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 30, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10902, + "customerID": "FOLKO", + "employeeID": 1, + "orderDate": "1998-02-23 00:00:00.000", + "requiredDate": "1998-03-23 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 1, + "freight": 44.15, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 6, + "discount": 0.15 + } + ] + }, + { + "orderID": 10903, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 3, + "freight": 36.71, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 40, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10896, + "customerID": "MAISD", + "employeeID": 7, + "orderDate": "1998-02-19 00:00:00.000", + "requiredDate": "1998-03-19 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 32.45, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10904, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 162.95, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 15, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10895, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 1, + "freight": 162.75, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 91, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 100, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 110, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 45, + "discount": 0 + } + ] + }, + { + "orderID": 10897, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1998-02-19 00:00:00.000", + "requiredDate": "1998-03-19 00:00:00.000", + "shippedDate": "1998-02-25 00:00:00.000", + "shipVia": 2, + "freight": 603.54, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 80, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10909, + "customerID": "SANTG", + "employeeID": 1, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-10 00:00:00.000", + "shipVia": 2, + "freight": 53.05, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 12, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 15, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10910, + "customerID": "WILMK", + "employeeID": 1, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 3, + "freight": 38.11, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 10, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10911, + "customerID": "GODOS", + "employeeID": 3, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-05 00:00:00.000", + "shipVia": 1, + "freight": 38.19, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 12, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10912, + "customerID": "HUNGO", + "employeeID": 2, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 2, + "freight": 580.91, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 60, + "discount": 0.25 + } + ] + }, + { + "orderID": 10913, + "customerID": "QUEEN", + "employeeID": 4, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 1, + "freight": 33.05, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10917, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 2, + "freight": 8.29, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 1, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10916, + "customerID": "RANCH", + "employeeID": 1, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 2, + "freight": 63.77, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 6, + "discount": 0 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10918, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 3, + "freight": 48.83, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 25, + "discount": 0.25 + } + ] + }, + { + "orderID": 10919, + "customerID": "LINOD", + "employeeID": 2, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 2, + "freight": 19.8, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 24, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 24, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10908, + "customerID": "REGGC", + "employeeID": 4, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 32.96, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10921, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 1, + "freight": 176.48, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10915, + "customerID": "TORTU", + "employeeID": 2, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 2, + "freight": 3.51, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 10, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10925, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 1, + "freight": 2.27, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 25, + "discount": 0.15 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10926, + "customerID": "ANATR", + "employeeID": 4, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 3, + "freight": 39.92, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 2, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10927, + "customerID": "LACOR", + "employeeID": 4, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-04-08 00:00:00.000", + "shipVia": 1, + "freight": 19.79, + "shipName": "La corne d'abondance", + "shipAddress": { + "street": "67 avenue de l'Europe", + "city": "Versailles", + "region": "NULL", + "postalCode": 78000, + "country": "France" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 5, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 5, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10928, + "customerID": "GALED", + "employeeID": 1, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 1, + "freight": 1.36, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 5, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10929, + "customerID": "FRANK", + "employeeID": 6, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-03-12 00:00:00.000", + "shipVia": 1, + "freight": 33.93, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 49, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10930, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-17 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 15.55, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 25, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10931, + "customerID": "RICSU", + "employeeID": 4, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-19 00:00:00.000", + "shipVia": 2, + "freight": 13.6, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 42, + "discount": 0.15 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10932, + "customerID": "BONAP", + "employeeID": 8, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-03 00:00:00.000", + "shippedDate": "1998-03-24 00:00:00.000", + "shipVia": 1, + "freight": 134.64, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 14, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10933, + "customerID": "ISLAT", + "employeeID": 6, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-03 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 3, + "freight": 54.15, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 2, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10935, + "customerID": "WELLI", + "employeeID": 4, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 47.59, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 4, + "discount": 0.25 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 8, + "discount": 0.25 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10937, + "customerID": "CACTU", + "employeeID": 7, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 31.51, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 8, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10938, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 2, + "freight": 31.89, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 24, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 49, + "discount": 0.25 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10939, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 2, + "freight": 76.33, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 40, + "discount": 0.15 + } + ] + }, + { + "orderID": 10940, + "customerID": "BONAP", + "employeeID": 8, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 3, + "freight": 19.77, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 8, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10941, + "customerID": "SAVEA", + "employeeID": 7, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-20 00:00:00.000", + "shipVia": 2, + "freight": 400.81, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 44, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 80, + "discount": 0.25 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10922, + "customerID": "HANAR", + "employeeID": 5, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-03-31 00:00:00.000", + "shippedDate": "1998-03-05 00:00:00.000", + "shipVia": 3, + "freight": 62.74, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 15, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10923, + "customerID": "LAMAI", + "employeeID": 7, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 68.26, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10924, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-04-08 00:00:00.000", + "shipVia": 2, + "freight": 151.52, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10943, + "customerID": "BSBEV", + "employeeID": 4, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-19 00:00:00.000", + "shipVia": 2, + "freight": 2.17, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 21, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10944, + "customerID": "BOTTM", + "employeeID": 6, + "orderDate": "1998-03-12 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 52.92, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 5, + "discount": 0.25 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 18, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 18, + "discount": 0.25 + } + ] + }, + { + "orderID": 10945, + "customerID": "MORGK", + "employeeID": 4, + "orderDate": "1998-03-12 00:00:00.000", + "requiredDate": "1998-04-09 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 1, + "freight": 10.22, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + } + ] + } +] diff --git a/vue-options-api-demos/grid/print/control-column-widths/main.js b/vue-options-api-demos/grid/print/control-column-widths/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/print/control-column-widths/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/print/control-column-widths/main.vue b/vue-options-api-demos/grid/print/control-column-widths/main.vue new file mode 100644 index 00000000..bed24fdf --- /dev/null +++ b/vue-options-api-demos/grid/print/control-column-widths/main.vue @@ -0,0 +1,130 @@ + + + diff --git a/vue-options-api-demos/grid/print/control-column-widths/products.json b/vue-options-api-demos/grid/print/control-column-widths/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/print/control-column-widths/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/print/pageable/main.js b/vue-options-api-demos/grid/print/pageable/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/print/pageable/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/print/pageable/main.vue b/vue-options-api-demos/grid/print/pageable/main.vue new file mode 100644 index 00000000..3446ab0b --- /dev/null +++ b/vue-options-api-demos/grid/print/pageable/main.vue @@ -0,0 +1,150 @@ + + + diff --git a/vue-options-api-demos/grid/print/scrollable-controlled/main.js b/vue-options-api-demos/grid/print/scrollable-controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/print/scrollable-controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/print/scrollable-controlled/main.vue b/vue-options-api-demos/grid/print/scrollable-controlled/main.vue new file mode 100644 index 00000000..30a3b8ab --- /dev/null +++ b/vue-options-api-demos/grid/print/scrollable-controlled/main.vue @@ -0,0 +1,158 @@ + + + diff --git a/vue-options-api-demos/grid/print/scrollable-controlled/products.json b/vue-options-api-demos/grid/print/scrollable-controlled/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/print/scrollable-controlled/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/print/scrollable/main.js b/vue-options-api-demos/grid/print/scrollable/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/print/scrollable/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/print/scrollable/main.vue b/vue-options-api-demos/grid/print/scrollable/main.vue new file mode 100644 index 00000000..99849aff --- /dev/null +++ b/vue-options-api-demos/grid/print/scrollable/main.vue @@ -0,0 +1,113 @@ + + + diff --git a/vue-options-api-demos/grid/responsive-columns/basic/main.js b/vue-options-api-demos/grid/responsive-columns/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/responsive-columns/basic/main.vue b/vue-options-api-demos/grid/responsive-columns/basic/main.vue new file mode 100644 index 00000000..0f91fd52 --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/basic/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/grid/responsive-columns/basic/products.json b/vue-options-api-demos/grid/responsive-columns/basic/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/basic/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.js b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.vue b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.vue new file mode 100644 index 00000000..0871449d --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.vue @@ -0,0 +1,68 @@ + + diff --git a/vue-options-api-demos/grid/responsive-columns/height/main.js b/vue-options-api-demos/grid/responsive-columns/height/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/height/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/responsive-columns/height/main.vue b/vue-options-api-demos/grid/responsive-columns/height/main.vue new file mode 100644 index 00000000..bec031cf --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/height/main.vue @@ -0,0 +1,68 @@ + + diff --git a/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.js b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.vue b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.vue new file mode 100644 index 00000000..9cbf0d7c --- /dev/null +++ b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.vue @@ -0,0 +1,117 @@ + + diff --git a/vue-options-api-demos/grid/rowreorder/component/CustomCell.vue b/vue-options-api-demos/grid/rowreorder/component/CustomCell.vue new file mode 100644 index 00000000..5974d9a0 --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/component/CustomCell.vue @@ -0,0 +1,92 @@ + + diff --git a/vue-options-api-demos/grid/rowreorder/component/DragClue.vue b/vue-options-api-demos/grid/rowreorder/component/DragClue.vue new file mode 100644 index 00000000..3d2f4f46 --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/component/DragClue.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/grid/rowreorder/component/DragPointer.vue b/vue-options-api-demos/grid/rowreorder/component/DragPointer.vue new file mode 100644 index 00000000..8dccb927 --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/component/DragPointer.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/grid/rowreorder/component/common.js b/vue-options-api-demos/grid/rowreorder/component/common.js new file mode 100644 index 00000000..b218ca35 --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/component/common.js @@ -0,0 +1,84 @@ +export function reorderData(event, items, activeItem, dropPosition) { + const dropItemProductID = getDroppedProductID(event.originalEvent.target); + let reorderedData = items; + + if (dropItemProductID) { + const activeItemIndex = reorderedData.findIndex( + i => i.ProductID === activeItem.ProductID + ); + const hoveredItemIndex = reorderedData.findIndex( + i => i.ProductID === dropItemProductID + ); + + if (activeItemIndex !== hoveredItemIndex) { + reorderedData.splice(activeItemIndex, 1); + + if ( + dropPosition === 'above' && + hoveredItemIndex !== 0 && + hoveredItemIndex < activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex, 0, { + ...activeItem + }); + } else if (dropPosition === 'above' && hoveredItemIndex === 0) { + reorderedData.unshift({ ...activeItem }); + } else if ( + dropPosition === 'above' && + hoveredItemIndex !== 0 && + hoveredItemIndex > activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex - 1, 0, { + ...activeItem + }); + } else if ( + dropPosition === 'below' && + hoveredItemIndex !== 0 && + hoveredItemIndex < activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex + 1, 0, { + ...activeItem + }); + } else if ( + dropPosition === 'below' && + hoveredItemIndex !== 0 && + hoveredItemIndex > activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex, 0, { + ...activeItem + }); + } + } + } + + return reorderedData; +} + +export function getDroppedProductID(target) { + if (target.getAttribute('data-itemid')) { + return parseInt(target.getAttribute('data-itemid'), 10); + } else { + if (target.parentElement) { + return getDroppedProductID(target.parentElement); + } else { + return false; + } + } +} + +export function getTargetTopOffSet(event) { + if ( + event.originalEvent.target.className !== 'k-drop-hint-line' && + event.originalEvent.target.className !== 'k-drop-hint k-drop-hint-h' + ) { + return event.offsetY >= + event.originalEvent.target.parentElement.clientHeight / 2 + ? event.originalEvent.target.parentElement.offsetTop + + document.querySelector('.k-grid-header').offsetHeight + + document.querySelector('.k-grid').offsetTop + + event.originalEvent.target.parentElement.clientHeight + : event.originalEvent.target.parentElement.offsetTop + + document.querySelector('.k-grid-header').offsetHeight + + document.querySelector('.k-grid').offsetTop; + } +} diff --git a/vue-options-api-demos/grid/rowreorder/component/main.js b/vue-options-api-demos/grid/rowreorder/component/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/component/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/rowreorder/component/main.vue b/vue-options-api-demos/grid/rowreorder/component/main.vue new file mode 100644 index 00000000..b7f5847e --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/component/main.vue @@ -0,0 +1,116 @@ + + + diff --git a/vue-options-api-demos/grid/rowreorder/css/CustomCell.vue b/vue-options-api-demos/grid/rowreorder/css/CustomCell.vue new file mode 100644 index 00000000..55291127 --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/css/CustomCell.vue @@ -0,0 +1,98 @@ + + + diff --git a/vue-options-api-demos/grid/rowreorder/css/DragClue.vue b/vue-options-api-demos/grid/rowreorder/css/DragClue.vue new file mode 100644 index 00000000..3d2f4f46 --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/css/DragClue.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/grid/rowreorder/css/common.js b/vue-options-api-demos/grid/rowreorder/css/common.js new file mode 100644 index 00000000..b218ca35 --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/css/common.js @@ -0,0 +1,84 @@ +export function reorderData(event, items, activeItem, dropPosition) { + const dropItemProductID = getDroppedProductID(event.originalEvent.target); + let reorderedData = items; + + if (dropItemProductID) { + const activeItemIndex = reorderedData.findIndex( + i => i.ProductID === activeItem.ProductID + ); + const hoveredItemIndex = reorderedData.findIndex( + i => i.ProductID === dropItemProductID + ); + + if (activeItemIndex !== hoveredItemIndex) { + reorderedData.splice(activeItemIndex, 1); + + if ( + dropPosition === 'above' && + hoveredItemIndex !== 0 && + hoveredItemIndex < activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex, 0, { + ...activeItem + }); + } else if (dropPosition === 'above' && hoveredItemIndex === 0) { + reorderedData.unshift({ ...activeItem }); + } else if ( + dropPosition === 'above' && + hoveredItemIndex !== 0 && + hoveredItemIndex > activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex - 1, 0, { + ...activeItem + }); + } else if ( + dropPosition === 'below' && + hoveredItemIndex !== 0 && + hoveredItemIndex < activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex + 1, 0, { + ...activeItem + }); + } else if ( + dropPosition === 'below' && + hoveredItemIndex !== 0 && + hoveredItemIndex > activeItemIndex + ) { + reorderedData.splice(hoveredItemIndex, 0, { + ...activeItem + }); + } + } + } + + return reorderedData; +} + +export function getDroppedProductID(target) { + if (target.getAttribute('data-itemid')) { + return parseInt(target.getAttribute('data-itemid'), 10); + } else { + if (target.parentElement) { + return getDroppedProductID(target.parentElement); + } else { + return false; + } + } +} + +export function getTargetTopOffSet(event) { + if ( + event.originalEvent.target.className !== 'k-drop-hint-line' && + event.originalEvent.target.className !== 'k-drop-hint k-drop-hint-h' + ) { + return event.offsetY >= + event.originalEvent.target.parentElement.clientHeight / 2 + ? event.originalEvent.target.parentElement.offsetTop + + document.querySelector('.k-grid-header').offsetHeight + + document.querySelector('.k-grid').offsetTop + + event.originalEvent.target.parentElement.clientHeight + : event.originalEvent.target.parentElement.offsetTop + + document.querySelector('.k-grid-header').offsetHeight + + document.querySelector('.k-grid').offsetTop; + } +} diff --git a/vue-options-api-demos/grid/rowreorder/css/main.js b/vue-options-api-demos/grid/rowreorder/css/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/css/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/rowreorder/css/main.vue b/vue-options-api-demos/grid/rowreorder/css/main.vue new file mode 100644 index 00000000..c5b355eb --- /dev/null +++ b/vue-options-api-demos/grid/rowreorder/css/main.vue @@ -0,0 +1,113 @@ + + + diff --git a/vue-options-api-demos/grid/rows/sticky/main.js b/vue-options-api-demos/grid/rows/sticky/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/rows/sticky/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/rows/sticky/main.vue b/vue-options-api-demos/grid/rows/sticky/main.vue new file mode 100644 index 00000000..e406a346 --- /dev/null +++ b/vue-options-api-demos/grid/rows/sticky/main.vue @@ -0,0 +1,185 @@ + + diff --git a/vue-options-api-demos/grid/rows/sticky/products.json b/vue-options-api-demos/grid/rows/sticky/products.json new file mode 100644 index 00000000..5f03285c --- /dev/null +++ b/vue-options-api-demos/grid/rows/sticky/products.json @@ -0,0 +1,1312 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31.0, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "1 kg pkg.", + "UnitPrice": 21.0, + "UnitsInStock": 22, + "UnitsOnOrder": 30, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "SupplierID": 5, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 38.0, + "UnitsInStock": 86, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "CategoryID": 8, + "QuantityPerUnit": "2 kg box", + "UnitPrice": 6.0, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "SupplierID": 6, + "CategoryID": 7, + "QuantityPerUnit": "40 - 100 g pkgs.", + "UnitPrice": 23.25, + "UnitsInStock": 35, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "SupplierID": 6, + "CategoryID": 2, + "QuantityPerUnit": "24 - 250 ml bottles", + "UnitPrice": 15.5, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "SupplierID": 7, + "CategoryID": 3, + "QuantityPerUnit": "32 - 500 g boxes", + "UnitPrice": 17.45, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "SupplierID": 7, + "CategoryID": 6, + "QuantityPerUnit": "20 - 1 kg tins", + "UnitPrice": 39.0, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "SupplierID": 7, + "CategoryID": 8, + "QuantityPerUnit": "16 kg pkg.", + "UnitPrice": 62.5, + "UnitsInStock": 42, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 12 pieces", + "UnitPrice": 9.2, + "UnitsInStock": 25, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "30 gift boxes", + "UnitPrice": 81.0, + "UnitsInStock": 40, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 21, + "ProductName": "Sir Rodney's Scones", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "24 pkgs. x 4 pieces", + "UnitPrice": 10.0, + "UnitsInStock": 3, + "UnitsOnOrder": 40, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 22, + "ProductName": "Gustaf's Knäckebröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "24 - 500 g pkgs.", + "UnitPrice": 21.0, + "UnitsInStock": 104, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 23, + "ProductName": "Tunnbröd", + "SupplierID": 9, + "CategoryID": 5, + "QuantityPerUnit": "12 - 250 g pkgs.", + "UnitPrice": 9.0, + "UnitsInStock": 61, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 24, + "ProductName": "Guaraná Fantástica", + "SupplierID": 10, + "CategoryID": 1, + "QuantityPerUnit": "12 - 355 ml cans", + "UnitPrice": 4.5, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 25, + "ProductName": "NuNuCa Nuß-Nougat-Creme", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "20 - 450 g glasses", + "UnitPrice": 14.0, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 26, + "ProductName": "Gumbär Gummibärchen", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 250 g bags", + "UnitPrice": 31.23, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 27, + "ProductName": "Schoggi Schokolade", + "SupplierID": 11, + "CategoryID": 3, + "QuantityPerUnit": "100 - 100 g pieces", + "UnitPrice": 43.9, + "UnitsInStock": 49, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 28, + "ProductName": "Rössle Sauerkraut", + "SupplierID": 12, + "CategoryID": 7, + "QuantityPerUnit": "25 - 825 g cans", + "UnitPrice": 45.6, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 29, + "ProductName": "Thüringer Rostbratwurst", + "SupplierID": 12, + "CategoryID": 6, + "QuantityPerUnit": "50 bags x 30 sausgs.", + "UnitPrice": 123.79, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 30, + "ProductName": "Nord-Ost Matjeshering", + "SupplierID": 13, + "CategoryID": 8, + "QuantityPerUnit": "10 - 200 g glasses", + "UnitPrice": 25.89, + "UnitsInStock": 10, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 31, + "ProductName": "Gorgonzola Telino", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "12 - 100 g pkgs", + "UnitPrice": 12.5, + "UnitsInStock": 0, + "UnitsOnOrder": 70, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 32, + "ProductName": "Mascarpone Fabioli", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 32.0, + "UnitsInStock": 9, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 33, + "ProductName": "Geitost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "500 g", + "UnitPrice": 2.5, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 34, + "ProductName": "Sasquatch Ale", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0, + "UnitsInStock": 111, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 35, + "ProductName": "Steeleye Stout", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 18.0, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 36, + "ProductName": "Inlagd Sill", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 250 g jars", + "UnitPrice": 19.0, + "UnitsInStock": 112, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 37, + "ProductName": "Gravad lax", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "12 - 500 g pkgs.", + "UnitPrice": 26.0, + "UnitsInStock": 11, + "UnitsOnOrder": 50, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 38, + "ProductName": "Côte de Blaye", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "12 - 75 cl bottles", + "UnitPrice": 263.5, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 39, + "ProductName": "Chartreuse verte", + "SupplierID": 18, + "CategoryID": 1, + "QuantityPerUnit": "750 cc per bottle", + "UnitPrice": 18.0, + "UnitsInStock": 69, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 40, + "ProductName": "Boston Crab Meat", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "24 - 4 oz tins", + "UnitPrice": 18.4, + "UnitsInStock": 123, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 41, + "ProductName": "Jack's New England Clam Chowder", + "SupplierID": 19, + "CategoryID": 8, + "QuantityPerUnit": "12 - 12 oz cans", + "UnitPrice": 9.65, + "UnitsInStock": 85, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 42, + "ProductName": "Singaporean Hokkien Fried Mee", + "SupplierID": 20, + "CategoryID": 5, + "QuantityPerUnit": "32 - 1 kg pkgs.", + "UnitPrice": 14.0, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 43, + "ProductName": "Ipoh Coffee", + "SupplierID": 20, + "CategoryID": 1, + "QuantityPerUnit": "16 - 500 g tins", + "UnitPrice": 46.0, + "UnitsInStock": 17, + "UnitsOnOrder": 10, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 44, + "ProductName": "Gula Malacca", + "SupplierID": 20, + "CategoryID": 2, + "QuantityPerUnit": "20 - 2 kg bags", + "UnitPrice": 19.45, + "UnitsInStock": 27, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 45, + "ProductName": "Rogede sild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "1k pkg.", + "UnitPrice": 9.5, + "UnitsInStock": 5, + "UnitsOnOrder": 70, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 46, + "ProductName": "Spegesild", + "SupplierID": 21, + "CategoryID": 8, + "QuantityPerUnit": "4 - 450 g glasses", + "UnitPrice": 12.0, + "UnitsInStock": 95, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 47, + "ProductName": "Zaanse koeken", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 - 4 oz boxes", + "UnitPrice": 9.5, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 48, + "ProductName": "Chocolade", + "SupplierID": 22, + "CategoryID": 3, + "QuantityPerUnit": "10 pkgs.", + "UnitPrice": 12.75, + "UnitsInStock": 15, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 49, + "ProductName": "Maxilaku", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "24 - 50 g pkgs.", + "UnitPrice": 20.0, + "UnitsInStock": 10, + "UnitsOnOrder": 60, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 50, + "ProductName": "Valkoinen suklaa", + "SupplierID": 23, + "CategoryID": 3, + "QuantityPerUnit": "12 - 100 g bars", + "UnitPrice": 16.25, + "UnitsInStock": 65, + "UnitsOnOrder": 0, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 51, + "ProductName": "Manjimup Dried Apples", + "SupplierID": 24, + "CategoryID": 7, + "QuantityPerUnit": "50 - 300 g pkgs.", + "UnitPrice": 53.0, + "UnitsInStock": 20, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 52, + "ProductName": "Filo Mix", + "SupplierID": 24, + "CategoryID": 5, + "QuantityPerUnit": "16 - 2 kg boxes", + "UnitPrice": 7.0, + "UnitsInStock": 38, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 53, + "ProductName": "Perth Pasties", + "SupplierID": 24, + "CategoryID": 6, + "QuantityPerUnit": "48 pieces", + "UnitPrice": 32.8, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 54, + "ProductName": "Tourtière", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "16 pies", + "UnitPrice": 7.45, + "UnitsInStock": 21, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 55, + "ProductName": "Pâté chinois", + "SupplierID": 25, + "CategoryID": 6, + "QuantityPerUnit": "24 boxes x 2 pies", + "UnitPrice": 24.0, + "UnitsInStock": 115, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + }, + { + "ProductID": 56, + "ProductName": "Gnocchi di nonna Alice", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 38.0, + "UnitsInStock": 21, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 57, + "ProductName": "Ravioli Angelo", + "SupplierID": 26, + "CategoryID": 5, + "QuantityPerUnit": "24 - 250 g pkgs.", + "UnitPrice": 19.5, + "UnitsInStock": 36, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 58, + "ProductName": "Escargots de Bourgogne", + "SupplierID": 27, + "CategoryID": 8, + "QuantityPerUnit": "24 pieces", + "UnitPrice": 13.25, + "UnitsInStock": 62, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 59, + "ProductName": "Raclette Courdavault", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 55.0, + "UnitsInStock": 79, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 60, + "ProductName": "Camembert Pierrot", + "SupplierID": 28, + "CategoryID": 4, + "QuantityPerUnit": "15 - 300 g rounds", + "UnitPrice": 34.0, + "UnitsInStock": 19, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 61, + "ProductName": "Sirop d'érable", + "SupplierID": 29, + "CategoryID": 2, + "QuantityPerUnit": "24 - 500 ml bottles", + "UnitPrice": 28.5, + "UnitsInStock": 113, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 62, + "ProductName": "Tarte au sucre", + "SupplierID": 29, + "CategoryID": 3, + "QuantityPerUnit": "48 pies", + "UnitPrice": 49.3, + "UnitsInStock": 17, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 63, + "ProductName": "Vegie-spread", + "SupplierID": 7, + "CategoryID": 2, + "QuantityPerUnit": "15 - 625 g jars", + "UnitPrice": 43.9, + "UnitsInStock": 24, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 64, + "ProductName": "Wimmers gute Semmelknödel", + "SupplierID": 12, + "CategoryID": 5, + "QuantityPerUnit": "20 bags x 4 pieces", + "UnitPrice": 33.25, + "UnitsInStock": 22, + "UnitsOnOrder": 80, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 5, + "CategoryName": "Grains/Cereals", + "Description": "Breads, crackers, pasta, and cereal" + } + }, + { + "ProductID": 65, + "ProductName": "Louisiana Fiery Hot Pepper Sauce", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "32 - 8 oz bottles", + "UnitPrice": 21.05, + "UnitsInStock": 76, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 66, + "ProductName": "Louisiana Hot Spiced Okra", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "24 - 8 oz jars", + "UnitPrice": 17.0, + "UnitsInStock": 4, + "UnitsOnOrder": 100, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 67, + "ProductName": "Laughing Lumberjack Lager", + "SupplierID": 16, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 14.0, + "UnitsInStock": 52, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 68, + "ProductName": "Scottish Longbreads", + "SupplierID": 8, + "CategoryID": 3, + "QuantityPerUnit": "10 boxes x 8 pieces", + "UnitPrice": 12.5, + "UnitsInStock": 6, + "UnitsOnOrder": 10, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 3, + "CategoryName": "Confections", + "Description": "Desserts, candies, and sweet breads" + } + }, + { + "ProductID": 69, + "ProductName": "Gudbrandsdalsost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 kg pkg.", + "UnitPrice": 36.0, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 70, + "ProductName": "Outback Lager", + "SupplierID": 7, + "CategoryID": 1, + "QuantityPerUnit": "24 - 355 ml bottles", + "UnitPrice": 15.0, + "UnitsInStock": 15, + "UnitsOnOrder": 10, + "ReorderLevel": 30, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 71, + "ProductName": "Flotemysost", + "SupplierID": 15, + "CategoryID": 4, + "QuantityPerUnit": "10 - 500 g pkgs.", + "UnitPrice": 21.5, + "UnitsInStock": 26, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 72, + "ProductName": "Mozzarella di Giovanni", + "SupplierID": 14, + "CategoryID": 4, + "QuantityPerUnit": "24 - 200 g pkgs.", + "UnitPrice": 34.8, + "UnitsInStock": 14, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 4, + "CategoryName": "Dairy Products", + "Description": "Cheeses" + } + }, + { + "ProductID": 73, + "ProductName": "Röd Kaviar", + "SupplierID": 17, + "CategoryID": 8, + "QuantityPerUnit": "24 - 150 g jars", + "UnitPrice": 15.0, + "UnitsInStock": 101, + "UnitsOnOrder": 0, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + } + }, + { + "ProductID": 74, + "ProductName": "Longlife Tofu", + "SupplierID": 4, + "CategoryID": 7, + "QuantityPerUnit": "5 kg pkg.", + "UnitPrice": 10.0, + "UnitsInStock": 4, + "UnitsOnOrder": 20, + "ReorderLevel": 5, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 75, + "ProductName": "Rhönbräu Klosterbier", + "SupplierID": 12, + "CategoryID": 1, + "QuantityPerUnit": "24 - 0.5 l bottles", + "UnitPrice": 7.75, + "UnitsInStock": 125, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 76, + "ProductName": "Lakkalikööri", + "SupplierID": 23, + "CategoryID": 1, + "QuantityPerUnit": "500 ml", + "UnitPrice": 18.0, + "UnitsInStock": 57, + "UnitsOnOrder": 0, + "ReorderLevel": 20, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 77, + "ProductName": "Original Frankfurter grüne Soße", + "SupplierID": 12, + "CategoryID": 2, + "QuantityPerUnit": "12 boxes", + "UnitPrice": 13.0, + "UnitsInStock": 32, + "UnitsOnOrder": 0, + "ReorderLevel": 15, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + } + ] + \ No newline at end of file diff --git a/vue-options-api-demos/grid/scroll-modes/basic/main.js b/vue-options-api-demos/grid/scroll-modes/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/scroll-modes/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/scroll-modes/basic/main.vue b/vue-options-api-demos/grid/scroll-modes/basic/main.vue new file mode 100644 index 00000000..bec031cf --- /dev/null +++ b/vue-options-api-demos/grid/scroll-modes/basic/main.vue @@ -0,0 +1,68 @@ + + diff --git a/vue-options-api-demos/grid/scroll-modes/custom/main.js b/vue-options-api-demos/grid/scroll-modes/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/scroll-modes/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/scroll-modes/custom/main.vue b/vue-options-api-demos/grid/scroll-modes/custom/main.vue new file mode 100644 index 00000000..517d105e --- /dev/null +++ b/vue-options-api-demos/grid/scroll-modes/custom/main.vue @@ -0,0 +1,90 @@ + + diff --git a/vue-options-api-demos/grid/scroll-modes/infinite/main.js b/vue-options-api-demos/grid/scroll-modes/infinite/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/scroll-modes/infinite/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/scroll-modes/infinite/main.vue b/vue-options-api-demos/grid/scroll-modes/infinite/main.vue new file mode 100644 index 00000000..ade27aeb --- /dev/null +++ b/vue-options-api-demos/grid/scroll-modes/infinite/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/grid/scroll-modes/infinite/products.json b/vue-options-api-demos/grid/scroll-modes/infinite/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/scroll-modes/infinite/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/selection/basic/main.js b/vue-options-api-demos/grid/selection/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/selection/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/selection/basic/main.vue b/vue-options-api-demos/grid/selection/basic/main.vue new file mode 100644 index 00000000..3dfb79f8 --- /dev/null +++ b/vue-options-api-demos/grid/selection/basic/main.vue @@ -0,0 +1,63 @@ + + diff --git a/vue-options-api-demos/grid/selection/custom/main.js b/vue-options-api-demos/grid/selection/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/selection/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/selection/custom/main.vue b/vue-options-api-demos/grid/selection/custom/main.vue new file mode 100644 index 00000000..a63f6d2d --- /dev/null +++ b/vue-options-api-demos/grid/selection/custom/main.vue @@ -0,0 +1,61 @@ + + diff --git a/vue-options-api-demos/grid/selection/custom/products.js b/vue-options-api-demos/grid/selection/custom/products.js new file mode 100644 index 00000000..eafa8949 --- /dev/null +++ b/vue-options-api-demos/grid/selection/custom/products.js @@ -0,0 +1,125 @@ +const products = [ + { + "ProductID": 1, + "ProductName": "Chai", + "UnitPrice": 18.0000, + "UnitsInStock": 39 + }, + { + "ProductID": 2, + "ProductName": "Chang", + "UnitPrice": 19.0000, + "UnitsInStock": 17 + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "UnitPrice": 10.0000, + "UnitsInStock": 13 + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "UnitPrice": 22.0000, + "UnitsInStock": 53 + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "UnitPrice": 21.3500, + "UnitsInStock": 0 + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "UnitPrice": 25.0000, + "UnitsInStock": 120 + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "UnitPrice": 30.0000, + "UnitsInStock": 15 + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "UnitPrice": 40.0000, + "UnitsInStock": 6 + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "UnitPrice": 97.0000, + "UnitsInStock": 29 + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "UnitPrice": 31.0000, + "UnitsInStock": 31 + }, + { + "ProductID": 11, + "ProductName": "Queso Cabrales", + "UnitPrice": 21.0000, + "UnitsInStock": 22 + }, + { + "ProductID": 12, + "ProductName": "Queso Manchego La Pastora", + "UnitPrice": 38.0000, + "UnitsInStock": 86 + }, + { + "ProductID": 13, + "ProductName": "Konbu", + "SupplierID": 6, + "UnitPrice": 6.0000, + "UnitsInStock": 24 + }, + { + "ProductID": 14, + "ProductName": "Tofu", + "UnitPrice": 23.2500, + "UnitsInStock": 35 + }, + { + "ProductID": 15, + "ProductName": "Genen Shouyu", + "UnitPrice": 15.5000, + "UnitsInStock": 39 + }, + { + "ProductID": 16, + "ProductName": "Pavlova", + "UnitPrice": 17.4500, + "UnitsInStock": 29 + }, + { + "ProductID": 17, + "ProductName": "Alice Mutton", + "UnitPrice": 39.0000, + "UnitsInStock": 0 + }, + { + "ProductID": 18, + "ProductName": "Carnarvon Tigers", + "UnitPrice": 62.5000, + "UnitsInStock": 42 + }, + { + "ProductID": 19, + "ProductName": "Teatime Chocolate Biscuits", + "UnitPrice": 9.2000, + "UnitsInStock": 25 + }, + { + "ProductID": 20, + "ProductName": "Sir Rodney's Marmalade", + "UnitPrice": 81.0000, + "UnitsInStock": 40 + } +]; + +export { products }; diff --git a/vue-options-api-demos/grid/shared/categories.json b/vue-options-api-demos/grid/shared/categories.json new file mode 100644 index 00000000..9b40e6e0 --- /dev/null +++ b/vue-options-api-demos/grid/shared/categories.json @@ -0,0 +1,43 @@ + +[ + { + "categoryID" : 2, + "description" : "Sweet and savory sauces relishes spreads and seasonings", + "name" : "Condiments" + }, + { + "categoryID" : 1, + "description" : "Soft drinks coffees teas beers and ales", + "name" : "Beverages" + }, + { + "categoryID" : 3, + "description" : "Desserts candies and sweet breads", + "name" : "Confections" + }, + { + "categoryID" : 4, + "description" : "Cheeses", + "name" : "Dairy Products" + }, + { + "categoryID" : 5, + "description" : "Breads crackers pasta and cereal", + "name" : "Grains/Cereals" + }, + { + "categoryID" : 6, + "description" : "Prepared meats", + "name" : "Meat/Poultry" + }, + { + "categoryID" : 7, + "description" : "Dried fruit and bean curd", + "name" : "Produce" + }, + { + "categoryID" : 8, + "description" : "Seaweed and fish", + "name" : "Seafood" + } +] diff --git a/vue-options-api-demos/grid/shared/customers.json b/vue-options-api-demos/grid/shared/customers.json new file mode 100644 index 00000000..ccf51582 --- /dev/null +++ b/vue-options-api-demos/grid/shared/customers.json @@ -0,0 +1,1277 @@ + +[ + { + "customerID" : "AROUT", + "companyName" : "Around the Horn", + "contactName" : "Thomas Hardy", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "120 Hanover Sq.", + "city" : "London", + "region" : "NULL", + "postalCode" : "WA1 1DP", + "country" : "UK", + "phone" : "(171) 555-7788" + } + }, + { + "customerID" : "BERGS", + "companyName" : "Berglunds snabbköp", + "contactName" : "Christina Berglund", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "Berguvsvägen 8", + "city" : "Luleå", + "region" : "NULL", + "postalCode" : "S-958 22", + "country" : "Sweden", + "phone" : "0921-12 34 65" + } + }, + { + "customerID" : "BLAUS", + "companyName" : "Blauer See Delikatessen", + "contactName" : "Hanna Moos", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Forsterstr. 57", + "city" : "Mannheim", + "region" : "NULL", + "postalCode" : 68306, + "country" : "Germany", + "phone" : "0621-08460" + } + }, + { + "customerID" : "BLONP", + "companyName" : "Blondesddsl père et fils", + "contactName" : "Frédérique Citeaux", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "24 place Kléber", + "city" : "Strasbourg", + "region" : "NULL", + "postalCode" : 67000, + "country" : "France", + "phone" : "88.60.15.31" + } + }, + { + "customerID" : "BOLID", + "companyName" : "Bólido Comidas preparadas", + "contactName" : "Martín Sommer", + "contactTitle" : "Owner", + "address" : { + "street" : "67C Araquil", + "city" : "Madrid", + "region" : "NULL", + "postalCode" : 28023, + "country" : "Spain", + "phone" : "(91) 555 22 82" + } + }, + { + "customerID" : "BONAP", + "companyName" : "Bon app'", + "contactName" : "Laurence Lebihan", + "contactTitle" : "Owner", + "address" : { + "street" : "12 rue des Bouchers", + "city" : "Marseille", + "region" : "NULL", + "postalCode" : 13008, + "country" : "France", + "phone" : "91.24.45.40" + } + }, + { + "customerID" : "ANTON", + "companyName" : "Antonio Moreno Taquería", + "contactName" : "Antonio Moreno", + "contactTitle" : "Owner", + "address" : { + "street" : "Mataderos 2312", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5023, + "country" : "Mexico", + "phone" : "(5) 555-3932" + } + }, + { + "customerID" : "ANATR", + "companyName" : "Ana Trujillo Emparedados y helados", + "contactName" : "Ana Trujillo", + "contactTitle" : "Owner", + "address" : { + "street" : "Avda. de la Constitución 2222", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5021, + "country" : "Mexico", + "phone" : "(5) 555-4729" + } + }, + { + "customerID" : "CACTU", + "companyName" : "Cactus Comidas para llevar", + "contactName" : "Patricio Simpson", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Cerrito 333", + "city" : "Buenos Aires", + "region" : "NULL", + "postalCode" : 1010, + "country" : "Argentina", + "phone" : "(1) 135-5555" + } + }, + { + "customerID" : "BSBEV", + "companyName" : "B's Beverages", + "contactName" : "Victoria Ashworth", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Fauntleroy Circus", + "city" : "London", + "region" : "NULL", + "postalCode" : "EC2 5NT", + "country" : "UK", + "phone" : "(171) 555-1212" + } + }, + { + "customerID" : "CENTC", + "companyName" : "Centro comercial Moctezuma", + "contactName" : "Francisco Chang", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Sierras de Granada 9993", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5022, + "country" : "Mexico", + "phone" : "(5) 555-3392" + } + }, + { + "customerID" : "CHOPS", + "companyName" : "Chop-suey Chinese", + "contactName" : "Yang Wang", + "contactTitle" : "Owner", + "address" : { + "street" : "Hauptstr. 29", + "city" : "Bern", + "region" : "NULL", + "postalCode" : 3012, + "country" : "Switzerland", + "phone" : "0452-076545" + } + }, + { + "customerID" : "COMMI", + "companyName" : "Comércio Mineiro", + "contactName" : "Pedro Afonso", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "23 Av. dos Lusíadas", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05432-043", + "country" : "Brazil", + "phone" : "(11) 555-7647" + } + }, + { + "customerID" : "CONSH", + "companyName" : "Consolidated Holdings", + "contactName" : "Elizabeth Brown", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Berkeley Gardens 12 Brewery", + "city" : "London", + "region" : "NULL", + "postalCode" : "WX1 6LT", + "country" : "UK", + "phone" : "(171) 555-2282" + } + }, + { + "customerID" : "ALFKI", + "companyName" : "Alfreds Futterkiste", + "contactName" : "Maria Anders", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Obere Str. 57", + "city" : "Berlin", + "region" : "NULL", + "postalCode" : 12209, + "country" : "Germany", + "phone" : "030-0074321" + } + }, + { + "customerID" : "BOTTM", + "companyName" : "Bottom-Dollar Markets", + "contactName" : "Elizabeth Lincoln", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "23 Tsawassen Blvd.", + "city" : "Tsawassen", + "region" : "BC", + "postalCode" : "T2F 8M4", + "country" : "Canada", + "phone" : "(604) 555-4729" + } + }, + { + "customerID" : "DRACD", + "companyName" : "Drachenblut Delikatessen", + "contactName" : "Sven Ottlieb", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "Walserweg 21", + "city" : "Aachen", + "region" : "NULL", + "postalCode" : 52066, + "country" : "Germany", + "phone" : "0241-039123" + } + }, + { + "customerID" : "DUMON", + "companyName" : "Du monde entier", + "contactName" : "Janine Labrune", + "contactTitle" : "Owner", + "address" : { + "street" : "67 rue des Cinquante Otages", + "city" : "Nantes", + "region" : "NULL", + "postalCode" : 44000, + "country" : "France", + "phone" : "40.67.88.88" + } + }, + { + "customerID" : "FAMIA", + "companyName" : "Familia Arquibaldo", + "contactName" : "Aria Cruz", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "Rua Orós 92", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05442-030", + "country" : "Brazil", + "phone" : "(11) 555-9857" + } + }, + { + "customerID" : "FISSA", + "companyName" : "FISSA Fabrica Inter. Salchichas S.A.", + "contactName" : "Diego Roel", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "C/ Moralzarzal 86", + "city" : "Madrid", + "region" : "NULL", + "postalCode" : 28034, + "country" : "Spain", + "phone" : "(91) 555 94 44" + } + }, + { + "customerID" : "FOLIG", + "companyName" : "Folies gourmandes", + "contactName" : "Martine Rancé", + "contactTitle" : "Assistant Sales Agent", + "address" : { + "street" : "184 chaussée de Tournai", + "city" : "Lille", + "region" : "NULL", + "postalCode" : 59000, + "country" : "France", + "phone" : "20.16.10.16" + } + }, + { + "customerID" : "FOLKO", + "companyName" : "Folk och fä HB", + "contactName" : "Maria Larsson", + "contactTitle" : "Owner", + "address" : { + "street" : "Åkergatan 24", + "city" : "Bräcke", + "region" : "NULL", + "postalCode" : "S-844 67", + "country" : "Sweden", + "phone" : "0695-34 67 21" + } + }, + { + "customerID" : "FRANK", + "companyName" : "Frankenversand", + "contactName" : "Peter Franken", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Berliner Platz 43", + "city" : "München", + "region" : "NULL", + "postalCode" : 80805, + "country" : "Germany", + "phone" : "089-0877310" + } + }, + { + "customerID" : "FRANR", + "companyName" : "France restauration", + "contactName" : "Carine Schmitt", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "54 rue Royale", + "city" : "Nantes", + "region" : "NULL", + "postalCode" : 44000, + "country" : "France", + "phone" : "40.32.21.21" + } + }, + { + "customerID" : "EASTC", + "companyName" : "Eastern Connection", + "contactName" : "Ann Devon", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "35 King George", + "city" : "London", + "region" : "NULL", + "postalCode" : "WX3 6FW", + "country" : "UK", + "phone" : "(171) 555-0297" + } + }, + { + "customerID" : "ERNSH", + "companyName" : "Ernst Handel", + "contactName" : "Roland Mendel", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Kirchgasse 6", + "city" : "Graz", + "region" : "NULL", + "postalCode" : 8010, + "country" : "Austria", + "phone" : "7675-3425" + } + }, + { + "customerID" : "FRANS", + "companyName" : "Franchi S.p.A.", + "contactName" : "Paolo Accorti", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Via Monte Bianco 34", + "city" : "Torino", + "region" : "NULL", + "postalCode" : 10100, + "country" : "Italy", + "phone" : "011-4988260" + } + }, + { + "customerID" : "FURIB", + "companyName" : "Furia Bacalhau e Frutos do Mar", + "contactName" : "Lino Rodriguez", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Jardim das rosas n. 32", + "city" : "Lisboa", + "region" : "NULL", + "postalCode" : 1675, + "country" : "Portugal", + "phone" : "(1) 354-2534" + } + }, + { + "customerID" : "GALED", + "companyName" : "Galería del gastrónomo", + "contactName" : "Eduardo Saavedra", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Rambla de Cataluña 23", + "city" : "Barcelona", + "region" : "NULL", + "postalCode" : 8022, + "country" : "Spain", + "phone" : "(93) 203 4560" + } + }, + { + "customerID" : "GODOS", + "companyName" : "Godos Cocina Típica", + "contactName" : "José Pedro Freyre", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "C/ Romero 33", + "city" : "Sevilla", + "region" : "NULL", + "postalCode" : 41101, + "country" : "Spain", + "phone" : "(95) 555 82 82" + } + }, + { + "customerID" : "GOURL", + "companyName" : "Gourmet Lanchonetes", + "contactName" : "André Fonseca", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "Av. Brasil 442", + "city" : "Campinas", + "region" : "SP", + "postalCode" : "04876-786", + "country" : "Brazil", + "phone" : "(11) 555-9482" + } + }, + { + "customerID" : "HILAA", + "companyName" : "HILARION-Abastos", + "contactName" : "Carlos Hernández", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Carrera 22 con Ave. Carlos Soublette #8-35", + "city" : "San Cristóbal", + "region" : "Táchira", + "postalCode" : 5022, + "country" : "Venezuela", + "phone" : "(5) 555-1340" + } + }, + { + "customerID" : "HUNGC", + "companyName" : "Hungry Coyote Import Store", + "contactName" : "Yoshi Latimer", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "City Center Plaza 516 Main St.", + "city" : "Elgin", + "region" : "OR", + "postalCode" : 97827, + "country" : "USA", + "phone" : "(503) 555-6874" + } + }, + { + "customerID" : "HUNGO", + "companyName" : "Hungry Owl All-Night Grocers", + "contactName" : "Patricia McKenna", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "8 Johnstown Road", + "city" : "Cork", + "region" : "Co. Cork", + "postalCode" : "NULL", + "country" : "Ireland", + "phone" : "2967 542" + } + }, + { + "customerID" : "ISLAT", + "companyName" : "Island Trading", + "contactName" : "Helen Bennett", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Garden House Crowther Way", + "city" : "Cowes", + "region" : "Isle of Wight", + "postalCode" : "PO31 7PJ", + "country" : "UK", + "phone" : "(198) 555-8888" + } + }, + { + "customerID" : "KOENE", + "companyName" : "Königlich Essen", + "contactName" : "Philip Cramer", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "Maubelstr. 90", + "city" : "Brandenburg", + "region" : "NULL", + "postalCode" : 14776, + "country" : "Germany", + "phone" : "0555-09876" + } + }, + { + "customerID" : "LACOR", + "companyName" : "La corne d'abondance", + "contactName" : "Daniel Tonini", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "67 avenue de l'Europe", + "city" : "Versailles", + "region" : "NULL", + "postalCode" : 78000, + "country" : "France", + "phone" : "30.59.84.10" + } + }, + { + "customerID" : "GROSR", + "companyName" : "GROSELLA-Restaurante", + "contactName" : "Manuel Pereira", + "contactTitle" : "Owner", + "address" : { + "street" : "5ª Ave. Los Palos Grandes", + "city" : "Caracas", + "region" : "DF", + "postalCode" : 1081, + "country" : "Venezuela", + "phone" : "(2) 283-2951" + } + }, + { + "customerID" : "HANAR", + "companyName" : "Hanari Carnes", + "contactName" : "Mario Pontes", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Rua do Paço 67", + "city" : "Rio de Janeiro", + "region" : "RJ", + "postalCode" : "05454-876", + "country" : "Brazil", + "phone" : "(21) 555-0091" + } + }, + { + "customerID" : "LAUGB", + "companyName" : "Laughing Bacchus Wine Cellars", + "contactName" : "Yoshi Tannamuri", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "1900 Oak St.", + "city" : "Vancouver", + "region" : "BC", + "postalCode" : "V3F 2K1", + "country" : "Canada", + "phone" : "(604) 555-3392" + } + }, + { + "customerID" : "LAZYK", + "companyName" : "Lazy K Kountry Store", + "contactName" : "John Steel", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "12 Orchestra Terrace", + "city" : "Walla Walla", + "region" : "WA", + "postalCode" : 99362, + "country" : "USA", + "phone" : "(509) 555-7969" + } + }, + { + "customerID" : "LEHMS", + "companyName" : "Lehmanns Marktstand", + "contactName" : "Renate Messner", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Magazinweg 7", + "city" : "Frankfurt a.M.", + "region" : "NULL", + "postalCode" : 60528, + "country" : "Germany", + "phone" : "069-0245984" + } + }, + { + "customerID" : "GREAL", + "companyName" : "Great Lakes Food Market", + "contactName" : "Howard Snyder", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "2732 Baker Blvd.", + "city" : "Eugene", + "region" : "OR", + "postalCode" : 97403, + "country" : "USA", + "phone" : "(503) 555-7555" + } + }, + { + "customerID" : "LAMAI", + "companyName" : "La maison d'Asie", + "contactName" : "Annette Roulet", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "1 rue Alsace-Lorraine", + "city" : "Toulouse", + "region" : "NULL", + "postalCode" : 31000, + "country" : "France", + "phone" : "61.77.61.10" + } + }, + { + "customerID" : "LETSS", + "companyName" : "Let's Stop N Shop", + "contactName" : "Jaime Yorres", + "contactTitle" : "Owner", + "address" : { + "street" : "87 Polk St. Suite 5", + "city" : "San Francisco", + "region" : "CA", + "postalCode" : 94117, + "country" : "USA", + "phone" : "(415) 555-5938" + } + }, + { + "customerID" : "MAGAA", + "companyName" : "Magazzini Alimentari Riuniti", + "contactName" : "Giovanni Rovelli", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Via Ludovico il Moro 22", + "city" : "Bergamo", + "region" : "NULL", + "postalCode" : 24100, + "country" : "Italy", + "phone" : "035-640230" + } + }, + { + "customerID" : "MAISD", + "companyName" : "Maison Dewey", + "contactName" : "Catherine Dewey", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Rue Joseph-Bens 532", + "city" : "Bruxelles", + "region" : "NULL", + "postalCode" : "B-1180", + "country" : "Belgium", + "phone" : "(02) 201 24 67" + } + }, + { + "customerID" : "MEREP", + "companyName" : "Mère Paillarde", + "contactName" : "Jean Fresnière", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "43 rue St. Laurent", + "city" : "Montréal", + "region" : "Québec", + "postalCode" : "H1J 1C3", + "country" : "Canada", + "phone" : "(514) 555-8054" + } + }, + { + "customerID" : "MORGK", + "companyName" : "Morgenstern Gesundkost", + "contactName" : "Alexander Feuer", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "Heerstr. 22", + "city" : "Leipzig", + "region" : "NULL", + "postalCode" : 4179, + "country" : "Germany", + "phone" : "0342-023176" + } + }, + { + "customerID" : "NORTS", + "companyName" : "North/South", + "contactName" : "Simon Crowther", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "South House 300 Queensbridge", + "city" : "London", + "region" : "NULL", + "postalCode" : "SW7 1RZ", + "country" : "UK", + "phone" : "(171) 555-7733" + } + }, + { + "customerID" : "OCEAN", + "companyName" : "Océano Atlántico Ltda.", + "contactName" : "Yvonne Moncada", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Ing. Gustavo Moncada 8585 Piso 20-A", + "city" : "Buenos Aires", + "region" : "NULL", + "postalCode" : 1010, + "country" : "Argentina", + "phone" : "(1) 135-5333" + } + }, + { + "customerID" : "LINOD", + "companyName" : "LINO-Delicateses", + "contactName" : "Felipe Izquierdo", + "contactTitle" : "Owner", + "address" : { + "street" : "Ave. 5 de Mayo Porlamar", + "city" : "I. de Margarita", + "region" : "Nueva Esparta", + "postalCode" : 4980, + "country" : "Venezuela", + "phone" : "(8) 34-56-12" + } + }, + { + "customerID" : "LILAS", + "companyName" : "LILA-Supermercado", + "contactName" : "Carlos González", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city" : "Barquisimeto", + "region" : "Lara", + "postalCode" : 3508, + "country" : "Venezuela", + "phone" : "(9) 331-6954" + } + }, + { + "customerID" : "OLDWO", + "companyName" : "Old World Delicatessen", + "contactName" : "Rene Phillips", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "2743 Bering St.", + "city" : "Anchorage", + "region" : "AK", + "postalCode" : 99508, + "country" : "USA", + "phone" : "(907) 555-7584" + } + }, + { + "customerID" : "OTTIK", + "companyName" : "Ottilies Käseladen", + "contactName" : "Henriette Pfalzheim", + "contactTitle" : "Owner", + "address" : { + "street" : "Mehrheimerstr. 369", + "city" : "Köln", + "region" : "NULL", + "postalCode" : 50739, + "country" : "Germany", + "phone" : "0221-0644327" + } + }, + { + "customerID" : "PICCO", + "companyName" : "Piccolo und mehr", + "contactName" : "Georg Pipps", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Geislweg 14", + "city" : "Salzburg", + "region" : "NULL", + "postalCode" : 5020, + "country" : "Austria", + "phone" : "6562-9722" + } + }, + { + "customerID" : "PARIS", + "companyName" : "Paris spécialités", + "contactName" : "Marie Bertrand", + "contactTitle" : "Owner", + "address" : { + "street" : "265 boulevard Charonne", + "city" : "Paris", + "region" : "NULL", + "postalCode" : 75012, + "country" : "France", + "phone" : "(1) 42.34.22.66" + } + }, + { + "customerID" : "PERIC", + "companyName" : "Pericles Comidas clásicas", + "contactName" : "Guillermo Fernández", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Calle Dr. Jorge Cash 321", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5033, + "country" : "Mexico", + "phone" : "(5) 552-3745" + } + }, + { + "customerID" : "PRINI", + "companyName" : "Princesa Isabel Vinhos", + "contactName" : "Isabel de Castro", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Estrada da saúde n. 58", + "city" : "Lisboa", + "region" : "NULL", + "postalCode" : 1756, + "country" : "Portugal", + "phone" : "(1) 356-5634" + } + }, + { + "customerID" : "LONEP", + "companyName" : "Lonesome Pine Restaurant", + "contactName" : "Fran Wilson", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "89 Chiaroscuro Rd.", + "city" : "Portland", + "region" : "OR", + "postalCode" : 97219, + "country" : "USA", + "phone" : "(503) 555-9573" + } + }, + { + "customerID" : "QUEEN", + "companyName" : "Queen Cozinha", + "contactName" : "Lúcia Carvalho", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "Alameda dos Canàrios 891", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05487-020", + "country" : "Brazil", + "phone" : "(11) 555-1189" + } + }, + { + "customerID" : "RATTC", + "companyName" : "Rattlesnake Canyon Grocery", + "contactName" : "Paula Wilson", + "contactTitle" : "Assistant Sales Representative", + "address" : { + "street" : "2817 Milton Dr.", + "city" : "Albuquerque", + "region" : "NM", + "postalCode" : 87110, + "country" : "USA", + "phone" : "(505) 555-5939" + } + }, + { + "customerID" : "REGGC", + "companyName" : "Reggiani Caseifici", + "contactName" : "Maurizio Moroni", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "Strada Provinciale 124", + "city" : "Reggio Emilia", + "region" : "NULL", + "postalCode" : 42100, + "country" : "Italy", + "phone" : "0522-556721" + } + }, + { + "customerID" : "QUEDE", + "companyName" : "Que Delícia", + "contactName" : "Bernardo Batista", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Rua da Panificadora", + "city" : "12Rio de Janeiro", + "region" : "RJ", + "postalCode" : "02389-673", + "country" : "Brazil", + "phone" : "(21) 555-4252" + } + }, + { + "customerID" : "RANCH", + "companyName" : "Rancho grande", + "contactName" : "Sergio Gutiérrez", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Av. del Libertador 900", + "city" : "Buenos Aires", + "region" : "NULL", + "postalCode" : 1010, + "country" : "Argentina", + "phone" : "(1) 123-5555" + } + }, + { + "customerID" : "ROMEY", + "companyName" : "Romero y tomillo", + "contactName" : "Alejandra Camino", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Gran Vía 1", + "city" : "Madrid", + "region" : "NULL", + "postalCode" : 28001, + "country" : "Spain", + "phone" : "(91) 745 6200" + } + }, + { + "customerID" : "QUICK", + "companyName" : "QUICK-Stop", + "contactName" : "Horst Kloss", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Taucherstraße 10", + "city" : "Cunewalde", + "region" : "NULL", + "postalCode" : 1307, + "country" : "Germany", + "phone" : "0372-035188" + } + }, + { + "customerID" : "RICAR", + "companyName" : "Ricardo Adocicados", + "contactName" : "Janete Limeira", + "contactTitle" : "Assistant Sales Agent", + "address" : { + "street" : "Av. Copacabana 267", + "city" : "Rio de Janeiro", + "region" : "RJ", + "postalCode" : "02389-890", + "country" : "Brazil", + "phone" : "(21) 555-3412" + } + }, + { + "customerID" : "RICSU", + "companyName" : "Richter Supermarkt", + "contactName" : "Michael Holz", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Grenzacherweg 237", + "city" : "Genève", + "region" : "NULL", + "postalCode" : 1203, + "country" : "Switzerland", + "phone" : "0897-034214" + } + }, + { + "customerID" : "SANTG", + "companyName" : "Santé Gourmet", + "contactName" : "Jonas Bergulfsen", + "contactTitle" : "Owner", + "address" : { + "street" : "Erling Skakkes gate 78", + "city" : "Stavern", + "region" : "NULL", + "postalCode" : 4110, + "country" : "Norway", + "phone" : "07-98 92 35" + } + }, + { + "customerID" : "SAVEA", + "companyName" : "Save-a-lot Markets", + "contactName" : "Jose Pavarotti", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "187 Suffolk Ln.", + "city" : "Boise", + "region" : "ID", + "postalCode" : 83720, + "country" : "USA", + "phone" : "(208) 555-8097" + } + }, + { + "customerID" : "SEVES", + "companyName" : "Seven Seas Imports", + "contactName" : "Hari Kumar", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "90 Wadhurst Rd.", + "city" : "London", + "region" : "NULL", + "postalCode" : "OX15 4NB", + "country" : "UK", + "phone" : "(171) 555-1717" + } + }, + { + "customerID" : "SIMOB", + "companyName" : "Simons bistro", + "contactName" : "Jytte Petersen", + "contactTitle" : "Owner", + "address" : { + "street" : "Vinbæltet 34", + "city" : "Kobenhavn", + "region" : "NULL", + "postalCode" : 1734, + "country" : "Denmark", + "phone" : "31 12 34 56" + } + }, + { + "customerID" : "SPECD", + "companyName" : "Spécialités du monde", + "contactName" : "Dominique Perrier", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "25 rue Lauriston", + "city" : "Paris", + "region" : "NULL", + "postalCode" : 75016, + "country" : "France", + "phone" : "(1) 47.55.60.10" + } + }, + { + "customerID" : "SPLIR", + "companyName" : "Split Rail Beer & Ale", + "contactName" : "Art Braunschweiger", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "P.O. Box 555", + "city" : "Lander", + "region" : "WY", + "postalCode" : 82520, + "country" : "USA", + "phone" : "(307) 555-4680" + } + }, + { + "customerID" : "SUPRD", + "companyName" : "Suprêmes délices", + "contactName" : "Pascale Cartrain", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Boulevard Tirou 255", + "city" : "Charleroi", + "region" : "NULL", + "postalCode" : "B-6000", + "country" : "Belgium", + "phone" : "(071) 23 67 22 20" + } + }, + { + "customerID" : "THEBI", + "companyName" : "The Big Cheese", + "contactName" : "Liz Nixon", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "89 Jefferson Way Suite 2", + "city" : "Portland", + "region" : "OR", + "postalCode" : 97201, + "country" : "USA", + "phone" : "(503) 555-3612" + } + }, + { + "customerID" : "THECR", + "companyName" : "The Cracker Box", + "contactName" : "Liu Wong", + "contactTitle" : "Marketing Assistant", + "address" : { + "street" : "55 Grizzly Peak Rd.", + "city" : "Butte", + "region" : "MT", + "postalCode" : 59801, + "country" : "USA", + "phone" : "(406) 555-5834" + } + }, + { + "customerID" : "TOMSP", + "companyName" : "Toms Spezialitäten", + "contactName" : "Karin Josephs", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Luisenstr. 48", + "city" : "Münster", + "region" : "NULL", + "postalCode" : 44087, + "country" : "Germany", + "phone" : "0251-031259" + } + }, + { + "customerID" : "TORTU", + "companyName" : "Tortuga Restaurante", + "contactName" : "Miguel Angel Paolino", + "contactTitle" : "Owner", + "address" : { + "street" : "Avda. Azteca 123", + "city" : "México D.F.", + "region" : "NULL", + "postalCode" : 5033, + "country" : "Mexico", + "phone" : "(5) 555-2933" + } + }, + { + "customerID" : "TRADH", + "companyName" : "Tradição Hipermercados", + "contactName" : "Anabela Domingues", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Av. Inês de Castro 414", + "city" : "Sao Paulo", + "region" : "SP", + "postalCode" : "05634-030", + "country" : "Brazil", + "phone" : "(11) 555-2167" + } + }, + { + "customerID" : "TRAIH", + "companyName" : "Trail's Head Gourmet Provisioners", + "contactName" : "Helvetius Nagy", + "contactTitle" : "Sales Associate", + "address" : { + "street" : "722 DaVinci Blvd.", + "city" : "Kirkland", + "region" : "WA", + "postalCode" : 98034, + "country" : "USA", + "phone" : "(206) 555-8257" + } + }, + { + "customerID" : "VAFFE", + "companyName" : "Vaffeljernet", + "contactName" : "Palle Ibsen", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Smagsloget 45", + "city" : "Århus", + "region" : "NULL", + "postalCode" : 8200, + "country" : "Denmark", + "phone" : "86 21 32 43" + } + }, + { + "customerID" : "VICTE", + "companyName" : "Victuailles en stock", + "contactName" : "Mary Saveley", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "2 rue du Commerce", + "city" : "Lyon", + "region" : "NULL", + "postalCode" : 69004, + "country" : "France", + "phone" : "78.32.54.86" + } + }, + { + "customerID" : "VINET", + "companyName" : "Vins et alcools Chevalier", + "contactName" : "Paul Henriot", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "59 rue de l'Abbaye", + "city" : "Reims", + "region" : "NULL", + "postalCode" : 51100, + "country" : "France", + "phone" : "26.47.15.10" + } + }, + { + "customerID" : "WANDK", + "companyName" : "Die Wandernde Kuh", + "contactName" : "Rita Müller", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Adenauerallee 900", + "city" : "Stuttgart", + "region" : "NULL", + "postalCode" : 70563, + "country" : "Germany", + "phone" : "0711-020361" + } + }, + { + "customerID" : "WARTH", + "companyName" : "Wartian Herkku", + "contactName" : "Pirkko Koskitalo", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Torikatu 38", + "city" : "Oulu", + "region" : "NULL", + "postalCode" : 90110, + "country" : "Finland", + "phone" : "981-443655" + } + }, + { + "customerID" : "WELLI", + "companyName" : "Wellington Importadora", + "contactName" : "Paula Parente", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Rua do Mercado 12", + "city" : "Resende", + "region" : "SP", + "postalCode" : "08737-363", + "country" : "Brazil", + "phone" : "(14) 555-8122" + } + }, + { + "customerID" : "WHITC", + "companyName" : "White Clover Markets", + "contactName" : "Karl Jablonski", + "contactTitle" : "Owner", + "address" : { + "street" : "305 - 14th Ave. S. Suite 3B", + "city" : "Seattle", + "region" : "WA", + "postalCode" : 98128, + "country" : "USA", + "phone" : "(206) 555-4112" + } + }, + { + "customerID" : "WILMK", + "companyName" : "Wilman Kala", + "contactName" : "Matti Karttunen", + "contactTitle" : "Owner/Marketing Assistant", + "address" : { + "street" : "Keskuskatu 45", + "city" : "Helsinki", + "region" : "NULL", + "postalCode" : 21240, + "country" : "Finland", + "phone" : "90-224 8858" + } + }, + { + "customerID" : "WOLZA", + "companyName" : "Wolski Zajazd", + "contactName" : "Zbyszek Piestrzeniewicz", + "contactTitle" : "Owner", + "address" : { + "street" : "ul. Filtrowa 68", + "city" : "Warszawa", + "region" : "NULL", + "postalCode" : "01-012", + "country" : "Poland", + "phone" : "(26) 642-7012" + } + } +] diff --git a/vue-options-api-demos/grid/shared/employees.json b/vue-options-api-demos/grid/shared/employees.json new file mode 100644 index 00000000..ca4d4a8b --- /dev/null +++ b/vue-options-api-demos/grid/shared/employees.json @@ -0,0 +1,241 @@ + +[ + { + "employeeID" : 2, + "lastName" : "Fuller", + "firstName" : "Andrew", + "title" : "Vice President Sales", + "titleOfCourtesy" : "Dr.", + "birthDate" : "1952-02-19 00:00:00.000", + "hireDate" : "1992-08-14 00:00:00.000", + "address" : { + "street" : "908 W. Capital Way", + "city" : "Tacoma", + "region" : "WA", + "postalCode" : 98401, + "country" : "USA", + "phone" : "(206) 555-9482" + }, + "notes" : "Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative was promoted to sales manager", + "reportsTo" : "NULL", + "territoryIDs" : [ + 1730, + 1833, + 2116, + 2139, + 2184, + 40222, + 1581 + ] + }, + { + "employeeID" : 5, + "lastName" : "Buchanan", + "firstName" : "Steven", + "title" : "Sales Manager", + "titleOfCourtesy" : "Mr.", + "birthDate" : "1955-03-04 00:00:00.000", + "hireDate" : "1993-10-17 00:00:00.000", + "address" : { + "street" : "14 Garrett Hill", + "city" : "London", + "region" : "NULL", + "postalCode" : "SW1 8JR", + "country" : "UK", + "phone" : "(71) 555-4848" + }, + "notes" : "Steven Buchanan graduated from St. Andrews University in Scotland with a BSC degree in 1976. Upon joining the company as a sales representative in 1992 he spent 6 months in an orientation program at the Seattle office.", + "reportsTo" : 2, + "territoryIDs" : [ + 2903, + 7960, + 8837, + 10019, + 10038, + 11747, + 14450 + ] + }, + { + "employeeID" : 1, + "lastName" : "Davolio", + "firstName" : "Nancy", + "title" : "Sales Representative", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1948-12-08 00:00:00.000", + "hireDate" : "1992-05-01 00:00:00.000", + "address" : { + "street" : "507 20th Ave. E. Apt. 2A", + "city" : "Seattle", + "region" : "WA", + "postalCode" : 98122, + "country" : "USA", + "phone" : "(206) 555-9857" + }, + "notes" : "Education includes a BA in psychology from Colorado State University in 1970. She also completed The Art of the Cold Call. Nancy is a member of Toastmasters International.", + "reportsTo" : 2, + "territoryIDs" : [ + 6897, + 19713 + ] + }, + { + "employeeID" : 3, + "lastName" : "Leverling", + "firstName" : "Janet", + "title" : "Sales Representative", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1963-08-30 00:00:00.000", + "hireDate" : "1992-04-01 00:00:00.000", + "address" : { + "street" : "722 Moss Bay Blvd.", + "city" : "Kirkland", + "region" : "WA", + "postalCode" : 98033, + "country" : "USA", + "phone" : "(206) 555-3412" + }, + "notes" : "Janet has a BS degree in chemistry from Boston College (1984). She has also completed a certificate program in food retailing management. Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.", + "reportsTo" : 2, + "territoryIDs" : [ + 30346, + 31406, + 32859, + 33607 + ] + }, + { + "employeeID" : 4, + "lastName" : "Peacock", + "firstName" : "Margaret", + "title" : "Sales Representative", + "titleOfCourtesy" : "Mrs.", + "birthDate" : "1937-09-19 00:00:00.000", + "hireDate" : "1993-05-03 00:00:00.000", + "address" : { + "street" : "4110 Old Redmond Rd.", + "city" : "Redmond", + "region" : "WA", + "postalCode" : 98052, + "country" : "USA", + "phone" : "(206) 555-8122" + }, + "notes" : "Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966). She was assigned to the London office temporarily from July through November 1992.", + "reportsTo" : 2, + "territoryIDs" : [ + 20852, + 27403, + 27511 + ] + }, + { + "employeeID" : 6, + "lastName" : "Suyama", + "firstName" : "Michael", + "title" : "Sales Representative", + "titleOfCourtesy" : "Mr.", + "birthDate" : "1963-07-02 00:00:00.000", + "hireDate" : "1993-10-17 00:00:00.000", + "address" : { + "street" : "Coventry House Miner Rd.", + "city" : "London", + "region" : "NULL", + "postalCode" : "EC2 7JR", + "country" : "UK", + "phone" : "(71) 555-7773" + }, + "notes" : "Michael is a graduate of Sussex University (MA Economics 1983) and the University of California at Los Angeles (MBA marketing 1986). He has also taken the courses Multi-Cultural Selling and Time Management for the Sales Professional.", + "reportsTo" : 5, + "territoryIDs" : [ + 85014, + 85251, + 98004, + 98104, + 98052 + ] + }, + { + "employeeID" : 7, + "lastName" : "King", + "firstName" : "Robert", + "title" : "Sales Representative", + "titleOfCourtesy" : "Mr.", + "birthDate" : "1960-05-29 00:00:00.000", + "hireDate" : "1994-01-02 00:00:00.000", + "address" : { + "street" : "Edgeham Hollow Winchester Way", + "city" : "London", + "region" : "NULL", + "postalCode" : "RG1 9SP", + "country" : "UK", + "phone" : "(71) 555-5598" + }, + "notes" : "Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992 the year he joined the company.", + "reportsTo" : 5, + "territoryIDs" : [ + 60601, + 80202, + 80909, + 90405, + 94025, + 94105, + 95008, + 95054, + 95060, + 60179 + ] + }, + { + "employeeID" : 8, + "lastName" : "Callahan", + "firstName" : "Laura", + "title" : "Inside Sales Coordinator", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1958-01-09 00:00:00.000", + "hireDate" : "1994-03-05 00:00:00.000", + "address" : { + "street" : "4726 11th Ave. N.E.", + "city" : "Seattle", + "region" : "WA", + "postalCode" : 98105, + "country" : "USA", + "phone" : "(206) 555-1189" + }, + "notes" : "Laura received a BA in psychology from the University of Washington. She has also completed a course in business French. She reads and writes French.", + "reportsTo" : 2, + "territoryIDs" : [ + 19428, + 44122, + 45839, + 53404 + ] + }, + { + "employeeID" : 9, + "lastName" : "Dodsworth", + "firstName" : "Anne", + "title" : "Sales Representative", + "titleOfCourtesy" : "Ms.", + "birthDate" : "1966-01-27 00:00:00.000", + "hireDate" : "1994-11-15 00:00:00.000", + "address" : { + "street" : "7 Houndstooth Rd.", + "city" : "London", + "region" : "NULL", + "postalCode" : "WG2 7LT", + "country" : "UK", + "phone" : "(71) 555-4444" + }, + "notes" : "Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.", + "reportsTo" : 5, + "territoryIDs" : [ + 3049, + 3801, + 48075, + 48084, + 48304, + 55113, + 55439 + ] + } +] diff --git a/vue-options-api-demos/grid/shared/es.json b/vue-options-api-demos/grid/shared/es.json new file mode 100644 index 00000000..72eb2b1c --- /dev/null +++ b/vue-options-api-demos/grid/shared/es.json @@ -0,0 +1,55 @@ +{ + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "numerictextbox": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "grid": { + "groupPanelEmpty": "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio", + "noRecords": "No hay datos disponibles.", + "pagerFirstPage": "Ir a la primera página", + "pagerPreviousPage": "Ir a la página anterior", + "pagerNextPage": "Ir a la página siguiente", + "pagerLastPage": "Ir a la última página", + "pagerPage": "Página", + "pagerOf": "de", + "pagerTotalPages": "{0}", + "pagerItems": "ítems", + "pagerInfo": "{0} - {1} de {2} ítems", + "pagerItemsPerPage": "ítems por página", + "filterEqOperator": "Es igual a", + "filterNotEqOperator": "No es igual a", + "filterIsNullOperator": "Es nulo", + "filterIsNotNullOperator": "No es nulo", + "filterIsEmptyOperator": "Está vacío", + "filterIsNotEmptyOperator": "No está vacío", + "filterStartsWithOperator": "Comienza con", + "filterContainsOperator": "Contiene", + "filterNotContainsOperator": "No contiene", + "filterEndsWithOperator": "Termina en", + "filterGteOperator": "Es mayor o igual que", + "filterGtOperator": "Es mayor que", + "filterLteOperator": "Es menor o igual que", + "filterLtOperator": "Es menor o igual que", + "filterIsTrue": "Sí", + "filterIsFalse": "No", + "filterBooleanAll": "(Todas)", + "filterAfterOrEqualOperator": "Es posterior o igual a", + "filterAfterOperator": "Es posterior", + "filterBeforeOperator": "Es anterior", + "filterBeforeOrEqualOperator": "Es anterior o igual a", + "filterFilterButton": "Filtrar", + "filterClearButton": "Limpiar filtros", + "filterAndLogic": "Y", + "filterOrLogic": "O" + } +} diff --git a/vue-options-api-demos/grid/shared/keys.js b/vue-options-api-demos/grid/shared/keys.js new file mode 100644 index 00000000..592fcc49 --- /dev/null +++ b/vue-options-api-demos/grid/shared/keys.js @@ -0,0 +1,21 @@ +const Keys = { + backspace: 8, + tab: 9, + enter: 13, + shift: 16, + esc: 27, + space: 32, + pageUp: 33, + pageDown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40, + delete: 46 +}; + +export { + Keys +}; diff --git a/vue-options-api-demos/grid/shared/orders.json b/vue-options-api-demos/grid/shared/orders.json new file mode 100644 index 00000000..9d8d8ac9 --- /dev/null +++ b/vue-options-api-demos/grid/shared/orders.json @@ -0,0 +1,25576 @@ +[ + { + "orderID": 10271, + "customerID": "SPLIR", + "employeeID": 6, + "orderDate": "1996-08-01 00:00:00.000", + "requiredDate": "1996-08-29 00:00:00.000", + "shippedDate": "1996-08-30 00:00:00.000", + "shipVia": 2, + "freight": 4.54, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10266, + "customerID": "WARTH", + "employeeID": 3, + "orderDate": "1996-07-26 00:00:00.000", + "requiredDate": "1996-09-06 00:00:00.000", + "shippedDate": "1996-07-31 00:00:00.000", + "shipVia": 3, + "freight": 25.73, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 12, + "unitPrice": 30.4, + "quantity": 12, + "discount": 0.05 + } + ] + }, + { + "orderID": 10279, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1996-08-13 00:00:00.000", + "requiredDate": "1996-09-10 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 2, + "freight": 25.83, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10292, + "customerID": "TRADH", + "employeeID": 1, + "orderDate": "1996-08-28 00:00:00.000", + "requiredDate": "1996-09-25 00:00:00.000", + "shippedDate": "1996-09-02 00:00:00.000", + "shipVia": 2, + "freight": 1.35, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10295, + "customerID": "VINET", + "employeeID": 2, + "orderDate": "1996-09-02 00:00:00.000", + "requiredDate": "1996-09-30 00:00:00.000", + "shippedDate": "1996-09-10 00:00:00.000", + "shipVia": 2, + "freight": 1.15, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10313, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1996-09-24 00:00:00.000", + "requiredDate": "1996-10-22 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 1.96, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10317, + "customerID": "LONEP", + "employeeID": 6, + "orderDate": "1996-09-30 00:00:00.000", + "requiredDate": "1996-10-28 00:00:00.000", + "shippedDate": "1996-10-10 00:00:00.000", + "shipVia": 1, + "freight": 12.69, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10322, + "customerID": "PERIC", + "employeeID": 7, + "orderDate": "1996-10-04 00:00:00.000", + "requiredDate": "1996-11-01 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 3, + "freight": 0.4, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10320, + "customerID": "WARTH", + "employeeID": 5, + "orderDate": "1996-10-03 00:00:00.000", + "requiredDate": "1996-10-17 00:00:00.000", + "shippedDate": "1996-10-18 00:00:00.000", + "shipVia": 3, + "freight": 34.57, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10321, + "customerID": "ISLAT", + "employeeID": 3, + "orderDate": "1996-10-03 00:00:00.000", + "requiredDate": "1996-10-31 00:00:00.000", + "shippedDate": "1996-10-11 00:00:00.000", + "shipVia": 2, + "freight": 3.43, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10336, + "customerID": "PRINI", + "employeeID": 7, + "orderDate": "1996-10-23 00:00:00.000", + "requiredDate": "1996-11-20 00:00:00.000", + "shippedDate": "1996-10-25 00:00:00.000", + "shipVia": 2, + "freight": 15.51, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10349, + "customerID": "SPLIR", + "employeeID": 7, + "orderDate": "1996-11-08 00:00:00.000", + "requiredDate": "1996-12-06 00:00:00.000", + "shippedDate": "1996-11-15 00:00:00.000", + "shipVia": 1, + "freight": 8.63, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10331, + "customerID": "BONAP", + "employeeID": 9, + "orderDate": "1996-10-16 00:00:00.000", + "requiredDate": "1996-11-27 00:00:00.000", + "shippedDate": "1996-10-21 00:00:00.000", + "shipVia": 1, + "freight": 10.19, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10365, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1996-11-27 00:00:00.000", + "requiredDate": "1996-12-25 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 2, + "freight": 22, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10371, + "customerID": "LAMAI", + "employeeID": 1, + "orderDate": "1996-12-03 00:00:00.000", + "requiredDate": "1996-12-31 00:00:00.000", + "shippedDate": "1996-12-24 00:00:00.000", + "shipVia": 1, + "freight": 0.45, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10376, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1996-12-09 00:00:00.000", + "requiredDate": "1997-01-06 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 2, + "freight": 20.39, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 42, + "discount": 0.05 + } + ] + }, + { + "orderID": 10378, + "customerID": "FOLKO", + "employeeID": 5, + "orderDate": "1996-12-10 00:00:00.000", + "requiredDate": "1997-01-07 00:00:00.000", + "shippedDate": "1996-12-19 00:00:00.000", + "shipVia": 3, + "freight": 5.44, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10392, + "customerID": "PICCO", + "employeeID": 2, + "orderDate": "1996-12-24 00:00:00.000", + "requiredDate": "1997-01-21 00:00:00.000", + "shippedDate": "1997-01-01 00:00:00.000", + "shipVia": 3, + "freight": 122.46, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10391, + "customerID": "DRACD", + "employeeID": 3, + "orderDate": "1996-12-23 00:00:00.000", + "requiredDate": "1997-01-20 00:00:00.000", + "shippedDate": "1996-12-31 00:00:00.000", + "shipVia": 3, + "freight": 5.45, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10405, + "customerID": "LINOD", + "employeeID": 1, + "orderDate": "1997-01-06 00:00:00.000", + "requiredDate": "1997-02-03 00:00:00.000", + "shippedDate": "1997-01-22 00:00:00.000", + "shipVia": 1, + "freight": 34.82, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 3, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10412, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-01-13 00:00:00.000", + "requiredDate": "1997-02-10 00:00:00.000", + "shippedDate": "1997-01-15 00:00:00.000", + "shipVia": 2, + "freight": 3.77, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10422, + "customerID": "FRANS", + "employeeID": 2, + "orderDate": "1997-01-22 00:00:00.000", + "requiredDate": "1997-02-19 00:00:00.000", + "shippedDate": "1997-01-31 00:00:00.000", + "shipVia": 1, + "freight": 3.02, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10433, + "customerID": "PRINI", + "employeeID": 3, + "orderDate": "1997-02-03 00:00:00.000", + "requiredDate": "1997-03-03 00:00:00.000", + "shippedDate": "1997-03-04 00:00:00.000", + "shipVia": 3, + "freight": 73.83, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10427, + "customerID": "PICCO", + "employeeID": 4, + "orderDate": "1997-01-27 00:00:00.000", + "requiredDate": "1997-02-24 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 2, + "freight": 31.29, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10437, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-02-05 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-02-12 00:00:00.000", + "shipVia": 1, + "freight": 19.97, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10428, + "customerID": "REGGC", + "employeeID": 7, + "orderDate": "1997-01-28 00:00:00.000", + "requiredDate": "1997-02-25 00:00:00.000", + "shippedDate": "1997-02-04 00:00:00.000", + "shipVia": 1, + "freight": 11.09, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10441, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1997-02-10 00:00:00.000", + "requiredDate": "1997-03-24 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 73.02, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10457, + "customerID": "KOENE", + "employeeID": 2, + "orderDate": "1997-02-25 00:00:00.000", + "requiredDate": "1997-03-25 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 1, + "freight": 11.57, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10478, + "customerID": "VICTE", + "employeeID": 2, + "orderDate": "1997-03-18 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-26 00:00:00.000", + "shipVia": 3, + "freight": 4.81, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10482, + "customerID": "LAZYK", + "employeeID": 1, + "orderDate": "1997-03-21 00:00:00.000", + "requiredDate": "1997-04-18 00:00:00.000", + "shippedDate": "1997-04-10 00:00:00.000", + "shipVia": 3, + "freight": 7.48, + "shipName": "Lazy K Kountry Store", + "shipAddress": { + "street": "12 Orchestra Terrace", + "city": "Walla Walla", + "region": "WA", + "postalCode": 99362, + "country": "USA" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10494, + "customerID": "COMMI", + "employeeID": 4, + "orderDate": "1997-04-02 00:00:00.000", + "requiredDate": "1997-04-30 00:00:00.000", + "shippedDate": "1997-04-09 00:00:00.000", + "shipVia": 2, + "freight": 65.99, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10501, + "customerID": "BLAUS", + "employeeID": 9, + "orderDate": "1997-04-09 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 3, + "freight": 8.85, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10496, + "customerID": "TRADH", + "employeeID": 7, + "orderDate": "1997-04-04 00:00:00.000", + "requiredDate": "1997-05-02 00:00:00.000", + "shippedDate": "1997-04-07 00:00:00.000", + "shipVia": 2, + "freight": 46.77, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10509, + "customerID": "BLAUS", + "employeeID": 4, + "orderDate": "1997-04-17 00:00:00.000", + "requiredDate": "1997-05-15 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 1, + "freight": 0.15, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10505, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-04-14 00:00:00.000", + "requiredDate": "1997-05-12 00:00:00.000", + "shippedDate": "1997-04-21 00:00:00.000", + "shipVia": 3, + "freight": 7.13, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10545, + "customerID": "LAZYK", + "employeeID": 8, + "orderDate": "1997-05-22 00:00:00.000", + "requiredDate": "1997-06-19 00:00:00.000", + "shippedDate": "1997-06-26 00:00:00.000", + "shipVia": 2, + "freight": 11.92, + "shipName": "Lazy K Kountry Store", + "shipAddress": { + "street": "12 Orchestra Terrace", + "city": "Walla Walla", + "region": "WA", + "postalCode": 99362, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10556, + "customerID": "SIMOB", + "employeeID": 2, + "orderDate": "1997-06-03 00:00:00.000", + "requiredDate": "1997-07-15 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 1, + "freight": 9.8, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10568, + "customerID": "GALED", + "employeeID": 3, + "orderDate": "1997-06-13 00:00:00.000", + "requiredDate": "1997-07-11 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 3, + "freight": 6.54, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10581, + "customerID": "FAMIA", + "employeeID": 3, + "orderDate": "1997-06-26 00:00:00.000", + "requiredDate": "1997-07-24 00:00:00.000", + "shippedDate": "1997-07-02 00:00:00.000", + "shipVia": 1, + "freight": 3.01, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10585, + "customerID": "WELLI", + "employeeID": 7, + "orderDate": "1997-07-01 00:00:00.000", + "requiredDate": "1997-07-29 00:00:00.000", + "shippedDate": "1997-07-10 00:00:00.000", + "shipVia": 1, + "freight": 13.41, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10586, + "customerID": "REGGC", + "employeeID": 9, + "orderDate": "1997-07-02 00:00:00.000", + "requiredDate": "1997-07-30 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 1, + "freight": 0.48, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 4, + "discount": 0.15 + } + ] + }, + { + "orderID": 10589, + "customerID": "GREAL", + "employeeID": 8, + "orderDate": "1997-07-04 00:00:00.000", + "requiredDate": "1997-08-01 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 2, + "freight": 4.42, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10584, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1997-06-30 00:00:00.000", + "requiredDate": "1997-07-28 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 1, + "freight": 59.14, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0.05 + } + ] + }, + { + "orderID": 10599, + "customerID": "BSBEV", + "employeeID": 6, + "orderDate": "1997-07-15 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-07-21 00:00:00.000", + "shipVia": 3, + "freight": 29.98, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10602, + "customerID": "VAFFE", + "employeeID": 8, + "orderDate": "1997-07-17 00:00:00.000", + "requiredDate": "1997-08-14 00:00:00.000", + "shippedDate": "1997-07-22 00:00:00.000", + "shipVia": 2, + "freight": 2.92, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 77, + "unitPrice": 13, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10608, + "customerID": "TOMSP", + "employeeID": 4, + "orderDate": "1997-07-23 00:00:00.000", + "requiredDate": "1997-08-20 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 27.79, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10610, + "customerID": "LAMAI", + "employeeID": 8, + "orderDate": "1997-07-25 00:00:00.000", + "requiredDate": "1997-08-22 00:00:00.000", + "shippedDate": "1997-08-06 00:00:00.000", + "shipVia": 1, + "freight": 26.78, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 21, + "discount": 0.25 + } + ] + }, + { + "orderID": 10615, + "customerID": "WILMK", + "employeeID": 2, + "orderDate": "1997-07-30 00:00:00.000", + "requiredDate": "1997-08-27 00:00:00.000", + "shippedDate": "1997-08-06 00:00:00.000", + "shipVia": 3, + "freight": 0.75, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10617, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1997-07-31 00:00:00.000", + "requiredDate": "1997-08-28 00:00:00.000", + "shippedDate": "1997-08-04 00:00:00.000", + "shipVia": 2, + "freight": 18.53, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10628, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1997-08-12 00:00:00.000", + "requiredDate": "1997-09-09 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 3, + "freight": 30.36, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10631, + "customerID": "LAMAI", + "employeeID": 8, + "orderDate": "1997-08-14 00:00:00.000", + "requiredDate": "1997-09-11 00:00:00.000", + "shippedDate": "1997-08-15 00:00:00.000", + "shipVia": 1, + "freight": 0.87, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 8, + "discount": 0.1 + } + ] + }, + { + "orderID": 10639, + "customerID": "SANTG", + "employeeID": 7, + "orderDate": "1997-08-20 00:00:00.000", + "requiredDate": "1997-09-17 00:00:00.000", + "shippedDate": "1997-08-27 00:00:00.000", + "shipVia": 3, + "freight": 38.64, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10655, + "customerID": "REGGC", + "employeeID": 1, + "orderDate": "1997-09-03 00:00:00.000", + "requiredDate": "1997-10-01 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 2, + "freight": 4.41, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10660, + "customerID": "HUNGC", + "employeeID": 8, + "orderDate": "1997-09-08 00:00:00.000", + "requiredDate": "1997-10-06 00:00:00.000", + "shippedDate": "1997-10-15 00:00:00.000", + "shipVia": 1, + "freight": 111.29, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10662, + "customerID": "LONEP", + "employeeID": 3, + "orderDate": "1997-09-09 00:00:00.000", + "requiredDate": "1997-10-07 00:00:00.000", + "shippedDate": "1997-09-18 00:00:00.000", + "shipVia": 2, + "freight": 1.28, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10669, + "customerID": "SIMOB", + "employeeID": 2, + "orderDate": "1997-09-15 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-09-22 00:00:00.000", + "shipVia": 1, + "freight": 24.39, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10679, + "customerID": "BLONP", + "employeeID": 8, + "orderDate": "1997-09-23 00:00:00.000", + "requiredDate": "1997-10-21 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 3, + "freight": 27.94, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10683, + "customerID": "DUMON", + "employeeID": 2, + "orderDate": "1997-09-26 00:00:00.000", + "requiredDate": "1997-10-24 00:00:00.000", + "shippedDate": "1997-10-01 00:00:00.000", + "shipVia": 1, + "freight": 4.4, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10674, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-09-18 00:00:00.000", + "requiredDate": "1997-10-16 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 2, + "freight": 0.9, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10692, + "customerID": "ALFKI", + "employeeID": 4, + "orderDate": "1997-10-03 00:00:00.000", + "requiredDate": "1997-10-31 00:00:00.000", + "shippedDate": "1997-10-13 00:00:00.000", + "shipVia": 2, + "freight": 61.02, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10689, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-10-01 00:00:00.000", + "requiredDate": "1997-10-29 00:00:00.000", + "shippedDate": "1997-10-07 00:00:00.000", + "shipVia": 2, + "freight": 13.42, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10699, + "customerID": "MORGK", + "employeeID": 3, + "orderDate": "1997-10-09 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-13 00:00:00.000", + "shipVia": 3, + "freight": 0.58, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10721, + "customerID": "QUICK", + "employeeID": 5, + "orderDate": "1997-10-29 00:00:00.000", + "requiredDate": "1997-11-26 00:00:00.000", + "shippedDate": "1997-10-31 00:00:00.000", + "shipVia": 3, + "freight": 48.92, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 50, + "discount": 0.05 + } + ] + }, + { + "orderID": 10723, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1997-10-30 00:00:00.000", + "requiredDate": "1997-11-27 00:00:00.000", + "shippedDate": "1997-11-25 00:00:00.000", + "shipVia": 1, + "freight": 21.72, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10738, + "customerID": "SPECD", + "employeeID": 2, + "orderDate": "1997-11-12 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 1, + "freight": 2.91, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10741, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1997-11-14 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 3, + "freight": 10.96, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10732, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1997-11-06 00:00:00.000", + "requiredDate": "1997-12-04 00:00:00.000", + "shippedDate": "1997-11-07 00:00:00.000", + "shipVia": 1, + "freight": 16.97, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10743, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-11-17 00:00:00.000", + "requiredDate": "1997-12-15 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 23.72, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 46, + "unitPrice": 12, + "quantity": 28, + "discount": 0.05 + } + ] + }, + { + "orderID": 10754, + "customerID": "MAGAA", + "employeeID": 6, + "orderDate": "1997-11-25 00:00:00.000", + "requiredDate": "1997-12-23 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 3, + "freight": 2.38, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10744, + "customerID": "VAFFE", + "employeeID": 6, + "orderDate": "1997-11-17 00:00:00.000", + "requiredDate": "1997-12-15 00:00:00.000", + "shippedDate": "1997-11-24 00:00:00.000", + "shipVia": 1, + "freight": 69.19, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10765, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1997-12-04 00:00:00.000", + "requiredDate": "1998-01-01 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 3, + "freight": 42.74, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 80, + "discount": 0.1 + } + ] + }, + { + "orderID": 10770, + "customerID": "HANAR", + "employeeID": 8, + "orderDate": "1997-12-09 00:00:00.000", + "requiredDate": "1998-01-06 00:00:00.000", + "shippedDate": "1997-12-17 00:00:00.000", + "shipVia": 3, + "freight": 5.32, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10771, + "customerID": "ERNSH", + "employeeID": 9, + "orderDate": "1997-12-10 00:00:00.000", + "requiredDate": "1998-01-07 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 2, + "freight": 11.19, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10767, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1997-12-05 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 3, + "freight": 1.59, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10782, + "customerID": "CACTU", + "employeeID": 9, + "orderDate": "1997-12-17 00:00:00.000", + "requiredDate": "1998-01-14 00:00:00.000", + "shippedDate": "1997-12-22 00:00:00.000", + "shipVia": 3, + "freight": 1.1, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10777, + "customerID": "GOURL", + "employeeID": 7, + "orderDate": "1997-12-15 00:00:00.000", + "requiredDate": "1997-12-29 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 2, + "freight": 3.01, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10778, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1998-01-13 00:00:00.000", + "shippedDate": "1997-12-24 00:00:00.000", + "shipVia": 1, + "freight": 6.79, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10797, + "customerID": "DRACD", + "employeeID": 7, + "orderDate": "1997-12-25 00:00:00.000", + "requiredDate": "1998-01-22 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 2, + "freight": 33.35, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10807, + "customerID": "FRANS", + "employeeID": 4, + "orderDate": "1997-12-31 00:00:00.000", + "requiredDate": "1998-01-28 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 1.36, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10809, + "customerID": "WELLI", + "employeeID": 7, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 1, + "freight": 4.87, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10815, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 3, + "freight": 14.62, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10820, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 37.52, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10843, + "customerID": "VICTE", + "employeeID": 4, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-18 00:00:00.000", + "shippedDate": "1998-01-26 00:00:00.000", + "shipVia": 2, + "freight": 9.26, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 4, + "discount": 0.25 + } + ] + }, + { + "orderID": 10844, + "customerID": "PICCO", + "employeeID": 8, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-18 00:00:00.000", + "shippedDate": "1998-01-26 00:00:00.000", + "shipVia": 2, + "freight": 25.22, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10853, + "customerID": "BLAUS", + "employeeID": 9, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-03 00:00:00.000", + "shipVia": 2, + "freight": 53.83, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10874, + "customerID": "GODOS", + "employeeID": 5, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-02-11 00:00:00.000", + "shipVia": 2, + "freight": 19.58, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10867, + "customerID": "LONEP", + "employeeID": 6, + "orderDate": "1998-02-03 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-11 00:00:00.000", + "shipVia": 1, + "freight": 1.93, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10878, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-10 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 46.69, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10883, + "customerID": "LONEP", + "employeeID": 8, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 3, + "freight": 0.53, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10887, + "customerID": "GALED", + "employeeID": 8, + "orderDate": "1998-02-13 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-02-16 00:00:00.000", + "shipVia": 3, + "freight": 1.25, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10891, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1998-02-17 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 2, + "freight": 20.37, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10892, + "customerID": "MAISD", + "employeeID": 4, + "orderDate": "1998-02-17 00:00:00.000", + "requiredDate": "1998-03-17 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 2, + "freight": 120.27, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10881, + "customerID": "CACTU", + "employeeID": 4, + "orderDate": "1998-02-11 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 2.84, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 73, + "unitPrice": 15, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10900, + "customerID": "WELLI", + "employeeID": 1, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 2, + "freight": 1.66, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 3, + "discount": 0.25 + } + ] + }, + { + "orderID": 10905, + "customerID": "WELLI", + "employeeID": 9, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 13.72, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10914, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 1, + "freight": 21.19, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10906, + "customerID": "WOLZA", + "employeeID": 4, + "orderDate": "1998-02-25 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 3, + "freight": 26.29, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10907, + "customerID": "SPECD", + "employeeID": 6, + "orderDate": "1998-02-25 00:00:00.000", + "requiredDate": "1998-03-25 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 9.19, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10920, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-03-31 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 2, + "freight": 29.61, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10934, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-12 00:00:00.000", + "shipVia": 3, + "freight": 32.01, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10936, + "customerID": "GREAL", + "employeeID": 3, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 2, + "freight": 33.68, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10942, + "customerID": "REGGC", + "employeeID": 9, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 17.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 49, + "unitPrice": 20, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10947, + "customerID": "BSBEV", + "employeeID": 3, + "orderDate": "1998-03-13 00:00:00.000", + "requiredDate": "1998-04-10 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 2, + "freight": 3.26, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10955, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-03-17 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-20 00:00:00.000", + "shipVia": 2, + "freight": 3.26, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 12, + "discount": 0.2 + } + ] + }, + { + "orderID": 10950, + "customerID": "MAGAA", + "employeeID": 1, + "orderDate": "1998-03-16 00:00:00.000", + "requiredDate": "1998-04-13 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 2, + "freight": 2.5, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10963, + "customerID": "FURIB", + "employeeID": 9, + "orderDate": "1998-03-19 00:00:00.000", + "requiredDate": "1998-04-16 00:00:00.000", + "shippedDate": "1998-03-26 00:00:00.000", + "shipVia": 3, + "freight": 2.7, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 60, + "unitPrice": 34, + "quantity": 2, + "discount": 0.15 + } + ] + }, + { + "orderID": 10969, + "customerID": "COMMI", + "employeeID": 1, + "orderDate": "1998-03-23 00:00:00.000", + "requiredDate": "1998-04-20 00:00:00.000", + "shippedDate": "1998-03-30 00:00:00.000", + "shipVia": 2, + "freight": 0.21, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 46, + "unitPrice": 12, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10970, + "customerID": "BOLID", + "employeeID": 9, + "orderDate": "1998-03-24 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-04-24 00:00:00.000", + "shipVia": 1, + "freight": 16.16, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10971, + "customerID": "FRANR", + "employeeID": 2, + "orderDate": "1998-03-24 00:00:00.000", + "requiredDate": "1998-04-21 00:00:00.000", + "shippedDate": "1998-04-02 00:00:00.000", + "shipVia": 2, + "freight": 121.82, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10965, + "customerID": "OLDWO", + "employeeID": 6, + "orderDate": "1998-03-20 00:00:00.000", + "requiredDate": "1998-04-17 00:00:00.000", + "shippedDate": "1998-03-30 00:00:00.000", + "shipVia": 3, + "freight": 144.38, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10974, + "customerID": "SPLIR", + "employeeID": 3, + "orderDate": "1998-03-25 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-04-03 00:00:00.000", + "shipVia": 3, + "freight": 12.96, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10980, + "customerID": "FOLKO", + "employeeID": 4, + "orderDate": "1998-03-27 00:00:00.000", + "requiredDate": "1998-05-08 00:00:00.000", + "shippedDate": "1998-04-17 00:00:00.000", + "shipVia": 1, + "freight": 1.26, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10981, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1998-03-27 00:00:00.000", + "requiredDate": "1998-04-24 00:00:00.000", + "shippedDate": "1998-04-02 00:00:00.000", + "shipVia": 2, + "freight": 193.37, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10959, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1998-03-18 00:00:00.000", + "requiredDate": "1998-04-29 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 2, + "freight": 4.98, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10992, + "customerID": "THEBI", + "employeeID": 1, + "orderDate": "1998-04-01 00:00:00.000", + "requiredDate": "1998-04-29 00:00:00.000", + "shippedDate": "1998-04-03 00:00:00.000", + "shipVia": 3, + "freight": 4.27, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10994, + "customerID": "VAFFE", + "employeeID": 2, + "orderDate": "1998-04-02 00:00:00.000", + "requiredDate": "1998-04-16 00:00:00.000", + "shippedDate": "1998-04-09 00:00:00.000", + "shipVia": 3, + "freight": 65.53, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 18, + "discount": 0.05 + } + ] + }, + { + "orderID": 10996, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1998-04-02 00:00:00.000", + "requiredDate": "1998-04-30 00:00:00.000", + "shippedDate": "1998-04-10 00:00:00.000", + "shipVia": 2, + "freight": 1.12, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 11014, + "customerID": "LINOD", + "employeeID": 2, + "orderDate": "1998-04-10 00:00:00.000", + "requiredDate": "1998-05-08 00:00:00.000", + "shippedDate": "1998-04-15 00:00:00.000", + "shipVia": 3, + "freight": 23.6, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 28, + "discount": 0.1 + } + ] + }, + { + "orderID": 11020, + "customerID": "OTTIK", + "employeeID": 2, + "orderDate": "1998-04-14 00:00:00.000", + "requiredDate": "1998-05-12 00:00:00.000", + "shippedDate": "1998-04-16 00:00:00.000", + "shipVia": 2, + "freight": 43.3, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 24, + "discount": 0.15 + } + ] + }, + { + "orderID": 11040, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-04-22 00:00:00.000", + "requiredDate": "1998-05-20 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 18.84, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 11043, + "customerID": "SPECD", + "employeeID": 5, + "orderDate": "1998-04-22 00:00:00.000", + "requiredDate": "1998-05-20 00:00:00.000", + "shippedDate": "1998-04-29 00:00:00.000", + "shipVia": 2, + "freight": 8.8, + "shipName": "Spécialités du monde", + "shipAddress": { + "street": "25 rue Lauriston", + "city": "Paris", + "region": "NULL", + "postalCode": 75016, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 11044, + "customerID": "WOLZA", + "employeeID": 4, + "orderDate": "1998-04-23 00:00:00.000", + "requiredDate": "1998-05-21 00:00:00.000", + "shippedDate": "1998-05-01 00:00:00.000", + "shipVia": 1, + "freight": 8.72, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 11048, + "customerID": "BOTTM", + "employeeID": 7, + "orderDate": "1998-04-24 00:00:00.000", + "requiredDate": "1998-05-22 00:00:00.000", + "shippedDate": "1998-04-30 00:00:00.000", + "shipVia": 3, + "freight": 24.12, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 42, + "discount": 0 + } + ] + }, + { + "orderID": 11037, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1998-04-21 00:00:00.000", + "requiredDate": "1998-05-19 00:00:00.000", + "shippedDate": "1998-04-27 00:00:00.000", + "shipVia": 1, + "freight": 3.2, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 11050, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-04-27 00:00:00.000", + "requiredDate": "1998-05-25 00:00:00.000", + "shippedDate": "1998-05-05 00:00:00.000", + "shipVia": 2, + "freight": 59.41, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0.1 + } + ] + }, + { + "orderID": 11057, + "customerID": "NORTS", + "employeeID": 3, + "orderDate": "1998-04-29 00:00:00.000", + "requiredDate": "1998-05-27 00:00:00.000", + "shippedDate": "1998-05-01 00:00:00.000", + "shipVia": 3, + "freight": 4.13, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 11061, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-04-30 00:00:00.000", + "requiredDate": "1998-06-11 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 14.01, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 11051, + "customerID": "LAMAI", + "employeeID": 7, + "orderDate": "1998-04-27 00:00:00.000", + "requiredDate": "1998-05-25 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 3, + "freight": 2.79, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 11067, + "customerID": "DRACD", + "employeeID": 1, + "orderDate": "1998-05-04 00:00:00.000", + "requiredDate": "1998-05-18 00:00:00.000", + "shippedDate": "1998-05-06 00:00:00.000", + "shipVia": 2, + "freight": 7.98, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 11069, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1998-05-04 00:00:00.000", + "requiredDate": "1998-06-01 00:00:00.000", + "shippedDate": "1998-05-06 00:00:00.000", + "shipVia": 2, + "freight": 15.67, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 11074, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1998-05-06 00:00:00.000", + "requiredDate": "1998-06-03 00:00:00.000", + "shippedDate": "NULL", + "shipVia": 2, + "freight": 18.44, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10248, + "customerID": "VINET", + "employeeID": 5, + "orderDate": "1996-07-04 00:00:00.000", + "requiredDate": "1996-08-01 00:00:00.000", + "shippedDate": "1996-07-16 00:00:00.000", + "shipVia": 3, + "freight": 32.38, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 14, + "quantity": 12, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 9.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10249, + "customerID": "TOMSP", + "employeeID": 6, + "orderDate": "1996-07-05 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-10 00:00:00.000", + "shipVia": 1, + "freight": 11.61, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 9, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10250, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1996-07-08 00:00:00.000", + "requiredDate": "1996-08-05 00:00:00.000", + "shippedDate": "1996-07-12 00:00:00.000", + "shipVia": 2, + "freight": 65.83, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10252, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1996-07-09 00:00:00.000", + "requiredDate": "1996-08-06 00:00:00.000", + "shippedDate": "1996-07-11 00:00:00.000", + "shipVia": 2, + "freight": 51.3, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10253, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1996-07-10 00:00:00.000", + "requiredDate": "1996-07-24 00:00:00.000", + "shippedDate": "1996-07-16 00:00:00.000", + "shipVia": 2, + "freight": 58.17, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 42, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10251, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1996-07-08 00:00:00.000", + "requiredDate": "1996-08-05 00:00:00.000", + "shippedDate": "1996-07-15 00:00:00.000", + "shipVia": 1, + "freight": 41.34, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 22, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0.05 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10257, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1996-07-16 00:00:00.000", + "requiredDate": "1996-08-13 00:00:00.000", + "shippedDate": "1996-07-22 00:00:00.000", + "shipVia": 3, + "freight": 81.91, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 25, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10258, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1996-07-17 00:00:00.000", + "requiredDate": "1996-08-14 00:00:00.000", + "shippedDate": "1996-07-23 00:00:00.000", + "shipVia": 1, + "freight": 140.51, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 5, + "unitPrice": 17, + "quantity": 65, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10259, + "customerID": "CENTC", + "employeeID": 4, + "orderDate": "1996-07-18 00:00:00.000", + "requiredDate": "1996-08-15 00:00:00.000", + "shippedDate": "1996-07-25 00:00:00.000", + "shipVia": 3, + "freight": 3.25, + "shipName": "Centro comercial Moctezuma", + "shipAddress": { + "street": "Sierras de Granada 9993", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5022, + "country": "Mexico" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10260, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1996-07-19 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-29 00:00:00.000", + "shipVia": 1, + "freight": 55.09, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 16, + "discount": 0.25 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 50, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 21, + "discount": 0.25 + } + ] + }, + { + "orderID": 10261, + "customerID": "QUEDE", + "employeeID": 4, + "orderDate": "1996-07-19 00:00:00.000", + "requiredDate": "1996-08-16 00:00:00.000", + "shippedDate": "1996-07-30 00:00:00.000", + "shipVia": 2, + "freight": 3.05, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10262, + "customerID": "RATTC", + "employeeID": 8, + "orderDate": "1996-07-22 00:00:00.000", + "requiredDate": "1996-08-19 00:00:00.000", + "shippedDate": "1996-07-25 00:00:00.000", + "shipVia": 3, + "freight": 48.29, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 5, + "unitPrice": 17, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 7, + "unitPrice": 24, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10256, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1996-07-15 00:00:00.000", + "requiredDate": "1996-08-12 00:00:00.000", + "shippedDate": "1996-07-17 00:00:00.000", + "shipVia": 2, + "freight": 13.97, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10255, + "customerID": "RICSU", + "employeeID": 9, + "orderDate": "1996-07-12 00:00:00.000", + "requiredDate": "1996-08-09 00:00:00.000", + "shippedDate": "1996-07-15 00:00:00.000", + "shipVia": 3, + "freight": 148.33, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 35, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10264, + "customerID": "FOLKO", + "employeeID": 6, + "orderDate": "1996-07-24 00:00:00.000", + "requiredDate": "1996-08-21 00:00:00.000", + "shippedDate": "1996-08-23 00:00:00.000", + "shipVia": 3, + "freight": 3.67, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 35, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10265, + "customerID": "BLONP", + "employeeID": 2, + "orderDate": "1996-07-25 00:00:00.000", + "requiredDate": "1996-08-22 00:00:00.000", + "shippedDate": "1996-08-12 00:00:00.000", + "shipVia": 1, + "freight": 55.28, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10254, + "customerID": "CHOPS", + "employeeID": 5, + "orderDate": "1996-07-11 00:00:00.000", + "requiredDate": "1996-08-08 00:00:00.000", + "shippedDate": "1996-07-23 00:00:00.000", + "shipVia": 2, + "freight": 22.98, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10263, + "customerID": "ERNSH", + "employeeID": 9, + "orderDate": "1996-07-23 00:00:00.000", + "requiredDate": "1996-08-20 00:00:00.000", + "shippedDate": "1996-07-31 00:00:00.000", + "shipVia": 3, + "freight": 146.06, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 28, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 36, + "discount": 0.25 + } + ] + }, + { + "orderID": 10268, + "customerID": "GROSR", + "employeeID": 8, + "orderDate": "1996-07-30 00:00:00.000", + "requiredDate": "1996-08-27 00:00:00.000", + "shippedDate": "1996-08-02 00:00:00.000", + "shipVia": 3, + "freight": 66.29, + "shipName": "GROSELLA-Restaurante", + "shipAddress": { + "street": "5ª Ave. Los Palos Grandes", + "city": "Caracas", + "region": "DF", + "postalCode": 1081, + "country": "Venezuela" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10267, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-07-29 00:00:00.000", + "requiredDate": "1996-08-26 00:00:00.000", + "shippedDate": "1996-08-06 00:00:00.000", + "shipVia": 1, + "freight": 208.58, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 50, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10270, + "customerID": "WARTH", + "employeeID": 1, + "orderDate": "1996-08-01 00:00:00.000", + "requiredDate": "1996-08-29 00:00:00.000", + "shippedDate": "1996-08-02 00:00:00.000", + "shipVia": 1, + "freight": 136.54, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10274, + "customerID": "VINET", + "employeeID": 6, + "orderDate": "1996-08-06 00:00:00.000", + "requiredDate": "1996-09-03 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 1, + "freight": 6.01, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10275, + "customerID": "MAGAA", + "employeeID": 1, + "orderDate": "1996-08-07 00:00:00.000", + "requiredDate": "1996-09-04 00:00:00.000", + "shippedDate": "1996-08-09 00:00:00.000", + "shipVia": 1, + "freight": 26.93, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 6, + "discount": 0.05 + } + ] + }, + { + "orderID": 10276, + "customerID": "TORTU", + "employeeID": 8, + "orderDate": "1996-08-08 00:00:00.000", + "requiredDate": "1996-08-22 00:00:00.000", + "shippedDate": "1996-08-14 00:00:00.000", + "shipVia": 3, + "freight": 13.84, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10277, + "customerID": "MORGK", + "employeeID": 2, + "orderDate": "1996-08-09 00:00:00.000", + "requiredDate": "1996-09-06 00:00:00.000", + "shippedDate": "1996-08-13 00:00:00.000", + "shipVia": 3, + "freight": 125.77, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10273, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1996-08-05 00:00:00.000", + "requiredDate": "1996-09-02 00:00:00.000", + "shippedDate": "1996-08-12 00:00:00.000", + "shipVia": 3, + "freight": 76.07, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 33, + "discount": 0.05 + }, + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10272, + "customerID": "RATTC", + "employeeID": 6, + "orderDate": "1996-08-02 00:00:00.000", + "requiredDate": "1996-08-30 00:00:00.000", + "shippedDate": "1996-08-06 00:00:00.000", + "shipVia": 2, + "freight": 98.03, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10278, + "customerID": "BERGS", + "employeeID": 8, + "orderDate": "1996-08-12 00:00:00.000", + "requiredDate": "1996-09-09 00:00:00.000", + "shippedDate": "1996-08-16 00:00:00.000", + "shipVia": 2, + "freight": 92.69, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 73, + "unitPrice": 12, + "quantity": 25, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 15, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 8, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10269, + "customerID": "WHITC", + "employeeID": 5, + "orderDate": "1996-07-31 00:00:00.000", + "requiredDate": "1996-08-14 00:00:00.000", + "shippedDate": "1996-08-09 00:00:00.000", + "shipVia": 1, + "freight": 4.56, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10280, + "customerID": "BERGS", + "employeeID": 2, + "orderDate": "1996-08-14 00:00:00.000", + "requiredDate": "1996-09-11 00:00:00.000", + "shippedDate": "1996-09-12 00:00:00.000", + "shipVia": 1, + "freight": 8.98, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 12, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10281, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1996-08-14 00:00:00.000", + "requiredDate": "1996-08-28 00:00:00.000", + "shippedDate": "1996-08-21 00:00:00.000", + "shipVia": 1, + "freight": 2.94, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 1, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10282, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1996-08-15 00:00:00.000", + "requiredDate": "1996-09-12 00:00:00.000", + "shippedDate": "1996-08-21 00:00:00.000", + "shipVia": 1, + "freight": 12.69, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10283, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-08-16 00:00:00.000", + "requiredDate": "1996-09-13 00:00:00.000", + "shippedDate": "1996-08-23 00:00:00.000", + "shipVia": 3, + "freight": 84.81, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 15, + "unitPrice": 12.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 18, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 3, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10284, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1996-08-19 00:00:00.000", + "requiredDate": "1996-09-16 00:00:00.000", + "shippedDate": "1996-08-27 00:00:00.000", + "shipVia": 1, + "freight": 76.56, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 27, + "unitPrice": 35.1, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 21, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 67, + "unitPrice": 11.2, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10285, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1996-08-20 00:00:00.000", + "requiredDate": "1996-09-17 00:00:00.000", + "shippedDate": "1996-08-26 00:00:00.000", + "shipVia": 2, + "freight": 76.83, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 36, + "discount": 0.2 + } + ] + }, + { + "orderID": 10286, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1996-08-21 00:00:00.000", + "requiredDate": "1996-09-18 00:00:00.000", + "shippedDate": "1996-08-30 00:00:00.000", + "shipVia": 3, + "freight": 229.24, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 100, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10287, + "customerID": "RICAR", + "employeeID": 8, + "orderDate": "1996-08-22 00:00:00.000", + "requiredDate": "1996-09-19 00:00:00.000", + "shippedDate": "1996-08-28 00:00:00.000", + "shipVia": 3, + "freight": 12.76, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10288, + "customerID": "REGGC", + "employeeID": 4, + "orderDate": "1996-08-23 00:00:00.000", + "requiredDate": "1996-09-20 00:00:00.000", + "shippedDate": "1996-09-03 00:00:00.000", + "shipVia": 1, + "freight": 7.45, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 3, + "discount": 0.1 + } + ] + }, + { + "orderID": 10289, + "customerID": "BSBEV", + "employeeID": 7, + "orderDate": "1996-08-26 00:00:00.000", + "requiredDate": "1996-09-23 00:00:00.000", + "shippedDate": "1996-08-28 00:00:00.000", + "shipVia": 3, + "freight": 22.77, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 3, + "unitPrice": 8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10290, + "customerID": "COMMI", + "employeeID": 8, + "orderDate": "1996-08-27 00:00:00.000", + "requiredDate": "1996-09-24 00:00:00.000", + "shippedDate": "1996-09-03 00:00:00.000", + "shipVia": 1, + "freight": 79.7, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 5, + "unitPrice": 17, + "quantity": 20, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 15, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10291, + "customerID": "QUEDE", + "employeeID": 6, + "orderDate": "1996-08-27 00:00:00.000", + "requiredDate": "1996-09-24 00:00:00.000", + "shippedDate": "1996-09-04 00:00:00.000", + "shipVia": 2, + "freight": 6.4, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 24, + "discount": 0.1 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10296, + "customerID": "LILAS", + "employeeID": 6, + "orderDate": "1996-09-03 00:00:00.000", + "requiredDate": "1996-10-01 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 1, + "freight": 0.12, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10297, + "customerID": "BLONP", + "employeeID": 5, + "orderDate": "1996-09-04 00:00:00.000", + "requiredDate": "1996-10-16 00:00:00.000", + "shippedDate": "1996-09-10 00:00:00.000", + "shipVia": 2, + "freight": 5.74, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 60, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10298, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1996-09-05 00:00:00.000", + "requiredDate": "1996-10-03 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 2, + "freight": 168.22, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10299, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1996-09-06 00:00:00.000", + "requiredDate": "1996-10-04 00:00:00.000", + "shippedDate": "1996-09-13 00:00:00.000", + "shipVia": 2, + "freight": 29.76, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10300, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1996-09-09 00:00:00.000", + "requiredDate": "1996-10-07 00:00:00.000", + "shippedDate": "1996-09-18 00:00:00.000", + "shipVia": 2, + "freight": 17.68, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10301, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1996-09-09 00:00:00.000", + "requiredDate": "1996-10-07 00:00:00.000", + "shippedDate": "1996-09-17 00:00:00.000", + "shipVia": 2, + "freight": 45.08, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10293, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1996-08-29 00:00:00.000", + "requiredDate": "1996-09-26 00:00:00.000", + "shippedDate": "1996-09-11 00:00:00.000", + "shipVia": 3, + "freight": 21.18, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 12, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 5, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10294, + "customerID": "RATTC", + "employeeID": 4, + "orderDate": "1996-08-30 00:00:00.000", + "requiredDate": "1996-09-27 00:00:00.000", + "shippedDate": "1996-09-05 00:00:00.000", + "shipVia": 2, + "freight": 147.26, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 18, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 21, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10302, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1996-09-10 00:00:00.000", + "requiredDate": "1996-10-08 00:00:00.000", + "shippedDate": "1996-10-09 00:00:00.000", + "shipVia": 2, + "freight": 6.27, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 28, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10303, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1996-09-11 00:00:00.000", + "requiredDate": "1996-10-09 00:00:00.000", + "shippedDate": "1996-09-18 00:00:00.000", + "shipVia": 2, + "freight": 107.83, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10304, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1996-09-12 00:00:00.000", + "requiredDate": "1996-10-10 00:00:00.000", + "shippedDate": "1996-09-17 00:00:00.000", + "shipVia": 2, + "freight": 63.79, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 10, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10306, + "customerID": "ROMEY", + "employeeID": 1, + "orderDate": "1996-09-16 00:00:00.000", + "requiredDate": "1996-10-14 00:00:00.000", + "shippedDate": "1996-09-23 00:00:00.000", + "shipVia": 3, + "freight": 7.56, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10305, + "customerID": "OLDWO", + "employeeID": 8, + "orderDate": "1996-09-13 00:00:00.000", + "requiredDate": "1996-10-11 00:00:00.000", + "shippedDate": "1996-10-09 00:00:00.000", + "shipVia": 3, + "freight": 257.62, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 18, + "unitPrice": 50, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10307, + "customerID": "LONEP", + "employeeID": 2, + "orderDate": "1996-09-17 00:00:00.000", + "requiredDate": "1996-10-15 00:00:00.000", + "shippedDate": "1996-09-25 00:00:00.000", + "shipVia": 2, + "freight": 0.56, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 10, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10308, + "customerID": "ANATR", + "employeeID": 7, + "orderDate": "1996-09-18 00:00:00.000", + "requiredDate": "1996-10-16 00:00:00.000", + "shippedDate": "1996-09-24 00:00:00.000", + "shipVia": 3, + "freight": 1.61, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 1, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10309, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1996-09-19 00:00:00.000", + "requiredDate": "1996-10-17 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 1, + "freight": 47.3, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 6, + "unitPrice": 20, + "quantity": 30, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10310, + "customerID": "THEBI", + "employeeID": 8, + "orderDate": "1996-09-20 00:00:00.000", + "requiredDate": "1996-10-18 00:00:00.000", + "shippedDate": "1996-09-27 00:00:00.000", + "shipVia": 2, + "freight": 17.52, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10314, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1996-09-25 00:00:00.000", + "requiredDate": "1996-10-23 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 74.16, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10315, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1996-09-26 00:00:00.000", + "requiredDate": "1996-10-24 00:00:00.000", + "shippedDate": "1996-10-03 00:00:00.000", + "shipVia": 2, + "freight": 41.76, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 14, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10316, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1996-09-27 00:00:00.000", + "requiredDate": "1996-10-25 00:00:00.000", + "shippedDate": "1996-10-08 00:00:00.000", + "shipVia": 3, + "freight": 150.15, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 70, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10311, + "customerID": "DUMON", + "employeeID": 1, + "orderDate": "1996-09-20 00:00:00.000", + "requiredDate": "1996-10-04 00:00:00.000", + "shippedDate": "1996-09-26 00:00:00.000", + "shipVia": 3, + "freight": 24.69, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 6, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10312, + "customerID": "WANDK", + "employeeID": 2, + "orderDate": "1996-09-23 00:00:00.000", + "requiredDate": "1996-10-21 00:00:00.000", + "shippedDate": "1996-10-03 00:00:00.000", + "shipVia": 2, + "freight": 40.26, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10319, + "customerID": "TORTU", + "employeeID": 7, + "orderDate": "1996-10-02 00:00:00.000", + "requiredDate": "1996-10-30 00:00:00.000", + "shippedDate": "1996-10-11 00:00:00.000", + "shipVia": 3, + "freight": 64.5, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 8, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 14, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10318, + "customerID": "ISLAT", + "employeeID": 8, + "orderDate": "1996-10-01 00:00:00.000", + "requiredDate": "1996-10-29 00:00:00.000", + "shippedDate": "1996-10-04 00:00:00.000", + "shipVia": 2, + "freight": 4.73, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 20, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10326, + "customerID": "BOLID", + "employeeID": 4, + "orderDate": "1996-10-10 00:00:00.000", + "requiredDate": "1996-11-07 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 2, + "freight": 77.92, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 24, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 16, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10323, + "customerID": "KOENE", + "employeeID": 4, + "orderDate": "1996-10-07 00:00:00.000", + "requiredDate": "1996-11-04 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 1, + "freight": 4.88, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 15, + "unitPrice": 12.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 4, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10327, + "customerID": "FOLKO", + "employeeID": 2, + "orderDate": "1996-10-11 00:00:00.000", + "requiredDate": "1996-11-08 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 1, + "freight": 63.36, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10328, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1996-10-14 00:00:00.000", + "requiredDate": "1996-11-11 00:00:00.000", + "shippedDate": "1996-10-17 00:00:00.000", + "shipVia": 3, + "freight": 87.03, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 40, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10330, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-10-16 00:00:00.000", + "requiredDate": "1996-11-13 00:00:00.000", + "shippedDate": "1996-10-28 00:00:00.000", + "shipVia": 1, + "freight": 12.75, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 50, + "discount": 0.15 + } + ] + }, + { + "orderID": 10329, + "customerID": "SPLIR", + "employeeID": 4, + "orderDate": "1996-10-15 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-10-23 00:00:00.000", + "shipVia": 2, + "freight": 191.67, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 12, + "discount": 0.05 + } + ] + }, + { + "orderID": 10324, + "customerID": "SAVEA", + "employeeID": 9, + "orderDate": "1996-10-08 00:00:00.000", + "requiredDate": "1996-11-05 00:00:00.000", + "shippedDate": "1996-10-10 00:00:00.000", + "shipVia": 1, + "freight": 214.27, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 70, + "discount": 0.15 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 80, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 40, + "discount": 0.15 + } + ] + }, + { + "orderID": 10333, + "customerID": "WARTH", + "employeeID": 5, + "orderDate": "1996-10-18 00:00:00.000", + "requiredDate": "1996-11-15 00:00:00.000", + "shippedDate": "1996-10-25 00:00:00.000", + "shipVia": 3, + "freight": 0.59, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 40, + "discount": 0.1 + } + ] + }, + { + "orderID": 10334, + "customerID": "VICTE", + "employeeID": 8, + "orderDate": "1996-10-21 00:00:00.000", + "requiredDate": "1996-11-18 00:00:00.000", + "shippedDate": "1996-10-28 00:00:00.000", + "shipVia": 2, + "freight": 8.56, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 10, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10335, + "customerID": "HUNGO", + "employeeID": 7, + "orderDate": "1996-10-22 00:00:00.000", + "requiredDate": "1996-11-19 00:00:00.000", + "shippedDate": "1996-10-24 00:00:00.000", + "shipVia": 2, + "freight": 42.11, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 25.6, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 48, + "discount": 0.2 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 7, + "discount": 0.2 + } + ] + }, + { + "orderID": 10337, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-10-24 00:00:00.000", + "requiredDate": "1996-11-21 00:00:00.000", + "shippedDate": "1996-10-29 00:00:00.000", + "shipVia": 3, + "freight": 108.26, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 24, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 28, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10338, + "customerID": "OLDWO", + "employeeID": 4, + "orderDate": "1996-10-25 00:00:00.000", + "requiredDate": "1996-11-22 00:00:00.000", + "shippedDate": "1996-10-29 00:00:00.000", + "shipVia": 3, + "freight": 84.21, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 20, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10339, + "customerID": "MEREP", + "employeeID": 2, + "orderDate": "1996-10-28 00:00:00.000", + "requiredDate": "1996-11-25 00:00:00.000", + "shippedDate": "1996-11-04 00:00:00.000", + "shipVia": 2, + "freight": 15.66, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10340, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1996-10-29 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 166.31, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10341, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1996-10-29 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-05 00:00:00.000", + "shipVia": 3, + "freight": 26.78, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 8, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0.15 + } + ] + }, + { + "orderID": 10342, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1996-10-30 00:00:00.000", + "requiredDate": "1996-11-13 00:00:00.000", + "shippedDate": "1996-11-04 00:00:00.000", + "shipVia": 2, + "freight": 54.83, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 56, + "discount": 0.2 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10343, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1996-10-31 00:00:00.000", + "requiredDate": "1996-11-28 00:00:00.000", + "shippedDate": "1996-11-06 00:00:00.000", + "shipVia": 1, + "freight": 110.37, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 4, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10344, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1996-11-01 00:00:00.000", + "requiredDate": "1996-11-29 00:00:00.000", + "shippedDate": "1996-11-05 00:00:00.000", + "shipVia": 2, + "freight": 23.29, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 35, + "discount": 0 + }, + { + "productID": 8, + "unitPrice": 32, + "quantity": 70, + "discount": 0.25 + } + ] + }, + { + "orderID": 10345, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1996-11-04 00:00:00.000", + "requiredDate": "1996-12-02 00:00:00.000", + "shippedDate": "1996-11-11 00:00:00.000", + "shipVia": 2, + "freight": 249.06, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 8, + "unitPrice": 32, + "quantity": 70, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 80, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10346, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1996-11-05 00:00:00.000", + "requiredDate": "1996-12-17 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 142.08, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 36, + "discount": 0.1 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10347, + "customerID": "FAMIA", + "employeeID": 4, + "orderDate": "1996-11-06 00:00:00.000", + "requiredDate": "1996-12-04 00:00:00.000", + "shippedDate": "1996-11-08 00:00:00.000", + "shipVia": 3, + "freight": 3.1, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 4, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 6, + "discount": 0.15 + } + ] + }, + { + "orderID": 10348, + "customerID": "WANDK", + "employeeID": 4, + "orderDate": "1996-11-07 00:00:00.000", + "requiredDate": "1996-12-05 00:00:00.000", + "shippedDate": "1996-11-15 00:00:00.000", + "shipVia": 2, + "freight": 0.78, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10325, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1996-10-09 00:00:00.000", + "requiredDate": "1996-10-23 00:00:00.000", + "shippedDate": "1996-10-14 00:00:00.000", + "shipVia": 3, + "freight": 64.86, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 9, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 4, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 40, + "discount": 0 + }, + { + "productID": 6, + "unitPrice": 20, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10350, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1996-11-11 00:00:00.000", + "requiredDate": "1996-12-09 00:00:00.000", + "shippedDate": "1996-12-03 00:00:00.000", + "shipVia": 2, + "freight": 64.19, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 50, + "unitPrice": 13, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10332, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1996-10-17 00:00:00.000", + "requiredDate": "1996-11-28 00:00:00.000", + "shippedDate": "1996-10-21 00:00:00.000", + "shipVia": 2, + "freight": 52.84, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 16, + "discount": 0.2 + } + ] + }, + { + "orderID": 10351, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1996-11-11 00:00:00.000", + "requiredDate": "1996-12-09 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 1, + "freight": 162.33, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 13, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 77, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10355, + "customerID": "AROUT", + "employeeID": 6, + "orderDate": "1996-11-15 00:00:00.000", + "requiredDate": "1996-12-13 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 1, + "freight": 41.95, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10356, + "customerID": "WANDK", + "employeeID": 6, + "orderDate": "1996-11-18 00:00:00.000", + "requiredDate": "1996-12-16 00:00:00.000", + "shippedDate": "1996-11-27 00:00:00.000", + "shipVia": 2, + "freight": 36.71, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10357, + "customerID": "LILAS", + "employeeID": 1, + "orderDate": "1996-11-19 00:00:00.000", + "requiredDate": "1996-12-17 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 34.88, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 16, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 8, + "discount": 0.2 + } + ] + }, + { + "orderID": 10358, + "customerID": "LAMAI", + "employeeID": 5, + "orderDate": "1996-11-20 00:00:00.000", + "requiredDate": "1996-12-18 00:00:00.000", + "shippedDate": "1996-11-27 00:00:00.000", + "shipVia": 1, + "freight": 19.64, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10359, + "customerID": "SEVES", + "employeeID": 5, + "orderDate": "1996-11-21 00:00:00.000", + "requiredDate": "1996-12-19 00:00:00.000", + "shippedDate": "1996-11-26 00:00:00.000", + "shipVia": 3, + "freight": 288.43, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 56, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 80, + "discount": 0.05 + } + ] + }, + { + "orderID": 10360, + "customerID": "BLONP", + "employeeID": 4, + "orderDate": "1996-11-22 00:00:00.000", + "requiredDate": "1996-12-20 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 131.7, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 35, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 35, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10361, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1996-11-22 00:00:00.000", + "requiredDate": "1996-12-20 00:00:00.000", + "shippedDate": "1996-12-03 00:00:00.000", + "shipVia": 2, + "freight": 183.17, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 54, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 55, + "discount": 0.1 + } + ] + }, + { + "orderID": 10353, + "customerID": "PICCO", + "employeeID": 7, + "orderDate": "1996-11-13 00:00:00.000", + "requiredDate": "1996-12-11 00:00:00.000", + "shippedDate": "1996-11-25 00:00:00.000", + "shipVia": 3, + "freight": 360.63, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10363, + "customerID": "DRACD", + "employeeID": 4, + "orderDate": "1996-11-26 00:00:00.000", + "requiredDate": "1996-12-24 00:00:00.000", + "shippedDate": "1996-12-04 00:00:00.000", + "shipVia": 3, + "freight": 30.54, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10352, + "customerID": "FURIB", + "employeeID": 3, + "orderDate": "1996-11-12 00:00:00.000", + "requiredDate": "1996-11-26 00:00:00.000", + "shippedDate": "1996-11-18 00:00:00.000", + "shipVia": 3, + "freight": 1.3, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10364, + "customerID": "EASTC", + "employeeID": 1, + "orderDate": "1996-11-26 00:00:00.000", + "requiredDate": "1997-01-07 00:00:00.000", + "shippedDate": "1996-12-04 00:00:00.000", + "shipVia": 1, + "freight": 71.97, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10354, + "customerID": "PERIC", + "employeeID": 8, + "orderDate": "1996-11-14 00:00:00.000", + "requiredDate": "1996-12-12 00:00:00.000", + "shippedDate": "1996-11-20 00:00:00.000", + "shipVia": 3, + "freight": 53.8, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10362, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1996-11-25 00:00:00.000", + "requiredDate": "1996-12-23 00:00:00.000", + "shippedDate": "1996-11-28 00:00:00.000", + "shipVia": 1, + "freight": 96.04, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10366, + "customerID": "GALED", + "employeeID": 8, + "orderDate": "1996-11-28 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1996-12-30 00:00:00.000", + "shipVia": 2, + "freight": 10.14, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 5, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10367, + "customerID": "VAFFE", + "employeeID": 7, + "orderDate": "1996-11-28 00:00:00.000", + "requiredDate": "1996-12-26 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 3, + "freight": 13.55, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 36, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 18, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10372, + "customerID": "QUEEN", + "employeeID": 5, + "orderDate": "1996-12-04 00:00:00.000", + "requiredDate": "1997-01-01 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 890.78, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 70, + "discount": 0.25 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 42, + "discount": 0.25 + } + ] + }, + { + "orderID": 10373, + "customerID": "HUNGO", + "employeeID": 4, + "orderDate": "1996-12-05 00:00:00.000", + "requiredDate": "1997-01-02 00:00:00.000", + "shippedDate": "1996-12-11 00:00:00.000", + "shipVia": 3, + "freight": 124.12, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 80, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10374, + "customerID": "WOLZA", + "employeeID": 1, + "orderDate": "1996-12-05 00:00:00.000", + "requiredDate": "1997-01-02 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 3, + "freight": 3.94, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 10.6, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10375, + "customerID": "HUNGC", + "employeeID": 3, + "orderDate": "1996-12-06 00:00:00.000", + "requiredDate": "1997-01-03 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 20.12, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10368, + "customerID": "ERNSH", + "employeeID": 2, + "orderDate": "1996-11-29 00:00:00.000", + "requiredDate": "1996-12-27 00:00:00.000", + "shippedDate": "1996-12-02 00:00:00.000", + "shipVia": 2, + "freight": 101.95, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 13, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 35, + "discount": 0.1 + } + ] + }, + { + "orderID": 10369, + "customerID": "SPLIR", + "employeeID": 8, + "orderDate": "1996-12-02 00:00:00.000", + "requiredDate": "1996-12-30 00:00:00.000", + "shippedDate": "1996-12-09 00:00:00.000", + "shipVia": 2, + "freight": 195.68, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 20, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 18, + "discount": 0.25 + } + ] + }, + { + "orderID": 10379, + "customerID": "QUEDE", + "employeeID": 2, + "orderDate": "1996-12-11 00:00:00.000", + "requiredDate": "1997-01-08 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 1, + "freight": 45.03, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 16, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10370, + "customerID": "CHOPS", + "employeeID": 6, + "orderDate": "1996-12-03 00:00:00.000", + "requiredDate": "1996-12-31 00:00:00.000", + "shippedDate": "1996-12-27 00:00:00.000", + "shipVia": 2, + "freight": 1.17, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10380, + "customerID": "HUNGO", + "employeeID": 8, + "orderDate": "1996-12-12 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 3, + "freight": 35.03, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10377, + "customerID": "SEVES", + "employeeID": 1, + "orderDate": "1996-12-09 00:00:00.000", + "requiredDate": "1997-01-06 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 3, + "freight": 22.21, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10384, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1996-12-16 00:00:00.000", + "requiredDate": "1997-01-13 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 3, + "freight": 168.64, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 64.8, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10385, + "customerID": "SPLIR", + "employeeID": 1, + "orderDate": "1996-12-17 00:00:00.000", + "requiredDate": "1997-01-14 00:00:00.000", + "shippedDate": "1996-12-23 00:00:00.000", + "shipVia": 2, + "freight": 30.96, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 8, + "discount": 0.2 + } + ] + }, + { + "orderID": 10386, + "customerID": "FAMIA", + "employeeID": 9, + "orderDate": "1996-12-18 00:00:00.000", + "requiredDate": "1997-01-01 00:00:00.000", + "shippedDate": "1996-12-25 00:00:00.000", + "shipVia": 3, + "freight": 13.99, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10387, + "customerID": "SANTG", + "employeeID": 1, + "orderDate": "1996-12-18 00:00:00.000", + "requiredDate": "1997-01-15 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 2, + "freight": 93.63, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 12, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10388, + "customerID": "SEVES", + "employeeID": 2, + "orderDate": "1996-12-19 00:00:00.000", + "requiredDate": "1997-01-16 00:00:00.000", + "shippedDate": "1996-12-20 00:00:00.000", + "shipVia": 1, + "freight": 34.86, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 45, + "unitPrice": 7.6, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10389, + "customerID": "BOTTM", + "employeeID": 4, + "orderDate": "1996-12-20 00:00:00.000", + "requiredDate": "1997-01-17 00:00:00.000", + "shippedDate": "1996-12-24 00:00:00.000", + "shipVia": 2, + "freight": 47.42, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 16, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10382, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1996-12-13 00:00:00.000", + "requiredDate": "1997-01-10 00:00:00.000", + "shippedDate": "1996-12-16 00:00:00.000", + "shipVia": 1, + "freight": 94.77, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 29, + "unitPrice": 99, + "quantity": 14, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 17, + "quantity": 32, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 50, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10381, + "customerID": "LILAS", + "employeeID": 3, + "orderDate": "1996-12-12 00:00:00.000", + "requiredDate": "1997-01-09 00:00:00.000", + "shippedDate": "1996-12-13 00:00:00.000", + "shipVia": 3, + "freight": 7.99, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 74, + "unitPrice": 8, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10383, + "customerID": "AROUT", + "employeeID": 8, + "orderDate": "1996-12-16 00:00:00.000", + "requiredDate": "1997-01-13 00:00:00.000", + "shippedDate": "1996-12-18 00:00:00.000", + "shipVia": 3, + "freight": 34.24, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10390, + "customerID": "ERNSH", + "employeeID": 6, + "orderDate": "1996-12-23 00:00:00.000", + "requiredDate": "1997-01-20 00:00:00.000", + "shippedDate": "1996-12-26 00:00:00.000", + "shipVia": 1, + "freight": 126.38, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 45, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 24, + "discount": 0.1 + } + ] + }, + { + "orderID": 10396, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1996-12-27 00:00:00.000", + "requiredDate": "1997-01-10 00:00:00.000", + "shippedDate": "1997-01-06 00:00:00.000", + "shipVia": 3, + "freight": 135.35, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 40, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10397, + "customerID": "PRINI", + "employeeID": 5, + "orderDate": "1996-12-27 00:00:00.000", + "requiredDate": "1997-01-24 00:00:00.000", + "shippedDate": "1997-01-02 00:00:00.000", + "shipVia": 1, + "freight": 60.26, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10398, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1996-12-30 00:00:00.000", + "requiredDate": "1997-01-27 00:00:00.000", + "shippedDate": "1997-01-09 00:00:00.000", + "shipVia": 3, + "freight": 89.16, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 120, + "discount": 0.1 + } + ] + }, + { + "orderID": 10399, + "customerID": "VAFFE", + "employeeID": 8, + "orderDate": "1996-12-31 00:00:00.000", + "requiredDate": "1997-01-14 00:00:00.000", + "shippedDate": "1997-01-08 00:00:00.000", + "shipVia": 3, + "freight": 27.36, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10400, + "customerID": "EASTC", + "employeeID": 1, + "orderDate": "1997-01-01 00:00:00.000", + "requiredDate": "1997-01-29 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 3, + "freight": 83.93, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 35, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 21, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10401, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1997-01-01 00:00:00.000", + "requiredDate": "1997-01-29 00:00:00.000", + "shippedDate": "1997-01-10 00:00:00.000", + "shipVia": 1, + "freight": 12.51, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 18, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 70, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10394, + "customerID": "HUNGC", + "employeeID": 1, + "orderDate": "1996-12-25 00:00:00.000", + "requiredDate": "1997-01-22 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 3, + "freight": 30.34, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10402, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-01-02 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-10 00:00:00.000", + "shipVia": 2, + "freight": 67.88, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 65, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10393, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1996-12-25 00:00:00.000", + "requiredDate": "1997-01-22 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 3, + "freight": 126.56, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 70, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 32, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 7, + "discount": 0.25 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 42, + "discount": 0.25 + } + ] + }, + { + "orderID": 10395, + "customerID": "HILAA", + "employeeID": 6, + "orderDate": "1996-12-26 00:00:00.000", + "requiredDate": "1997-01-23 00:00:00.000", + "shippedDate": "1997-01-03 00:00:00.000", + "shipVia": 1, + "freight": 184.41, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 8, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 70, + "discount": 0.1 + } + ] + }, + { + "orderID": 10406, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1997-01-07 00:00:00.000", + "requiredDate": "1997-02-18 00:00:00.000", + "shippedDate": "1997-01-13 00:00:00.000", + "shipVia": 1, + "freight": 108.04, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 42, + "discount": 0.1 + }, + { + "productID": 36, + "unitPrice": 15.2, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10407, + "customerID": "OTTIK", + "employeeID": 2, + "orderDate": "1997-01-07 00:00:00.000", + "requiredDate": "1997-02-04 00:00:00.000", + "shippedDate": "1997-01-30 00:00:00.000", + "shipVia": 2, + "freight": 91.48, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 15, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10408, + "customerID": "FOLIG", + "employeeID": 8, + "orderDate": "1997-01-08 00:00:00.000", + "requiredDate": "1997-02-05 00:00:00.000", + "shippedDate": "1997-01-14 00:00:00.000", + "shipVia": 1, + "freight": 11.26, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 37, + "unitPrice": 20.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10409, + "customerID": "OCEAN", + "employeeID": 3, + "orderDate": "1997-01-09 00:00:00.000", + "requiredDate": "1997-02-06 00:00:00.000", + "shippedDate": "1997-01-14 00:00:00.000", + "shipVia": 1, + "freight": 29.83, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 12, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10410, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-01-10 00:00:00.000", + "requiredDate": "1997-02-07 00:00:00.000", + "shippedDate": "1997-01-15 00:00:00.000", + "shipVia": 3, + "freight": 2.4, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 49, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10411, + "customerID": "BOTTM", + "employeeID": 9, + "orderDate": "1997-01-10 00:00:00.000", + "requiredDate": "1997-02-07 00:00:00.000", + "shippedDate": "1997-01-21 00:00:00.000", + "shipVia": 3, + "freight": 23.65, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 9, + "discount": 0.2 + } + ] + }, + { + "orderID": 10404, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1997-01-03 00:00:00.000", + "requiredDate": "1997-01-31 00:00:00.000", + "shippedDate": "1997-01-08 00:00:00.000", + "shipVia": 1, + "freight": 155.97, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10413, + "customerID": "LAMAI", + "employeeID": 3, + "orderDate": "1997-01-14 00:00:00.000", + "requiredDate": "1997-02-11 00:00:00.000", + "shippedDate": "1997-01-16 00:00:00.000", + "shipVia": 2, + "freight": 95.66, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 24, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 40, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10403, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-01-03 00:00:00.000", + "requiredDate": "1997-01-31 00:00:00.000", + "shippedDate": "1997-01-09 00:00:00.000", + "shipVia": 3, + "freight": 73.79, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 21, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 10.2, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10414, + "customerID": "FAMIA", + "employeeID": 2, + "orderDate": "1997-01-14 00:00:00.000", + "requiredDate": "1997-02-11 00:00:00.000", + "shippedDate": "1997-01-17 00:00:00.000", + "shipVia": 3, + "freight": 21.48, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 18, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10415, + "customerID": "HUNGC", + "employeeID": 3, + "orderDate": "1997-01-15 00:00:00.000", + "requiredDate": "1997-02-12 00:00:00.000", + "shippedDate": "1997-01-24 00:00:00.000", + "shipVia": 1, + "freight": 0.2, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10419, + "customerID": "RICSU", + "employeeID": 4, + "orderDate": "1997-01-20 00:00:00.000", + "requiredDate": "1997-02-17 00:00:00.000", + "shippedDate": "1997-01-30 00:00:00.000", + "shipVia": 2, + "freight": 137.35, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10420, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1997-01-21 00:00:00.000", + "requiredDate": "1997-02-18 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 1, + "freight": 44.12, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 9, + "unitPrice": 77.6, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 2, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 73, + "unitPrice": 12, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10421, + "customerID": "QUEDE", + "employeeID": 8, + "orderDate": "1997-01-21 00:00:00.000", + "requiredDate": "1997-03-04 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 1, + "freight": 99.23, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 4, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10423, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1997-01-23 00:00:00.000", + "requiredDate": "1997-02-06 00:00:00.000", + "shippedDate": "1997-02-24 00:00:00.000", + "shipVia": 3, + "freight": 24.5, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 14, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10424, + "customerID": "MEREP", + "employeeID": 7, + "orderDate": "1997-01-23 00:00:00.000", + "requiredDate": "1997-02-20 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 2, + "freight": 370.61, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 49, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 60, + "discount": 0.2 + } + ] + }, + { + "orderID": 10418, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-01-17 00:00:00.000", + "requiredDate": "1997-02-14 00:00:00.000", + "shippedDate": "1997-01-24 00:00:00.000", + "shipVia": 1, + "freight": 17.55, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 60, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 55, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 16, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10417, + "customerID": "SIMOB", + "employeeID": 4, + "orderDate": "1997-01-16 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-28 00:00:00.000", + "shipVia": 3, + "freight": 70.29, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 36, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10416, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-01-16 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-01-27 00:00:00.000", + "shipVia": 3, + "freight": 22.72, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10425, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1997-01-24 00:00:00.000", + "requiredDate": "1997-02-21 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 2, + "freight": 7.93, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 10, + "discount": 0.25 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10429, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1997-01-29 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 56.63, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 50, + "unitPrice": 13, + "quantity": 40, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 35.1, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10430, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-01-30 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-02-03 00:00:00.000", + "shipVia": 1, + "freight": 458.78, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 50, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 70, + "discount": 0.2 + } + ] + }, + { + "orderID": 10431, + "customerID": "BOTTM", + "employeeID": 4, + "orderDate": "1997-01-30 00:00:00.000", + "requiredDate": "1997-02-13 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 44.17, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10432, + "customerID": "SPLIR", + "employeeID": 3, + "orderDate": "1997-01-31 00:00:00.000", + "requiredDate": "1997-02-14 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 4.34, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10434, + "customerID": "FOLKO", + "employeeID": 3, + "orderDate": "1997-02-03 00:00:00.000", + "requiredDate": "1997-03-03 00:00:00.000", + "shippedDate": "1997-02-13 00:00:00.000", + "shipVia": 2, + "freight": 17.92, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10436, + "customerID": "BLONP", + "employeeID": 3, + "orderDate": "1997-02-05 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-02-11 00:00:00.000", + "shipVia": 2, + "freight": 156.66, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 24, + "discount": 0.1 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 5, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10435, + "customerID": "CONSH", + "employeeID": 8, + "orderDate": "1997-02-04 00:00:00.000", + "requiredDate": "1997-03-18 00:00:00.000", + "shippedDate": "1997-02-07 00:00:00.000", + "shipVia": 2, + "freight": 9.21, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 22, + "unitPrice": 16.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10426, + "customerID": "GALED", + "employeeID": 4, + "orderDate": "1997-01-27 00:00:00.000", + "requiredDate": "1997-02-24 00:00:00.000", + "shippedDate": "1997-02-06 00:00:00.000", + "shipVia": 1, + "freight": 18.69, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10442, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1997-02-11 00:00:00.000", + "requiredDate": "1997-03-11 00:00:00.000", + "shippedDate": "1997-02-18 00:00:00.000", + "shipVia": 2, + "freight": 47.94, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 80, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10443, + "customerID": "REGGC", + "employeeID": 8, + "orderDate": "1997-02-12 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 1, + "freight": 13.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10444, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-02-12 00:00:00.000", + "requiredDate": "1997-03-12 00:00:00.000", + "shippedDate": "1997-02-21 00:00:00.000", + "shipVia": 3, + "freight": 3.5, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 17, + "unitPrice": 31.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 15, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 14.4, + "quantity": 8, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10445, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-02-13 00:00:00.000", + "requiredDate": "1997-03-13 00:00:00.000", + "shippedDate": "1997-02-20 00:00:00.000", + "shipVia": 1, + "freight": 9.3, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10446, + "customerID": "TOMSP", + "employeeID": 6, + "orderDate": "1997-02-14 00:00:00.000", + "requiredDate": "1997-03-14 00:00:00.000", + "shippedDate": "1997-02-19 00:00:00.000", + "shipVia": 1, + "freight": 14.68, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 31, + "unitPrice": 10, + "quantity": 3, + "discount": 0.1 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 12, + "discount": 0.1 + } + ] + }, + { + "orderID": 10440, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1997-02-10 00:00:00.000", + "requiredDate": "1997-03-10 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 86.53, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 45, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 49, + "discount": 0.15 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 90, + "discount": 0.15 + } + ] + }, + { + "orderID": 10439, + "customerID": "MEREP", + "employeeID": 6, + "orderDate": "1997-02-07 00:00:00.000", + "requiredDate": "1997-03-07 00:00:00.000", + "shippedDate": "1997-02-10 00:00:00.000", + "shipVia": 3, + "freight": 4.07, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 12, + "unitPrice": 30.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 16, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10448, + "customerID": "RANCH", + "employeeID": 4, + "orderDate": "1997-02-17 00:00:00.000", + "requiredDate": "1997-03-17 00:00:00.000", + "shippedDate": "1997-02-24 00:00:00.000", + "shipVia": 2, + "freight": 38.82, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10438, + "customerID": "TOMSP", + "employeeID": 3, + "orderDate": "1997-02-06 00:00:00.000", + "requiredDate": "1997-03-06 00:00:00.000", + "shippedDate": "1997-02-14 00:00:00.000", + "shipVia": 2, + "freight": 8.24, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 57, + "unitPrice": 15.6, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10447, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1997-02-14 00:00:00.000", + "requiredDate": "1997-03-14 00:00:00.000", + "shippedDate": "1997-03-07 00:00:00.000", + "shipVia": 2, + "freight": 68.66, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 40, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 35, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10452, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-02-20 00:00:00.000", + "requiredDate": "1997-03-20 00:00:00.000", + "shippedDate": "1997-02-26 00:00:00.000", + "shipVia": 1, + "freight": 140.26, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 100, + "discount": 0.05 + } + ] + }, + { + "orderID": 10453, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-02-21 00:00:00.000", + "requiredDate": "1997-03-21 00:00:00.000", + "shippedDate": "1997-02-26 00:00:00.000", + "shipVia": 2, + "freight": 25.36, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 48, + "unitPrice": 10.2, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 25, + "discount": 0.1 + } + ] + }, + { + "orderID": 10454, + "customerID": "LAMAI", + "employeeID": 4, + "orderDate": "1997-02-21 00:00:00.000", + "requiredDate": "1997-03-21 00:00:00.000", + "shippedDate": "1997-02-25 00:00:00.000", + "shipVia": 3, + "freight": 2.74, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 33, + "unitPrice": 2, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10455, + "customerID": "WARTH", + "employeeID": 8, + "orderDate": "1997-02-24 00:00:00.000", + "requiredDate": "1997-04-07 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 2, + "freight": 180.45, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 22.8, + "quantity": 25, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10456, + "customerID": "KOENE", + "employeeID": 8, + "orderDate": "1997-02-25 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 8.12, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 49, + "unitPrice": 16, + "quantity": 21, + "discount": 0.15 + } + ] + }, + { + "orderID": 10450, + "customerID": "VICTE", + "employeeID": 8, + "orderDate": "1997-02-19 00:00:00.000", + "requiredDate": "1997-03-19 00:00:00.000", + "shippedDate": "1997-03-11 00:00:00.000", + "shipVia": 2, + "freight": 7.23, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10451, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-02-19 00:00:00.000", + "requiredDate": "1997-03-05 00:00:00.000", + "shippedDate": "1997-03-12 00:00:00.000", + "shipVia": 3, + "freight": 189.09, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 120, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 35, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 55, + "discount": 0.1 + } + ] + }, + { + "orderID": 10449, + "customerID": "BLONP", + "employeeID": 3, + "orderDate": "1997-02-18 00:00:00.000", + "requiredDate": "1997-03-18 00:00:00.000", + "shippedDate": "1997-02-27 00:00:00.000", + "shipVia": 2, + "freight": 53.3, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 24.8, + "quantity": 14, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 5.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 39.4, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10461, + "customerID": "LILAS", + "employeeID": 1, + "orderDate": "1997-02-28 00:00:00.000", + "requiredDate": "1997-03-28 00:00:00.000", + "shippedDate": "1997-03-05 00:00:00.000", + "shipVia": 3, + "freight": 148.61, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 28, + "discount": 0.25 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 60, + "discount": 0.25 + } + ] + }, + { + "orderID": 10462, + "customerID": "CONSH", + "employeeID": 2, + "orderDate": "1997-03-03 00:00:00.000", + "requiredDate": "1997-03-31 00:00:00.000", + "shippedDate": "1997-03-18 00:00:00.000", + "shipVia": 1, + "freight": 6.17, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 4.8, + "quantity": 1, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10463, + "customerID": "SUPRD", + "employeeID": 5, + "orderDate": "1997-03-04 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-06 00:00:00.000", + "shipVia": 3, + "freight": 14.78, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 21, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10464, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1997-03-04 00:00:00.000", + "requiredDate": "1997-04-01 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 89, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 4, + "unitPrice": 17.6, + "quantity": 16, + "discount": 0.2 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 3, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10465, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1997-03-05 00:00:00.000", + "requiredDate": "1997-04-02 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 3, + "freight": 145.04, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 25, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 99, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 20, + "discount": 0 + }, + { + "productID": 45, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 50, + "unitPrice": 13, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10466, + "customerID": "COMMI", + "employeeID": 4, + "orderDate": "1997-03-06 00:00:00.000", + "requiredDate": "1997-04-03 00:00:00.000", + "shippedDate": "1997-03-13 00:00:00.000", + "shipVia": 1, + "freight": 11.93, + "shipName": "Comércio Mineiro", + "shipAddress": { + "street": "Av. dos Lusíadas 23", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05432-043", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10460, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1997-02-28 00:00:00.000", + "requiredDate": "1997-03-28 00:00:00.000", + "shippedDate": "1997-03-03 00:00:00.000", + "shipVia": 1, + "freight": 16.27, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 68, + "unitPrice": 10, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 4, + "discount": 0.25 + } + ] + }, + { + "orderID": 10459, + "customerID": "VICTE", + "employeeID": 4, + "orderDate": "1997-02-27 00:00:00.000", + "requiredDate": "1997-03-27 00:00:00.000", + "shippedDate": "1997-02-28 00:00:00.000", + "shipVia": 2, + "freight": 25.09, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 46, + "unitPrice": 9.6, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10468, + "customerID": "KOENE", + "employeeID": 3, + "orderDate": "1997-03-07 00:00:00.000", + "requiredDate": "1997-04-04 00:00:00.000", + "shippedDate": "1997-03-12 00:00:00.000", + "shipVia": 3, + "freight": 44.12, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 20.7, + "quantity": 8, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10469, + "customerID": "WHITC", + "employeeID": 1, + "orderDate": "1997-03-10 00:00:00.000", + "requiredDate": "1997-04-07 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 1, + "freight": 60.18, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 2, + "discount": 0.15 + } + ] + }, + { + "orderID": 10458, + "customerID": "SUPRD", + "employeeID": 7, + "orderDate": "1997-02-26 00:00:00.000", + "requiredDate": "1997-03-26 00:00:00.000", + "shippedDate": "1997-03-04 00:00:00.000", + "shipVia": 3, + "freight": 147.06, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 30, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 36.8, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 50, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10470, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-03-11 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-14 00:00:00.000", + "shipVia": 2, + "freight": 64.56, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 18, + "unitPrice": 50, + "quantity": 30, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10467, + "customerID": "MAGAA", + "employeeID": 8, + "orderDate": "1997-03-06 00:00:00.000", + "requiredDate": "1997-04-03 00:00:00.000", + "shippedDate": "1997-03-11 00:00:00.000", + "shipVia": 2, + "freight": 4.93, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 28, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10474, + "customerID": "PERIC", + "employeeID": 5, + "orderDate": "1997-03-13 00:00:00.000", + "requiredDate": "1997-04-10 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 2, + "freight": 83.49, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 28, + "unitPrice": 36.4, + "quantity": 18, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 21, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 18.6, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10475, + "customerID": "SUPRD", + "employeeID": 9, + "orderDate": "1997-03-14 00:00:00.000", + "requiredDate": "1997-04-11 00:00:00.000", + "shippedDate": "1997-04-04 00:00:00.000", + "shipVia": 1, + "freight": 68.52, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 31, + "unitPrice": 10, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 14.4, + "quantity": 42, + "discount": 0.15 + } + ] + }, + { + "orderID": 10476, + "customerID": "HILAA", + "employeeID": 8, + "orderDate": "1997-03-17 00:00:00.000", + "requiredDate": "1997-04-14 00:00:00.000", + "shippedDate": "1997-03-24 00:00:00.000", + "shipVia": 3, + "freight": 4.41, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 2, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10477, + "customerID": "PRINI", + "employeeID": 5, + "orderDate": "1997-03-17 00:00:00.000", + "requiredDate": "1997-04-14 00:00:00.000", + "shippedDate": "1997-03-25 00:00:00.000", + "shipVia": 2, + "freight": 13.02, + "shipName": "Princesa Isabel Vinhos", + "shipAddress": { + "street": "Estrada da saúde n. 58", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1756, + "country": "Portugal" + }, + "details": [ + { + "productID": 1, + "unitPrice": 14.4, + "quantity": 15, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 8, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 39, + "unitPrice": 14.4, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10479, + "customerID": "RATTC", + "employeeID": 3, + "orderDate": "1997-03-19 00:00:00.000", + "requiredDate": "1997-04-16 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 3, + "freight": 708.95, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 210.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 26.2, + "quantity": 28, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 60, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 26.6, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10471, + "customerID": "BSBEV", + "employeeID": 2, + "orderDate": "1997-03-11 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-18 00:00:00.000", + "shipVia": 3, + "freight": 45.59, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 7, + "unitPrice": 24, + "quantity": 30, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10472, + "customerID": "SEVES", + "employeeID": 8, + "orderDate": "1997-03-12 00:00:00.000", + "requiredDate": "1997-04-09 00:00:00.000", + "shippedDate": "1997-03-19 00:00:00.000", + "shipVia": 1, + "freight": 4.2, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 24, + "unitPrice": 3.6, + "quantity": 80, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10481, + "customerID": "RICAR", + "employeeID": 8, + "orderDate": "1997-03-20 00:00:00.000", + "requiredDate": "1997-04-17 00:00:00.000", + "shippedDate": "1997-03-25 00:00:00.000", + "shipVia": 2, + "freight": 64.33, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 49, + "unitPrice": 16, + "quantity": 24, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 27.2, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10473, + "customerID": "ISLAT", + "employeeID": 1, + "orderDate": "1997-03-13 00:00:00.000", + "requiredDate": "1997-03-27 00:00:00.000", + "shippedDate": "1997-03-21 00:00:00.000", + "shipVia": 3, + "freight": 16.37, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 17.2, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10484, + "customerID": "BSBEV", + "employeeID": 3, + "orderDate": "1997-03-24 00:00:00.000", + "requiredDate": "1997-04-21 00:00:00.000", + "shippedDate": "1997-04-01 00:00:00.000", + "shipVia": 3, + "freight": 6.88, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 21, + "unitPrice": 8, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 14.7, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10485, + "customerID": "LINOD", + "employeeID": 4, + "orderDate": "1997-03-25 00:00:00.000", + "requiredDate": "1997-04-08 00:00:00.000", + "shippedDate": "1997-03-31 00:00:00.000", + "shipVia": 2, + "freight": 64.45, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 2, + "unitPrice": 15.2, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 3, + "unitPrice": 8, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 55, + "unitPrice": 19.2, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 12, + "quantity": 60, + "discount": 0.1 + } + ] + }, + { + "orderID": 10486, + "customerID": "HILAA", + "employeeID": 1, + "orderDate": "1997-03-26 00:00:00.000", + "requiredDate": "1997-04-23 00:00:00.000", + "shippedDate": "1997-04-02 00:00:00.000", + "shipVia": 2, + "freight": 30.53, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 5, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 42.4, + "quantity": 25, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 8, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10487, + "customerID": "QUEEN", + "employeeID": 2, + "orderDate": "1997-03-26 00:00:00.000", + "requiredDate": "1997-04-23 00:00:00.000", + "shippedDate": "1997-03-28 00:00:00.000", + "shipVia": 2, + "freight": 71.07, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 7.3, + "quantity": 5, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 24.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 5.9, + "quantity": 24, + "discount": 0.25 + } + ] + }, + { + "orderID": 10488, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-03-27 00:00:00.000", + "requiredDate": "1997-04-24 00:00:00.000", + "shippedDate": "1997-04-02 00:00:00.000", + "shipVia": 2, + "freight": 4.93, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 30, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 12, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10489, + "customerID": "PICCO", + "employeeID": 6, + "orderDate": "1997-03-28 00:00:00.000", + "requiredDate": "1997-04-25 00:00:00.000", + "shippedDate": "1997-04-09 00:00:00.000", + "shipVia": 2, + "freight": 5.29, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 16, + "unitPrice": 13.9, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10483, + "customerID": "WHITC", + "employeeID": 7, + "orderDate": "1997-03-24 00:00:00.000", + "requiredDate": "1997-04-21 00:00:00.000", + "shippedDate": "1997-04-25 00:00:00.000", + "shipVia": 2, + "freight": 15.28, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 11.2, + "quantity": 35, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10491, + "customerID": "FURIB", + "employeeID": 8, + "orderDate": "1997-03-31 00:00:00.000", + "requiredDate": "1997-04-28 00:00:00.000", + "shippedDate": "1997-04-08 00:00:00.000", + "shipVia": 3, + "freight": 16.96, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 44, + "unitPrice": 15.5, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 7, + "discount": 0.15 + } + ] + }, + { + "orderID": 10480, + "customerID": "FOLIG", + "employeeID": 6, + "orderDate": "1997-03-20 00:00:00.000", + "requiredDate": "1997-04-17 00:00:00.000", + "shippedDate": "1997-03-24 00:00:00.000", + "shipVia": 2, + "freight": 1.35, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 47, + "unitPrice": 7.6, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 44, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10490, + "customerID": "HILAA", + "employeeID": 7, + "orderDate": "1997-03-31 00:00:00.000", + "requiredDate": "1997-04-28 00:00:00.000", + "shippedDate": "1997-04-03 00:00:00.000", + "shipVia": 2, + "freight": 210.19, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 59, + "unitPrice": 44, + "quantity": 60, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 6.2, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10492, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-04-01 00:00:00.000", + "requiredDate": "1997-04-29 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 1, + "freight": 62.89, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 25, + "unitPrice": 11.2, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 11.2, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10493, + "customerID": "LAMAI", + "employeeID": 4, + "orderDate": "1997-04-02 00:00:00.000", + "requiredDate": "1997-04-30 00:00:00.000", + "shippedDate": "1997-04-10 00:00:00.000", + "shipVia": 3, + "freight": 10.64, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 65, + "unitPrice": 16.8, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 66, + "unitPrice": 13.6, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 69, + "unitPrice": 28.8, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10498, + "customerID": "HILAA", + "employeeID": 8, + "orderDate": "1997-04-07 00:00:00.000", + "requiredDate": "1997-05-05 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 2, + "freight": 29.75, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10499, + "customerID": "LILAS", + "employeeID": 4, + "orderDate": "1997-04-08 00:00:00.000", + "requiredDate": "1997-05-06 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 2, + "freight": 102.02, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10500, + "customerID": "LAMAI", + "employeeID": 6, + "orderDate": "1997-04-09 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-04-17 00:00:00.000", + "shipVia": 1, + "freight": 42.68, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 8, + "discount": 0.05 + } + ] + }, + { + "orderID": 10502, + "customerID": "PERIC", + "employeeID": 2, + "orderDate": "1997-04-10 00:00:00.000", + "requiredDate": "1997-05-08 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 1, + "freight": 69.32, + "shipName": "Pericles Comidas clásicas", + "shipAddress": { + "street": "Calle Dr. Jorge Cash 321", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 21, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 6, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10503, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1997-04-11 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-04-16 00:00:00.000", + "shipVia": 2, + "freight": 16.74, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 70, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10497, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1997-04-04 00:00:00.000", + "requiredDate": "1997-05-02 00:00:00.000", + "shippedDate": "1997-04-07 00:00:00.000", + "shipVia": 1, + "freight": 36.21, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 56, + "unitPrice": 30.4, + "quantity": 14, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 27.8, + "quantity": 25, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10495, + "customerID": "LAUGB", + "employeeID": 3, + "orderDate": "1997-04-03 00:00:00.000", + "requiredDate": "1997-05-01 00:00:00.000", + "shippedDate": "1997-04-11 00:00:00.000", + "shipVia": 3, + "freight": 4.65, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 23, + "unitPrice": 7.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 10.4, + "quantity": 5, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 7.7, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10504, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1997-04-11 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-04-18 00:00:00.000", + "shipVia": 3, + "freight": 59.13, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 12, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 12, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10508, + "customerID": "OTTIK", + "employeeID": 1, + "orderDate": "1997-04-16 00:00:00.000", + "requiredDate": "1997-05-14 00:00:00.000", + "shippedDate": "1997-05-13 00:00:00.000", + "shipVia": 2, + "freight": 4.99, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10510, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-04-18 00:00:00.000", + "requiredDate": "1997-05-16 00:00:00.000", + "shippedDate": "1997-04-28 00:00:00.000", + "shipVia": 3, + "freight": 367.63, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 36, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 36, + "discount": 0.1 + } + ] + }, + { + "orderID": 10511, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-04-18 00:00:00.000", + "requiredDate": "1997-05-16 00:00:00.000", + "shippedDate": "1997-04-21 00:00:00.000", + "shipVia": 3, + "freight": 350.64, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 50, + "discount": 0.15 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 10, + "discount": 0.15 + } + ] + }, + { + "orderID": 10512, + "customerID": "FAMIA", + "employeeID": 7, + "orderDate": "1997-04-21 00:00:00.000", + "requiredDate": "1997-05-19 00:00:00.000", + "shippedDate": "1997-04-24 00:00:00.000", + "shipVia": 2, + "freight": 3.53, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 9, + "discount": 0.15 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 6, + "discount": 0.15 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10513, + "customerID": "WANDK", + "employeeID": 7, + "orderDate": "1997-04-22 00:00:00.000", + "requiredDate": "1997-06-03 00:00:00.000", + "shippedDate": "1997-04-28 00:00:00.000", + "shipVia": 1, + "freight": 105.65, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 50, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 15, + "discount": 0.2 + } + ] + }, + { + "orderID": 10506, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1997-04-15 00:00:00.000", + "requiredDate": "1997-05-13 00:00:00.000", + "shippedDate": "1997-05-02 00:00:00.000", + "shipVia": 2, + "freight": 21.19, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 14, + "discount": 0.1 + } + ] + }, + { + "orderID": 10515, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-04-23 00:00:00.000", + "requiredDate": "1997-05-07 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 1, + "freight": 204.47, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 16, + "discount": 0.15 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 120, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 16, + "discount": 0.15 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 84, + "discount": 0.15 + } + ] + }, + { + "orderID": 10516, + "customerID": "HUNGO", + "employeeID": 2, + "orderDate": "1997-04-24 00:00:00.000", + "requiredDate": "1997-05-22 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 3, + "freight": 62.78, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 80, + "discount": 0.1 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10507, + "customerID": "ANTON", + "employeeID": 7, + "orderDate": "1997-04-15 00:00:00.000", + "requiredDate": "1997-05-13 00:00:00.000", + "shippedDate": "1997-04-22 00:00:00.000", + "shipVia": 1, + "freight": 47.45, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 15, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10514, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1997-04-22 00:00:00.000", + "requiredDate": "1997-05-20 00:00:00.000", + "shippedDate": "1997-05-16 00:00:00.000", + "shipVia": 2, + "freight": 789.95, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 39, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 50, + "discount": 0 + }, + { + "productID": 20, + "unitPrice": 81, + "quantity": 39, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 35, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10517, + "customerID": "NORTS", + "employeeID": 3, + "orderDate": "1997-04-24 00:00:00.000", + "requiredDate": "1997-05-22 00:00:00.000", + "shippedDate": "1997-04-29 00:00:00.000", + "shipVia": 3, + "freight": 32.07, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 6, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 4, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10518, + "customerID": "TORTU", + "employeeID": 4, + "orderDate": "1997-04-25 00:00:00.000", + "requiredDate": "1997-05-09 00:00:00.000", + "shippedDate": "1997-05-05 00:00:00.000", + "shipVia": 2, + "freight": 218.15, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 5, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10519, + "customerID": "CHOPS", + "employeeID": 6, + "orderDate": "1997-04-28 00:00:00.000", + "requiredDate": "1997-05-26 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 3, + "freight": 91.76, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 40, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10520, + "customerID": "SANTG", + "employeeID": 7, + "orderDate": "1997-04-29 00:00:00.000", + "requiredDate": "1997-05-27 00:00:00.000", + "shippedDate": "1997-05-01 00:00:00.000", + "shipVia": 1, + "freight": 13.37, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 8, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10521, + "customerID": "CACTU", + "employeeID": 8, + "orderDate": "1997-04-29 00:00:00.000", + "requiredDate": "1997-05-27 00:00:00.000", + "shippedDate": "1997-05-02 00:00:00.000", + "shipVia": 2, + "freight": 17.22, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 10, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10522, + "customerID": "LEHMS", + "employeeID": 4, + "orderDate": "1997-04-30 00:00:00.000", + "requiredDate": "1997-05-28 00:00:00.000", + "shippedDate": "1997-05-06 00:00:00.000", + "shipVia": 1, + "freight": 45.33, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10523, + "customerID": "SEVES", + "employeeID": 7, + "orderDate": "1997-05-01 00:00:00.000", + "requiredDate": "1997-05-29 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 2, + "freight": 77.63, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 20, + "unitPrice": 81, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 37, + "unitPrice": 26, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10524, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-05-01 00:00:00.000", + "requiredDate": "1997-05-29 00:00:00.000", + "shippedDate": "1997-05-07 00:00:00.000", + "shipVia": 2, + "freight": 244.79, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 2, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 10, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 60, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10525, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1997-05-02 00:00:00.000", + "requiredDate": "1997-05-30 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 2, + "freight": 11.06, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10526, + "customerID": "WARTH", + "employeeID": 4, + "orderDate": "1997-05-05 00:00:00.000", + "requiredDate": "1997-06-02 00:00:00.000", + "shippedDate": "1997-05-15 00:00:00.000", + "shipVia": 2, + "freight": 58.59, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 8, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10527, + "customerID": "QUICK", + "employeeID": 7, + "orderDate": "1997-05-05 00:00:00.000", + "requiredDate": "1997-06-02 00:00:00.000", + "shippedDate": "1997-05-07 00:00:00.000", + "shipVia": 1, + "freight": 41.9, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10528, + "customerID": "GREAL", + "employeeID": 6, + "orderDate": "1997-05-06 00:00:00.000", + "requiredDate": "1997-05-20 00:00:00.000", + "shippedDate": "1997-05-09 00:00:00.000", + "shipVia": 2, + "freight": 3.35, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 3, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 8, + "discount": 0.2 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10529, + "customerID": "MAISD", + "employeeID": 5, + "orderDate": "1997-05-07 00:00:00.000", + "requiredDate": "1997-06-04 00:00:00.000", + "shippedDate": "1997-05-09 00:00:00.000", + "shipVia": 2, + "freight": 66.69, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 14, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10530, + "customerID": "PICCO", + "employeeID": 3, + "orderDate": "1997-05-08 00:00:00.000", + "requiredDate": "1997-06-05 00:00:00.000", + "shippedDate": "1997-05-12 00:00:00.000", + "shipVia": 2, + "freight": 339.22, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 40, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 25, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10531, + "customerID": "OCEAN", + "employeeID": 7, + "orderDate": "1997-05-08 00:00:00.000", + "requiredDate": "1997-06-05 00:00:00.000", + "shippedDate": "1997-05-19 00:00:00.000", + "shipVia": 1, + "freight": 8.12, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10532, + "customerID": "EASTC", + "employeeID": 7, + "orderDate": "1997-05-09 00:00:00.000", + "requiredDate": "1997-06-06 00:00:00.000", + "shippedDate": "1997-05-12 00:00:00.000", + "shipVia": 3, + "freight": 74.46, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10536, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-05-14 00:00:00.000", + "requiredDate": "1997-06-11 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 2, + "freight": 58.88, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10537, + "customerID": "RICSU", + "employeeID": 1, + "orderDate": "1997-05-14 00:00:00.000", + "requiredDate": "1997-05-28 00:00:00.000", + "shippedDate": "1997-05-19 00:00:00.000", + "shipVia": 1, + "freight": 78.85, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 6, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 21, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10538, + "customerID": "BSBEV", + "employeeID": 9, + "orderDate": "1997-05-15 00:00:00.000", + "requiredDate": "1997-06-12 00:00:00.000", + "shippedDate": "1997-05-16 00:00:00.000", + "shipVia": 3, + "freight": 4.87, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 7, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10539, + "customerID": "BSBEV", + "employeeID": 6, + "orderDate": "1997-05-16 00:00:00.000", + "requiredDate": "1997-06-13 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 3, + "freight": 12.36, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 8, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 15, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 6, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10540, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1997-05-19 00:00:00.000", + "requiredDate": "1997-06-16 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 3, + "freight": 1007.64, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 40, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10541, + "customerID": "HANAR", + "employeeID": 2, + "orderDate": "1997-05-19 00:00:00.000", + "requiredDate": "1997-06-16 00:00:00.000", + "shippedDate": "1997-05-29 00:00:00.000", + "shipVia": 1, + "freight": 68.65, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0.1 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 36, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 9, + "discount": 0.1 + } + ] + }, + { + "orderID": 10534, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1997-05-12 00:00:00.000", + "requiredDate": "1997-06-09 00:00:00.000", + "shippedDate": "1997-05-14 00:00:00.000", + "shipVia": 2, + "freight": 27.94, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 10, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10533, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1997-05-12 00:00:00.000", + "requiredDate": "1997-06-09 00:00:00.000", + "shippedDate": "1997-05-22 00:00:00.000", + "shipVia": 1, + "freight": 188.04, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 24, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 24, + "discount": 0.05 + } + ] + }, + { + "orderID": 10535, + "customerID": "ANTON", + "employeeID": 4, + "orderDate": "1997-05-13 00:00:00.000", + "requiredDate": "1997-06-10 00:00:00.000", + "shippedDate": "1997-05-21 00:00:00.000", + "shipVia": 1, + "freight": 15.64, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 5, + "discount": 0.1 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10543, + "customerID": "LILAS", + "employeeID": 8, + "orderDate": "1997-05-21 00:00:00.000", + "requiredDate": "1997-06-18 00:00:00.000", + "shippedDate": "1997-05-23 00:00:00.000", + "shipVia": 2, + "freight": 48.17, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 70, + "discount": 0.15 + } + ] + }, + { + "orderID": 10542, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-05-20 00:00:00.000", + "requiredDate": "1997-06-17 00:00:00.000", + "shippedDate": "1997-05-26 00:00:00.000", + "shipVia": 3, + "freight": 10.95, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 24, + "discount": 0.05 + } + ] + }, + { + "orderID": 10546, + "customerID": "VICTE", + "employeeID": 1, + "orderDate": "1997-05-23 00:00:00.000", + "requiredDate": "1997-06-20 00:00:00.000", + "shippedDate": "1997-05-27 00:00:00.000", + "shipVia": 3, + "freight": 194.72, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 10, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10547, + "customerID": "SEVES", + "employeeID": 3, + "orderDate": "1997-05-23 00:00:00.000", + "requiredDate": "1997-06-20 00:00:00.000", + "shippedDate": "1997-06-02 00:00:00.000", + "shipVia": 2, + "freight": 178.43, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10548, + "customerID": "TOMSP", + "employeeID": 3, + "orderDate": "1997-05-26 00:00:00.000", + "requiredDate": "1997-06-23 00:00:00.000", + "shippedDate": "1997-06-02 00:00:00.000", + "shipVia": 2, + "freight": 1.43, + "shipName": "Toms Spezialitäten", + "shipAddress": { + "street": "Luisenstr. 48", + "city": "Münster", + "region": "NULL", + "postalCode": 44087, + "country": "Germany" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0.25 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10550, + "customerID": "GODOS", + "employeeID": 7, + "orderDate": "1997-05-28 00:00:00.000", + "requiredDate": "1997-06-25 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 3, + "freight": 4.32, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 10, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10544, + "customerID": "LONEP", + "employeeID": 4, + "orderDate": "1997-05-21 00:00:00.000", + "requiredDate": "1997-06-18 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 1, + "freight": 24.91, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 7, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10553, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-05-30 00:00:00.000", + "requiredDate": "1997-06-27 00:00:00.000", + "shippedDate": "1997-06-03 00:00:00.000", + "shipVia": 2, + "freight": 149.49, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 14, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 24, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10554, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-05-30 00:00:00.000", + "requiredDate": "1997-06-27 00:00:00.000", + "shippedDate": "1997-06-05 00:00:00.000", + "shipVia": 3, + "freight": 120.97, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10555, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-06-02 00:00:00.000", + "requiredDate": "1997-06-30 00:00:00.000", + "shippedDate": "1997-06-04 00:00:00.000", + "shipVia": 3, + "freight": 252.49, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 18, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10557, + "customerID": "LEHMS", + "employeeID": 9, + "orderDate": "1997-06-03 00:00:00.000", + "requiredDate": "1997-06-17 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 2, + "freight": 96.72, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10558, + "customerID": "AROUT", + "employeeID": 1, + "orderDate": "1997-06-04 00:00:00.000", + "requiredDate": "1997-07-02 00:00:00.000", + "shippedDate": "1997-06-10 00:00:00.000", + "shipVia": 2, + "freight": 72.97, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 25, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 18, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 3, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10551, + "customerID": "FURIB", + "employeeID": 4, + "orderDate": "1997-05-28 00:00:00.000", + "requiredDate": "1997-07-09 00:00:00.000", + "shippedDate": "1997-06-06 00:00:00.000", + "shipVia": 3, + "freight": 72.95, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10549, + "customerID": "QUICK", + "employeeID": 5, + "orderDate": "1997-05-27 00:00:00.000", + "requiredDate": "1997-06-10 00:00:00.000", + "shippedDate": "1997-05-30 00:00:00.000", + "shipVia": 1, + "freight": 171.24, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 55, + "discount": 0.15 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 100, + "discount": 0.15 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 48, + "discount": 0.15 + } + ] + }, + { + "orderID": 10552, + "customerID": "HILAA", + "employeeID": 2, + "orderDate": "1997-05-29 00:00:00.000", + "requiredDate": "1997-06-26 00:00:00.000", + "shippedDate": "1997-06-05 00:00:00.000", + "shipVia": 1, + "freight": 83.22, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 18, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10562, + "customerID": "REGGC", + "employeeID": 1, + "orderDate": "1997-06-09 00:00:00.000", + "requiredDate": "1997-07-07 00:00:00.000", + "shippedDate": "1997-06-12 00:00:00.000", + "shipVia": 1, + "freight": 22.95, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10563, + "customerID": "RICAR", + "employeeID": 2, + "orderDate": "1997-06-10 00:00:00.000", + "requiredDate": "1997-07-22 00:00:00.000", + "shippedDate": "1997-06-24 00:00:00.000", + "shipVia": 2, + "freight": 60.43, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 25, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10564, + "customerID": "RATTC", + "employeeID": 4, + "orderDate": "1997-06-10 00:00:00.000", + "requiredDate": "1997-07-08 00:00:00.000", + "shippedDate": "1997-06-16 00:00:00.000", + "shipVia": 3, + "freight": 13.75, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0.05 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10565, + "customerID": "MEREP", + "employeeID": 8, + "orderDate": "1997-06-11 00:00:00.000", + "requiredDate": "1997-07-09 00:00:00.000", + "shippedDate": "1997-06-18 00:00:00.000", + "shipVia": 2, + "freight": 7.15, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 18, + "discount": 0.1 + } + ] + }, + { + "orderID": 10566, + "customerID": "BLONP", + "employeeID": 9, + "orderDate": "1997-06-12 00:00:00.000", + "requiredDate": "1997-07-10 00:00:00.000", + "shippedDate": "1997-06-18 00:00:00.000", + "shipVia": 1, + "freight": 88.4, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 18, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10567, + "customerID": "HUNGO", + "employeeID": 1, + "orderDate": "1997-06-12 00:00:00.000", + "requiredDate": "1997-07-10 00:00:00.000", + "shippedDate": "1997-06-17 00:00:00.000", + "shipVia": 1, + "freight": 33.97, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 60, + "discount": 0.2 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 3, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.2 + } + ] + }, + { + "orderID": 10559, + "customerID": "BLONP", + "employeeID": 6, + "orderDate": "1997-06-05 00:00:00.000", + "requiredDate": "1997-07-03 00:00:00.000", + "shippedDate": "1997-06-13 00:00:00.000", + "shipVia": 1, + "freight": 8.05, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 18, + "discount": 0.05 + } + ] + }, + { + "orderID": 10569, + "customerID": "RATTC", + "employeeID": 5, + "orderDate": "1997-06-16 00:00:00.000", + "requiredDate": "1997-07-14 00:00:00.000", + "shippedDate": "1997-07-11 00:00:00.000", + "shipVia": 1, + "freight": 58.98, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10560, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-06-06 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-09 00:00:00.000", + "shipVia": 1, + "freight": 36.65, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10570, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-06-17 00:00:00.000", + "requiredDate": "1997-07-15 00:00:00.000", + "shippedDate": "1997-06-19 00:00:00.000", + "shipVia": 3, + "freight": 188.99, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10571, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-06-17 00:00:00.000", + "requiredDate": "1997-07-29 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 3, + "freight": 26.06, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 11, + "discount": 0.15 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 28, + "discount": 0.15 + } + ] + }, + { + "orderID": 10572, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1997-06-18 00:00:00.000", + "requiredDate": "1997-07-16 00:00:00.000", + "shippedDate": "1997-06-25 00:00:00.000", + "shipVia": 2, + "freight": 116.43, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 50, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10561, + "customerID": "FOLKO", + "employeeID": 2, + "orderDate": "1997-06-06 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-09 00:00:00.000", + "shipVia": 2, + "freight": 242.21, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10573, + "customerID": "ANTON", + "employeeID": 7, + "orderDate": "1997-06-19 00:00:00.000", + "requiredDate": "1997-07-17 00:00:00.000", + "shippedDate": "1997-06-20 00:00:00.000", + "shipVia": 3, + "freight": 84.84, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 18, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 40, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10574, + "customerID": "TRAIH", + "employeeID": 4, + "orderDate": "1997-06-19 00:00:00.000", + "requiredDate": "1997-07-17 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 2, + "freight": 37.6, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 2, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10578, + "customerID": "BSBEV", + "employeeID": 4, + "orderDate": "1997-06-24 00:00:00.000", + "requiredDate": "1997-07-22 00:00:00.000", + "shippedDate": "1997-07-25 00:00:00.000", + "shipVia": 3, + "freight": 29.6, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10579, + "customerID": "LETSS", + "employeeID": 1, + "orderDate": "1997-06-25 00:00:00.000", + "requiredDate": "1997-07-23 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 2, + "freight": 13.73, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10580, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-06-26 00:00:00.000", + "requiredDate": "1997-07-24 00:00:00.000", + "shippedDate": "1997-07-01 00:00:00.000", + "shipVia": 3, + "freight": 75.89, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 9, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10582, + "customerID": "BLAUS", + "employeeID": 3, + "orderDate": "1997-06-27 00:00:00.000", + "requiredDate": "1997-07-25 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 2, + "freight": 27.71, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 4, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10583, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-06-30 00:00:00.000", + "requiredDate": "1997-07-28 00:00:00.000", + "shippedDate": "1997-07-04 00:00:00.000", + "shipVia": 2, + "freight": 7.28, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 10, + "discount": 0.15 + } + ] + }, + { + "orderID": 10577, + "customerID": "TRAIH", + "employeeID": 9, + "orderDate": "1997-06-23 00:00:00.000", + "requiredDate": "1997-08-04 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 2, + "freight": 25.41, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 77, + "unitPrice": 13, + "quantity": 18, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10576, + "customerID": "TORTU", + "employeeID": 3, + "orderDate": "1997-06-23 00:00:00.000", + "requiredDate": "1997-07-07 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 3, + "freight": 18.56, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10587, + "customerID": "QUEDE", + "employeeID": 1, + "orderDate": "1997-07-02 00:00:00.000", + "requiredDate": "1997-07-30 00:00:00.000", + "shippedDate": "1997-07-09 00:00:00.000", + "shipVia": 1, + "freight": 62.52, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 6, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10588, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-07-03 00:00:00.000", + "requiredDate": "1997-07-31 00:00:00.000", + "shippedDate": "1997-07-10 00:00:00.000", + "shipVia": 3, + "freight": 194.67, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 100, + "discount": 0.2 + } + ] + }, + { + "orderID": 10590, + "customerID": "MEREP", + "employeeID": 4, + "orderDate": "1997-07-07 00:00:00.000", + "requiredDate": "1997-08-04 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 3, + "freight": 44.77, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10575, + "customerID": "MORGK", + "employeeID": 5, + "orderDate": "1997-06-20 00:00:00.000", + "requiredDate": "1997-07-04 00:00:00.000", + "shippedDate": "1997-06-30 00:00:00.000", + "shipVia": 1, + "freight": 127.34, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 12, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 30, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10591, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1997-07-07 00:00:00.000", + "requiredDate": "1997-07-21 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 1, + "freight": 55.92, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10595, + "customerID": "ERNSH", + "employeeID": 2, + "orderDate": "1997-07-10 00:00:00.000", + "requiredDate": "1997-08-07 00:00:00.000", + "shippedDate": "1997-07-14 00:00:00.000", + "shipVia": 1, + "freight": 96.78, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 65, + "discount": 0.25 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 120, + "discount": 0.25 + } + ] + }, + { + "orderID": 10596, + "customerID": "WHITC", + "employeeID": 8, + "orderDate": "1997-07-11 00:00:00.000", + "requiredDate": "1997-08-08 00:00:00.000", + "shippedDate": "1997-08-12 00:00:00.000", + "shipVia": 1, + "freight": 16.34, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10597, + "customerID": "PICCO", + "employeeID": 7, + "orderDate": "1997-07-11 00:00:00.000", + "requiredDate": "1997-08-08 00:00:00.000", + "shippedDate": "1997-07-18 00:00:00.000", + "shipVia": 3, + "freight": 35.12, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0.2 + } + ] + }, + { + "orderID": 10598, + "customerID": "RATTC", + "employeeID": 1, + "orderDate": "1997-07-14 00:00:00.000", + "requiredDate": "1997-08-11 00:00:00.000", + "shippedDate": "1997-07-18 00:00:00.000", + "shipVia": 3, + "freight": 44.42, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 50, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10600, + "customerID": "HUNGC", + "employeeID": 4, + "orderDate": "1997-07-16 00:00:00.000", + "requiredDate": "1997-08-13 00:00:00.000", + "shippedDate": "1997-07-21 00:00:00.000", + "shipVia": 1, + "freight": 45.13, + "shipName": "Hungry Coyote Import Store", + "shipAddress": { + "street": "City Center Plaza 516 Main St.", + "city": "Elgin", + "region": "OR", + "postalCode": 97827, + "country": "USA" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 4, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10601, + "customerID": "HILAA", + "employeeID": 7, + "orderDate": "1997-07-16 00:00:00.000", + "requiredDate": "1997-08-27 00:00:00.000", + "shippedDate": "1997-07-22 00:00:00.000", + "shipVia": 1, + "freight": 58.3, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 60, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10603, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-07-18 00:00:00.000", + "requiredDate": "1997-08-15 00:00:00.000", + "shippedDate": "1997-08-08 00:00:00.000", + "shipVia": 2, + "freight": 48.77, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 48, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10604, + "customerID": "FURIB", + "employeeID": 1, + "orderDate": "1997-07-18 00:00:00.000", + "requiredDate": "1997-08-15 00:00:00.000", + "shippedDate": "1997-07-29 00:00:00.000", + "shipVia": 1, + "freight": 7.46, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 6, + "discount": 0.1 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10605, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1997-07-21 00:00:00.000", + "requiredDate": "1997-08-18 00:00:00.000", + "shippedDate": "1997-07-29 00:00:00.000", + "shipVia": 2, + "freight": 379.13, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10606, + "customerID": "TRADH", + "employeeID": 4, + "orderDate": "1997-07-22 00:00:00.000", + "requiredDate": "1997-08-19 00:00:00.000", + "shippedDate": "1997-07-31 00:00:00.000", + "shipVia": 3, + "freight": 79.4, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10594, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1997-07-09 00:00:00.000", + "requiredDate": "1997-08-06 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 2, + "freight": 5.24, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10593, + "customerID": "LEHMS", + "employeeID": 7, + "orderDate": "1997-07-09 00:00:00.000", + "requiredDate": "1997-08-06 00:00:00.000", + "shippedDate": "1997-08-13 00:00:00.000", + "shipVia": 2, + "freight": 174.2, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 4, + "discount": 0.2 + } + ] + }, + { + "orderID": 10592, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-07-08 00:00:00.000", + "requiredDate": "1997-08-05 00:00:00.000", + "shippedDate": "1997-07-16 00:00:00.000", + "shipVia": 1, + "freight": 32.1, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 5, + "discount": 0.05 + } + ] + }, + { + "orderID": 10607, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-07-22 00:00:00.000", + "requiredDate": "1997-08-19 00:00:00.000", + "shippedDate": "1997-07-25 00:00:00.000", + "shipVia": 1, + "freight": 200.24, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 45, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 100, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 42, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10609, + "customerID": "DUMON", + "employeeID": 7, + "orderDate": "1997-07-24 00:00:00.000", + "requiredDate": "1997-08-21 00:00:00.000", + "shippedDate": "1997-07-30 00:00:00.000", + "shipVia": 2, + "freight": 1.85, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10614, + "customerID": "BLAUS", + "employeeID": 8, + "orderDate": "1997-07-29 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 3, + "freight": 1.93, + "shipName": "Blauer See Delikatessen", + "shipAddress": { + "street": "Forsterstr. 57", + "city": "Mannheim", + "region": "NULL", + "postalCode": 68306, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 14, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 8, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10616, + "customerID": "GREAL", + "employeeID": 1, + "orderDate": "1997-07-31 00:00:00.000", + "requiredDate": "1997-08-28 00:00:00.000", + "shippedDate": "1997-08-05 00:00:00.000", + "shipVia": 2, + "freight": 116.53, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 14, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10618, + "customerID": "MEREP", + "employeeID": 1, + "orderDate": "1997-08-01 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-08 00:00:00.000", + "shipVia": 1, + "freight": 154.68, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 70, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10619, + "customerID": "MEREP", + "employeeID": 3, + "orderDate": "1997-08-04 00:00:00.000", + "requiredDate": "1997-09-01 00:00:00.000", + "shippedDate": "1997-08-07 00:00:00.000", + "shipVia": 3, + "freight": 91.05, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 42, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10612, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1997-07-28 00:00:00.000", + "requiredDate": "1997-08-25 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 544.08, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 70, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 55, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 18, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 40, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 80, + "discount": 0 + } + ] + }, + { + "orderID": 10613, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1997-07-29 00:00:00.000", + "requiredDate": "1997-08-26 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 8.11, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10611, + "customerID": "WOLZA", + "employeeID": 6, + "orderDate": "1997-07-25 00:00:00.000", + "requiredDate": "1997-08-22 00:00:00.000", + "shippedDate": "1997-08-01 00:00:00.000", + "shipVia": 2, + "freight": 80.65, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10621, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-08-05 00:00:00.000", + "requiredDate": "1997-09-02 00:00:00.000", + "shippedDate": "1997-08-11 00:00:00.000", + "shipVia": 2, + "freight": 23.73, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 5, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10620, + "customerID": "LAUGB", + "employeeID": 2, + "orderDate": "1997-08-05 00:00:00.000", + "requiredDate": "1997-09-02 00:00:00.000", + "shippedDate": "1997-08-14 00:00:00.000", + "shipVia": 3, + "freight": 0.94, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 52, + "unitPrice": 7, + "quantity": 5, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10625, + "customerID": "ANATR", + "employeeID": 3, + "orderDate": "1997-08-08 00:00:00.000", + "requiredDate": "1997-09-05 00:00:00.000", + "shippedDate": "1997-08-14 00:00:00.000", + "shipVia": 1, + "freight": 43.9, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 3, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10623, + "customerID": "FRANK", + "employeeID": 8, + "orderDate": "1997-08-07 00:00:00.000", + "requiredDate": "1997-09-04 00:00:00.000", + "shippedDate": "1997-08-12 00:00:00.000", + "shipVia": 2, + "freight": 97.18, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 21, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 3, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0.1 + } + ] + }, + { + "orderID": 10622, + "customerID": "RICAR", + "employeeID": 4, + "orderDate": "1997-08-06 00:00:00.000", + "requiredDate": "1997-09-03 00:00:00.000", + "shippedDate": "1997-08-11 00:00:00.000", + "shipVia": 3, + "freight": 50.97, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0.2 + } + ] + }, + { + "orderID": 10624, + "customerID": "THECR", + "employeeID": 4, + "orderDate": "1997-08-07 00:00:00.000", + "requiredDate": "1997-09-04 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 2, + "freight": 94.8, + "shipName": "The Cracker Box", + "shipAddress": { + "street": "55 Grizzly Peak Rd.", + "city": "Butte", + "region": "MT", + "postalCode": 59801, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 6, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10626, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-08-11 00:00:00.000", + "requiredDate": "1997-09-08 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 2, + "freight": 138.69, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 12, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 20, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10627, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-08-11 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 107.46, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 35, + "discount": 0.15 + } + ] + }, + { + "orderID": 10630, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-08-13 00:00:00.000", + "requiredDate": "1997-09-10 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 2, + "freight": 32.35, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10629, + "customerID": "GODOS", + "employeeID": 4, + "orderDate": "1997-08-12 00:00:00.000", + "requiredDate": "1997-09-09 00:00:00.000", + "shippedDate": "1997-08-20 00:00:00.000", + "shipVia": 3, + "freight": 85.46, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 9, + "discount": 0 + } + ] + }, + { + "orderID": 10632, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1997-08-14 00:00:00.000", + "requiredDate": "1997-09-11 00:00:00.000", + "shippedDate": "1997-08-19 00:00:00.000", + "shipVia": 1, + "freight": 41.38, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10633, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1997-08-15 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-18 00:00:00.000", + "shipVia": 3, + "freight": 477.9, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 36, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 13, + "discount": 0.15 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 35, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 80, + "discount": 0.15 + } + ] + }, + { + "orderID": 10634, + "customerID": "FOLIG", + "employeeID": 4, + "orderDate": "1997-08-15 00:00:00.000", + "requiredDate": "1997-09-12 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 487.38, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 35, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 2, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10638, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1997-08-20 00:00:00.000", + "requiredDate": "1997-09-17 00:00:00.000", + "shippedDate": "1997-09-01 00:00:00.000", + "shipVia": 1, + "freight": 158.44, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10640, + "customerID": "WANDK", + "employeeID": 4, + "orderDate": "1997-08-21 00:00:00.000", + "requiredDate": "1997-09-18 00:00:00.000", + "shippedDate": "1997-08-28 00:00:00.000", + "shipVia": 1, + "freight": 23.55, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10641, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1997-08-22 00:00:00.000", + "requiredDate": "1997-09-19 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 2, + "freight": 179.61, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 50, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10642, + "customerID": "SIMOB", + "employeeID": 7, + "orderDate": "1997-08-22 00:00:00.000", + "requiredDate": "1997-09-19 00:00:00.000", + "shippedDate": "1997-09-05 00:00:00.000", + "shipVia": 3, + "freight": 41.89, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10643, + "customerID": "ALFKI", + "employeeID": 6, + "orderDate": "1997-08-25 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-09-02 00:00:00.000", + "shipVia": 1, + "freight": 29.46, + "shipName": "Alfreds Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 2, + "discount": 0.25 + } + ] + }, + { + "orderID": 10636, + "customerID": "WARTH", + "employeeID": 4, + "orderDate": "1997-08-19 00:00:00.000", + "requiredDate": "1997-09-16 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 1, + "freight": 1.15, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 25, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10644, + "customerID": "WELLI", + "employeeID": 3, + "orderDate": "1997-08-25 00:00:00.000", + "requiredDate": "1997-09-22 00:00:00.000", + "shippedDate": "1997-09-01 00:00:00.000", + "shipVia": 2, + "freight": 0.14, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 21, + "discount": 0.1 + } + ] + }, + { + "orderID": 10635, + "customerID": "MAGAA", + "employeeID": 8, + "orderDate": "1997-08-18 00:00:00.000", + "requiredDate": "1997-09-15 00:00:00.000", + "shippedDate": "1997-08-21 00:00:00.000", + "shipVia": 3, + "freight": 47.46, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 4, + "unitPrice": 22, + "quantity": 10, + "discount": 0.1 + } + ] + }, + { + "orderID": 10637, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1997-08-19 00:00:00.000", + "requiredDate": "1997-09-16 00:00:00.000", + "shippedDate": "1997-08-26 00:00:00.000", + "shipVia": 1, + "freight": 201.29, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 25, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0.05 + } + ] + }, + { + "orderID": 10645, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1997-08-26 00:00:00.000", + "requiredDate": "1997-09-23 00:00:00.000", + "shippedDate": "1997-09-02 00:00:00.000", + "shipVia": 1, + "freight": 12.41, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10649, + "customerID": "MAISD", + "employeeID": 5, + "orderDate": "1997-08-28 00:00:00.000", + "requiredDate": "1997-09-25 00:00:00.000", + "shippedDate": "1997-08-29 00:00:00.000", + "shipVia": 3, + "freight": 6.2, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10650, + "customerID": "FAMIA", + "employeeID": 5, + "orderDate": "1997-08-29 00:00:00.000", + "requiredDate": "1997-09-26 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 3, + "freight": 176.81, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 30, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10651, + "customerID": "WANDK", + "employeeID": 8, + "orderDate": "1997-09-01 00:00:00.000", + "requiredDate": "1997-09-29 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 2, + "freight": 20.6, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10652, + "customerID": "GOURL", + "employeeID": 4, + "orderDate": "1997-09-01 00:00:00.000", + "requiredDate": "1997-09-29 00:00:00.000", + "shippedDate": "1997-09-08 00:00:00.000", + "shipVia": 2, + "freight": 7.14, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10653, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1997-09-02 00:00:00.000", + "requiredDate": "1997-09-30 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 93.25, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10654, + "customerID": "BERGS", + "employeeID": 5, + "orderDate": "1997-09-02 00:00:00.000", + "requiredDate": "1997-09-30 00:00:00.000", + "shippedDate": "1997-09-11 00:00:00.000", + "shipVia": 1, + "freight": 55.26, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10647, + "customerID": "QUEDE", + "employeeID": 4, + "orderDate": "1997-08-27 00:00:00.000", + "requiredDate": "1997-09-10 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 2, + "freight": 45.54, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10656, + "customerID": "GREAL", + "employeeID": 6, + "orderDate": "1997-09-04 00:00:00.000", + "requiredDate": "1997-10-02 00:00:00.000", + "shippedDate": "1997-09-10 00:00:00.000", + "shipVia": 1, + "freight": 57.15, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 3, + "discount": 0.1 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 28, + "discount": 0.1 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 6, + "discount": 0.1 + } + ] + }, + { + "orderID": 10657, + "customerID": "SAVEA", + "employeeID": 2, + "orderDate": "1997-09-04 00:00:00.000", + "requiredDate": "1997-10-02 00:00:00.000", + "shippedDate": "1997-09-15 00:00:00.000", + "shipVia": 2, + "freight": 352.69, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 24, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 45, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 45, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 15, + "unitPrice": 15.5, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10658, + "customerID": "QUICK", + "employeeID": 4, + "orderDate": "1997-09-05 00:00:00.000", + "requiredDate": "1997-10-03 00:00:00.000", + "shippedDate": "1997-09-08 00:00:00.000", + "shipVia": 1, + "freight": 364.15, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 70, + "discount": 0.05 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 55, + "discount": 0.05 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 70, + "discount": 0.05 + } + ] + }, + { + "orderID": 10646, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-08-27 00:00:00.000", + "requiredDate": "1997-10-08 00:00:00.000", + "shippedDate": "1997-09-03 00:00:00.000", + "shipVia": 3, + "freight": 142.33, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 15, + "discount": 0.25 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10648, + "customerID": "RICAR", + "employeeID": 5, + "orderDate": "1997-08-28 00:00:00.000", + "requiredDate": "1997-10-09 00:00:00.000", + "shippedDate": "1997-09-09 00:00:00.000", + "shipVia": 2, + "freight": 14.25, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10659, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1997-09-05 00:00:00.000", + "requiredDate": "1997-10-03 00:00:00.000", + "shippedDate": "1997-09-10 00:00:00.000", + "shipVia": 2, + "freight": 105.81, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10664, + "customerID": "FURIB", + "employeeID": 1, + "orderDate": "1997-09-10 00:00:00.000", + "requiredDate": "1997-10-08 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 3, + "freight": 1.27, + "shipName": "Furia Bacalhau e Frutos do Mar", + "shipAddress": { + "street": "Jardim das rosas n. 32", + "city": "Lisboa", + "region": "NULL", + "postalCode": 1675, + "country": "Portugal" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 24, + "discount": 0.15 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 12, + "discount": 0.15 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10661, + "customerID": "HUNGO", + "employeeID": 7, + "orderDate": "1997-09-09 00:00:00.000", + "requiredDate": "1997-10-07 00:00:00.000", + "shippedDate": "1997-09-15 00:00:00.000", + "shipVia": 3, + "freight": 17.55, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 49, + "discount": 0.2 + } + ] + }, + { + "orderID": 10665, + "customerID": "LONEP", + "employeeID": 1, + "orderDate": "1997-09-11 00:00:00.000", + "requiredDate": "1997-10-09 00:00:00.000", + "shippedDate": "1997-09-17 00:00:00.000", + "shipVia": 2, + "freight": 26.31, + "shipName": "Lonesome Pine Restaurant", + "shipAddress": { + "street": "89 Chiaroscuro Rd.", + "city": "Portland", + "region": "OR", + "postalCode": 97219, + "country": "USA" + }, + "details": [ + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 1, + "discount": 0 + } + ] + }, + { + "orderID": 10663, + "customerID": "BONAP", + "employeeID": 2, + "orderDate": "1997-09-10 00:00:00.000", + "requiredDate": "1997-09-24 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 2, + "freight": 113.15, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10666, + "customerID": "RICSU", + "employeeID": 7, + "orderDate": "1997-09-12 00:00:00.000", + "requiredDate": "1997-10-10 00:00:00.000", + "shippedDate": "1997-09-22 00:00:00.000", + "shipVia": 2, + "freight": 232.42, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 36, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10667, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1997-09-12 00:00:00.000", + "requiredDate": "1997-10-10 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 78.09, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 69, + "unitPrice": 36, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 14, + "discount": 0.2 + } + ] + }, + { + "orderID": 10668, + "customerID": "WANDK", + "employeeID": 1, + "orderDate": "1997-09-15 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-09-23 00:00:00.000", + "shipVia": 2, + "freight": 47.22, + "shipName": "Die Wandernde Kuh", + "shipAddress": { + "street": "Adenauerallee 900", + "city": "Stuttgart", + "region": "NULL", + "postalCode": 70563, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 8, + "discount": 0.1 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 4, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10670, + "customerID": "FRANK", + "employeeID": 4, + "orderDate": "1997-09-16 00:00:00.000", + "requiredDate": "1997-10-14 00:00:00.000", + "shippedDate": "1997-09-18 00:00:00.000", + "shipVia": 1, + "freight": 203.48, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 32, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 60, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 50, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 25, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10672, + "customerID": "BERGS", + "employeeID": 9, + "orderDate": "1997-09-17 00:00:00.000", + "requiredDate": "1997-10-01 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 2, + "freight": 95.75, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 15, + "discount": 0.1 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10671, + "customerID": "FRANR", + "employeeID": 1, + "orderDate": "1997-09-17 00:00:00.000", + "requiredDate": "1997-10-15 00:00:00.000", + "shippedDate": "1997-09-24 00:00:00.000", + "shipVia": 1, + "freight": 30.34, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 10, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10673, + "customerID": "WILMK", + "employeeID": 2, + "orderDate": "1997-09-18 00:00:00.000", + "requiredDate": "1997-10-16 00:00:00.000", + "shippedDate": "1997-09-19 00:00:00.000", + "shipVia": 1, + "freight": 22.76, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 6, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 6, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10677, + "customerID": "ANTON", + "employeeID": 1, + "orderDate": "1997-09-22 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 3, + "freight": 4.03, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 8, + "discount": 0.15 + } + ] + }, + { + "orderID": 10678, + "customerID": "SAVEA", + "employeeID": 7, + "orderDate": "1997-09-23 00:00:00.000", + "requiredDate": "1997-10-21 00:00:00.000", + "shippedDate": "1997-10-16 00:00:00.000", + "shipVia": 3, + "freight": 388.98, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 100, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 120, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10680, + "customerID": "OLDWO", + "employeeID": 1, + "orderDate": "1997-09-24 00:00:00.000", + "requiredDate": "1997-10-22 00:00:00.000", + "shippedDate": "1997-09-26 00:00:00.000", + "shipVia": 1, + "freight": 26.61, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10681, + "customerID": "GREAL", + "employeeID": 3, + "orderDate": "1997-09-25 00:00:00.000", + "requiredDate": "1997-10-23 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 3, + "freight": 76.13, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10682, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1997-09-25 00:00:00.000", + "requiredDate": "1997-10-23 00:00:00.000", + "shippedDate": "1997-10-01 00:00:00.000", + "shipVia": 2, + "freight": 36.13, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 4, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10675, + "customerID": "FRANK", + "employeeID": 5, + "orderDate": "1997-09-19 00:00:00.000", + "requiredDate": "1997-10-17 00:00:00.000", + "shippedDate": "1997-09-23 00:00:00.000", + "shipVia": 2, + "freight": 31.85, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 10, + "discount": 0 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10684, + "customerID": "OTTIK", + "employeeID": 3, + "orderDate": "1997-09-26 00:00:00.000", + "requiredDate": "1997-10-24 00:00:00.000", + "shippedDate": "1997-09-30 00:00:00.000", + "shipVia": 1, + "freight": 145.63, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 20, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10685, + "customerID": "GOURL", + "employeeID": 4, + "orderDate": "1997-09-29 00:00:00.000", + "requiredDate": "1997-10-13 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 2, + "freight": 33.75, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 4, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10676, + "customerID": "TORTU", + "employeeID": 2, + "orderDate": "1997-09-22 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-09-29 00:00:00.000", + "shipVia": 2, + "freight": 2.01, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 2, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10686, + "customerID": "PICCO", + "employeeID": 2, + "orderDate": "1997-09-30 00:00:00.000", + "requiredDate": "1997-10-28 00:00:00.000", + "shippedDate": "1997-10-08 00:00:00.000", + "shipVia": 1, + "freight": 96.5, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 30, + "discount": 0.2 + } + ] + }, + { + "orderID": 10687, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-09-30 00:00:00.000", + "requiredDate": "1997-10-28 00:00:00.000", + "shippedDate": "1997-10-30 00:00:00.000", + "shipVia": 2, + "freight": 296.43, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 6, + "discount": 0.25 + } + ] + }, + { + "orderID": 10691, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1997-10-03 00:00:00.000", + "requiredDate": "1997-11-14 00:00:00.000", + "shippedDate": "1997-10-22 00:00:00.000", + "shipVia": 2, + "freight": 810.05, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 24, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 40, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 48, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10693, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1997-10-06 00:00:00.000", + "requiredDate": "1997-10-20 00:00:00.000", + "shippedDate": "1997-10-10 00:00:00.000", + "shipVia": 3, + "freight": 139.34, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 6, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10694, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1997-10-06 00:00:00.000", + "requiredDate": "1997-11-03 00:00:00.000", + "shippedDate": "1997-10-09 00:00:00.000", + "shipVia": 3, + "freight": 398.36, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 90, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10695, + "customerID": "WILMK", + "employeeID": 7, + "orderDate": "1997-10-07 00:00:00.000", + "requiredDate": "1997-11-18 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 1, + "freight": 16.72, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 10, + "discount": 0 + }, + { + "productID": 12, + "unitPrice": 38, + "quantity": 4, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10696, + "customerID": "WHITC", + "employeeID": 8, + "orderDate": "1997-10-08 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 3, + "freight": 102.55, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10697, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1997-10-08 00:00:00.000", + "requiredDate": "1997-11-05 00:00:00.000", + "shippedDate": "1997-10-14 00:00:00.000", + "shipVia": 1, + "freight": 45.52, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 9, + "discount": 0.25 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10698, + "customerID": "ERNSH", + "employeeID": 4, + "orderDate": "1997-10-09 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-17 00:00:00.000", + "shipVia": 1, + "freight": 272.47, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 65, + "discount": 0.05 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 8, + "discount": 0.05 + } + ] + }, + { + "orderID": 10690, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1997-10-02 00:00:00.000", + "requiredDate": "1997-10-30 00:00:00.000", + "shippedDate": "1997-10-03 00:00:00.000", + "shipVia": 1, + "freight": 15.8, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10702, + "customerID": "ALFKI", + "employeeID": 4, + "orderDate": "1997-10-13 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-10-21 00:00:00.000", + "shipVia": 1, + "freight": 23.94, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 15, + "discount": 0 + }, + { + "productID": 3, + "unitPrice": 10, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10700, + "customerID": "SAVEA", + "employeeID": 3, + "orderDate": "1997-10-10 00:00:00.000", + "requiredDate": "1997-11-07 00:00:00.000", + "shippedDate": "1997-10-16 00:00:00.000", + "shipVia": 1, + "freight": 65.1, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 60, + "discount": 0.2 + } + ] + }, + { + "orderID": 10688, + "customerID": "VAFFE", + "employeeID": 4, + "orderDate": "1997-10-01 00:00:00.000", + "requiredDate": "1997-10-15 00:00:00.000", + "shippedDate": "1997-10-07 00:00:00.000", + "shipVia": 2, + "freight": 299.09, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10701, + "customerID": "HUNGO", + "employeeID": 6, + "orderDate": "1997-10-13 00:00:00.000", + "requiredDate": "1997-10-27 00:00:00.000", + "shippedDate": "1997-10-15 00:00:00.000", + "shipVia": 3, + "freight": 220.31, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 42, + "discount": 0.15 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 35, + "discount": 0.15 + } + ] + }, + { + "orderID": 10703, + "customerID": "FOLKO", + "employeeID": 6, + "orderDate": "1997-10-14 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-10-20 00:00:00.000", + "shipVia": 2, + "freight": 152.3, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 5, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 35, + "discount": 0 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10704, + "customerID": "QUEEN", + "employeeID": 6, + "orderDate": "1997-10-14 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-11-07 00:00:00.000", + "shipVia": 1, + "freight": 4.78, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 6, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10708, + "customerID": "THEBI", + "employeeID": 6, + "orderDate": "1997-10-17 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 2.96, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 4, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10709, + "customerID": "GOURL", + "employeeID": 1, + "orderDate": "1997-10-17 00:00:00.000", + "requiredDate": "1997-11-14 00:00:00.000", + "shippedDate": "1997-11-20 00:00:00.000", + "shipVia": 3, + "freight": 210.8, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 40, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 28, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10710, + "customerID": "FRANS", + "employeeID": 1, + "orderDate": "1997-10-20 00:00:00.000", + "requiredDate": "1997-11-17 00:00:00.000", + "shippedDate": "1997-10-23 00:00:00.000", + "shipVia": 1, + "freight": 4.98, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 5, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10711, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-10-21 00:00:00.000", + "requiredDate": "1997-12-02 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 2, + "freight": 52.41, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 42, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 120, + "discount": 0 + } + ] + }, + { + "orderID": 10712, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1997-10-21 00:00:00.000", + "requiredDate": "1997-11-18 00:00:00.000", + "shippedDate": "1997-10-31 00:00:00.000", + "shipVia": 1, + "freight": 89.93, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 3, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10713, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1997-10-22 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-24 00:00:00.000", + "shipVia": 1, + "freight": 167.05, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 18, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 30, + "discount": 0 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 110, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10707, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1997-10-16 00:00:00.000", + "requiredDate": "1997-10-30 00:00:00.000", + "shippedDate": "1997-10-23 00:00:00.000", + "shipVia": 3, + "freight": 21.74, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 21, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 40, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 28, + "discount": 0.15 + } + ] + }, + { + "orderID": 10715, + "customerID": "BONAP", + "employeeID": 3, + "orderDate": "1997-10-23 00:00:00.000", + "requiredDate": "1997-11-06 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 1, + "freight": 63.2, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 21, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10706, + "customerID": "OLDWO", + "employeeID": 8, + "orderDate": "1997-10-16 00:00:00.000", + "requiredDate": "1997-11-13 00:00:00.000", + "shippedDate": "1997-10-21 00:00:00.000", + "shipVia": 3, + "freight": 135.63, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 24, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10705, + "customerID": "HILAA", + "employeeID": 9, + "orderDate": "1997-10-15 00:00:00.000", + "requiredDate": "1997-11-12 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 2, + "freight": 3.52, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 4, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10714, + "customerID": "SAVEA", + "employeeID": 5, + "orderDate": "1997-10-22 00:00:00.000", + "requiredDate": "1997-11-19 00:00:00.000", + "shippedDate": "1997-10-27 00:00:00.000", + "shipVia": 3, + "freight": 24.49, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 18, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 50, + "discount": 0.25 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 27, + "discount": 0.25 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10719, + "customerID": "LETSS", + "employeeID": 8, + "orderDate": "1997-10-27 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 51.44, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 3, + "discount": 0.25 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10720, + "customerID": "QUEDE", + "employeeID": 8, + "orderDate": "1997-10-28 00:00:00.000", + "requiredDate": "1997-11-11 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 9.53, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10722, + "customerID": "SAVEA", + "employeeID": 8, + "orderDate": "1997-10-29 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-04 00:00:00.000", + "shipVia": 1, + "freight": 74.58, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 3, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 45, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 42, + "discount": 0 + } + ] + }, + { + "orderID": 10724, + "customerID": "MEREP", + "employeeID": 8, + "orderDate": "1997-10-30 00:00:00.000", + "requiredDate": "1997-12-11 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 2, + "freight": 57.75, + "shipName": "Mère Paillarde", + "shipAddress": { + "street": "43 rue St. Laurent", + "city": "Montréal", + "region": "Québec", + "postalCode": "H1J 1C3", + "country": "Canada" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10716, + "customerID": "RANCH", + "employeeID": 4, + "orderDate": "1997-10-24 00:00:00.000", + "requiredDate": "1997-11-21 00:00:00.000", + "shippedDate": "1997-10-27 00:00:00.000", + "shipVia": 2, + "freight": 22.57, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 5, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 7, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10726, + "customerID": "EASTC", + "employeeID": 4, + "orderDate": "1997-11-03 00:00:00.000", + "requiredDate": "1997-11-17 00:00:00.000", + "shippedDate": "1997-12-05 00:00:00.000", + "shipVia": 1, + "freight": 16.56, + "shipName": "Eastern Connection", + "shipAddress": { + "street": "35 King George", + "city": "London", + "region": "NULL", + "postalCode": "WX3 6FW", + "country": "UK" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 25, + "discount": 0 + }, + { + "productID": 11, + "unitPrice": 21, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10717, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1997-10-24 00:00:00.000", + "requiredDate": "1997-11-21 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 2, + "freight": 59.25, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 32, + "discount": 0.05 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 15, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 25, + "discount": 0.05 + } + ] + }, + { + "orderID": 10727, + "customerID": "REGGC", + "employeeID": 2, + "orderDate": "1997-11-03 00:00:00.000", + "requiredDate": "1997-12-01 00:00:00.000", + "shippedDate": "1997-12-05 00:00:00.000", + "shipVia": 1, + "freight": 89.9, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10728, + "customerID": "QUEEN", + "employeeID": 4, + "orderDate": "1997-11-04 00:00:00.000", + "requiredDate": "1997-12-02 00:00:00.000", + "shippedDate": "1997-11-11 00:00:00.000", + "shipVia": 2, + "freight": 58.33, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 6, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 12, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10729, + "customerID": "LINOD", + "employeeID": 8, + "orderDate": "1997-11-04 00:00:00.000", + "requiredDate": "1997-12-16 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 3, + "freight": 141.06, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 50, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10730, + "customerID": "BONAP", + "employeeID": 5, + "orderDate": "1997-11-05 00:00:00.000", + "requiredDate": "1997-12-03 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 1, + "freight": 20.12, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 3, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0.05 + } + ] + }, + { + "orderID": 10718, + "customerID": "KOENE", + "employeeID": 1, + "orderDate": "1997-10-27 00:00:00.000", + "requiredDate": "1997-11-24 00:00:00.000", + "shippedDate": "1997-10-29 00:00:00.000", + "shipVia": 3, + "freight": 170.88, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 12, + "unitPrice": 38, + "quantity": 36, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 40, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10725, + "customerID": "FAMIA", + "employeeID": 4, + "orderDate": "1997-10-31 00:00:00.000", + "requiredDate": "1997-11-28 00:00:00.000", + "shippedDate": "1997-11-05 00:00:00.000", + "shipVia": 3, + "freight": 10.83, + "shipName": "Familia Arquibaldo", + "shipAddress": { + "street": "Rua Orós 92", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05442-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 4, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10731, + "customerID": "CHOPS", + "employeeID": 7, + "orderDate": "1997-11-06 00:00:00.000", + "requiredDate": "1997-12-04 00:00:00.000", + "shippedDate": "1997-11-14 00:00:00.000", + "shipVia": 1, + "freight": 96.65, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 30, + "discount": 0.05 + } + ] + }, + { + "orderID": 10735, + "customerID": "LETSS", + "employeeID": 6, + "orderDate": "1997-11-10 00:00:00.000", + "requiredDate": "1997-12-08 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 45.97, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 2, + "discount": 0.1 + } + ] + }, + { + "orderID": 10736, + "customerID": "HUNGO", + "employeeID": 9, + "orderDate": "1997-11-11 00:00:00.000", + "requiredDate": "1997-12-09 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 2, + "freight": 44.1, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 40, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10737, + "customerID": "VINET", + "employeeID": 2, + "orderDate": "1997-11-11 00:00:00.000", + "requiredDate": "1997-12-09 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 2, + "freight": 7.79, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 4, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10739, + "customerID": "VINET", + "employeeID": 3, + "orderDate": "1997-11-12 00:00:00.000", + "requiredDate": "1997-12-10 00:00:00.000", + "shippedDate": "1997-11-17 00:00:00.000", + "shipVia": 3, + "freight": 11.08, + "shipName": "Vins et alcools Chevalier", + "shipAddress": { + "street": "59 rue de l'Abbaye", + "city": "Reims", + "region": "NULL", + "postalCode": 51100, + "country": "France" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 6, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10740, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1997-11-13 00:00:00.000", + "requiredDate": "1997-12-11 00:00:00.000", + "shippedDate": "1997-11-25 00:00:00.000", + "shipVia": 2, + "freight": 81.88, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 5, + "discount": 0.2 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 14, + "discount": 0.2 + } + ] + }, + { + "orderID": 10733, + "customerID": "BERGS", + "employeeID": 1, + "orderDate": "1997-11-07 00:00:00.000", + "requiredDate": "1997-12-05 00:00:00.000", + "shippedDate": "1997-11-10 00:00:00.000", + "shipVia": 3, + "freight": 110.11, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 16, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10742, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1997-11-14 00:00:00.000", + "requiredDate": "1997-12-12 00:00:00.000", + "shippedDate": "1997-11-18 00:00:00.000", + "shipVia": 3, + "freight": 243.73, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 50, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10734, + "customerID": "GOURL", + "employeeID": 2, + "orderDate": "1997-11-07 00:00:00.000", + "requiredDate": "1997-12-05 00:00:00.000", + "shippedDate": "1997-11-12 00:00:00.000", + "shipVia": 3, + "freight": 1.63, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 30, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10747, + "customerID": "PICCO", + "employeeID": 6, + "orderDate": "1997-11-19 00:00:00.000", + "requiredDate": "1997-12-17 00:00:00.000", + "shippedDate": "1997-11-26 00:00:00.000", + "shipVia": 1, + "freight": 117.33, + "shipName": "Piccolo und mehr", + "shipAddress": { + "street": "Geislweg 14", + "city": "Salzburg", + "region": "NULL", + "postalCode": 5020, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 8, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 35, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 9, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10748, + "customerID": "SAVEA", + "employeeID": 3, + "orderDate": "1997-11-20 00:00:00.000", + "requiredDate": "1997-12-18 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 1, + "freight": 232.55, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 44, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 40, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 28, + "discount": 0 + } + ] + }, + { + "orderID": 10749, + "customerID": "ISLAT", + "employeeID": 4, + "orderDate": "1997-11-20 00:00:00.000", + "requiredDate": "1997-12-18 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 61.53, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 15, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 6, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10750, + "customerID": "WARTH", + "employeeID": 9, + "orderDate": "1997-11-21 00:00:00.000", + "requiredDate": "1997-12-19 00:00:00.000", + "shippedDate": "1997-11-24 00:00:00.000", + "shipVia": 1, + "freight": 79.3, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 5, + "discount": 0.15 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10751, + "customerID": "RICSU", + "employeeID": 3, + "orderDate": "1997-11-24 00:00:00.000", + "requiredDate": "1997-12-22 00:00:00.000", + "shippedDate": "1997-12-03 00:00:00.000", + "shipVia": 3, + "freight": 130.79, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 12, + "discount": 0.1 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 30, + "discount": 0 + }, + { + "productID": 50, + "unitPrice": 16.25, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 73, + "unitPrice": 15, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10752, + "customerID": "NORTS", + "employeeID": 2, + "orderDate": "1997-11-24 00:00:00.000", + "requiredDate": "1997-12-22 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 3, + "freight": 1.39, + "shipName": "North/South", + "shipAddress": { + "street": "South House 300 Queensbridge", + "city": "London", + "region": "NULL", + "postalCode": "SW7 1RZ", + "country": "UK" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 8, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10753, + "customerID": "FRANS", + "employeeID": 3, + "orderDate": "1997-11-25 00:00:00.000", + "requiredDate": "1997-12-23 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 1, + "freight": 7.7, + "shipName": "Franchi S.p.A.", + "shipAddress": { + "street": "Via Monte Bianco 34", + "city": "Torino", + "region": "NULL", + "postalCode": 10100, + "country": "Italy" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 4, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10745, + "customerID": "QUICK", + "employeeID": 9, + "orderDate": "1997-11-18 00:00:00.000", + "requiredDate": "1997-12-16 00:00:00.000", + "shippedDate": "1997-11-27 00:00:00.000", + "shipVia": 1, + "freight": 3.52, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 24, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 16, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 45, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 7, + "discount": 0 + } + ] + }, + { + "orderID": 10755, + "customerID": "BONAP", + "employeeID": 4, + "orderDate": "1997-11-26 00:00:00.000", + "requiredDate": "1997-12-24 00:00:00.000", + "shippedDate": "1997-11-28 00:00:00.000", + "shipVia": 2, + "freight": 16.71, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 14, + "discount": 0.25 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 25, + "discount": 0.25 + } + ] + }, + { + "orderID": 10756, + "customerID": "SPLIR", + "employeeID": 8, + "orderDate": "1997-11-27 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-02 00:00:00.000", + "shipVia": 2, + "freight": 73.21, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 20, + "discount": 0.2 + } + ] + }, + { + "orderID": 10746, + "customerID": "CHOPS", + "employeeID": 1, + "orderDate": "1997-11-19 00:00:00.000", + "requiredDate": "1997-12-17 00:00:00.000", + "shippedDate": "1997-11-21 00:00:00.000", + "shipVia": 3, + "freight": 31.43, + "shipName": "Chop-suey Chinese", + "shipAddress": { + "street": "Hauptstr. 31", + "city": "Bern", + "region": "NULL", + "postalCode": 3012, + "country": "Switzerland" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 28, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 9, + "discount": 0 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10757, + "customerID": "SAVEA", + "employeeID": 6, + "orderDate": "1997-11-27 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 1, + "freight": 8.19, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 30, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 7, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10761, + "customerID": "RATTC", + "employeeID": 5, + "orderDate": "1997-12-02 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 2, + "freight": 18.66, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10762, + "customerID": "FOLKO", + "employeeID": 3, + "orderDate": "1997-12-02 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 1, + "freight": 328.74, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 28, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 60, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10763, + "customerID": "FOLIG", + "employeeID": 3, + "orderDate": "1997-12-03 00:00:00.000", + "requiredDate": "1997-12-31 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 3, + "freight": 37.35, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 6, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10764, + "customerID": "ERNSH", + "employeeID": 6, + "orderDate": "1997-12-03 00:00:00.000", + "requiredDate": "1997-12-31 00:00:00.000", + "shippedDate": "1997-12-08 00:00:00.000", + "shipVia": 3, + "freight": 145.45, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 130, + "discount": 0.1 + } + ] + }, + { + "orderID": 10766, + "customerID": "OTTIK", + "employeeID": 4, + "orderDate": "1997-12-05 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-09 00:00:00.000", + "shipVia": 1, + "freight": 157.55, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 40, + "discount": 0 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 35, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10760, + "customerID": "MAISD", + "employeeID": 4, + "orderDate": "1997-12-01 00:00:00.000", + "requiredDate": "1997-12-29 00:00:00.000", + "shippedDate": "1997-12-10 00:00:00.000", + "shipVia": 1, + "freight": 155.64, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 12, + "discount": 0.25 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10768, + "customerID": "AROUT", + "employeeID": 3, + "orderDate": "1997-12-08 00:00:00.000", + "requiredDate": "1998-01-05 00:00:00.000", + "shippedDate": "1997-12-15 00:00:00.000", + "shipVia": 2, + "freight": 146.32, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 4, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 50, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 15, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10759, + "customerID": "ANATR", + "employeeID": 3, + "orderDate": "1997-11-28 00:00:00.000", + "requiredDate": "1997-12-26 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 3, + "freight": 11.99, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10769, + "customerID": "VAFFE", + "employeeID": 3, + "orderDate": "1997-12-08 00:00:00.000", + "requiredDate": "1998-01-05 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 1, + "freight": 65.06, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 15, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10772, + "customerID": "LEHMS", + "employeeID": 3, + "orderDate": "1997-12-10 00:00:00.000", + "requiredDate": "1998-01-07 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 91.28, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10758, + "customerID": "RICSU", + "employeeID": 3, + "orderDate": "1997-11-28 00:00:00.000", + "requiredDate": "1997-12-26 00:00:00.000", + "shippedDate": "1997-12-04 00:00:00.000", + "shipVia": 3, + "freight": 138.17, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 40, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 60, + "discount": 0 + } + ] + }, + { + "orderID": 10773, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1997-12-11 00:00:00.000", + "requiredDate": "1998-01-08 00:00:00.000", + "shippedDate": "1997-12-16 00:00:00.000", + "shipVia": 3, + "freight": 96.43, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 33, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 70, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 7, + "discount": 0.2 + } + ] + }, + { + "orderID": 10775, + "customerID": "THECR", + "employeeID": 7, + "orderDate": "1997-12-12 00:00:00.000", + "requiredDate": "1998-01-09 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 20.25, + "shipName": "The Cracker Box", + "shipAddress": { + "street": "55 Grizzly Peak Rd.", + "city": "Butte", + "region": "MT", + "postalCode": 59801, + "country": "USA" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 6, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10774, + "customerID": "FOLKO", + "employeeID": 4, + "orderDate": "1997-12-11 00:00:00.000", + "requiredDate": "1997-12-25 00:00:00.000", + "shippedDate": "1997-12-12 00:00:00.000", + "shipVia": 1, + "freight": 48.2, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 2, + "discount": 0.25 + }, + { + "productID": 66, + "unitPrice": 17, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10779, + "customerID": "MORGK", + "employeeID": 3, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1998-01-13 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 2, + "freight": 58.13, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 20, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10780, + "customerID": "LILAS", + "employeeID": 2, + "orderDate": "1997-12-16 00:00:00.000", + "requiredDate": "1997-12-30 00:00:00.000", + "shippedDate": "1997-12-25 00:00:00.000", + "shipVia": 1, + "freight": 42.13, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10781, + "customerID": "WARTH", + "employeeID": 2, + "orderDate": "1997-12-17 00:00:00.000", + "requiredDate": "1998-01-14 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 3, + "freight": 73.16, + "shipName": "Wartian Herkku", + "shipAddress": { + "street": "Torikatu 38", + "city": "Oulu", + "region": "NULL", + "postalCode": 90110, + "country": "Finland" + }, + "details": [ + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.2 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10783, + "customerID": "HANAR", + "employeeID": 4, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-19 00:00:00.000", + "shipVia": 2, + "freight": 124.98, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10784, + "customerID": "MAGAA", + "employeeID": 4, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-22 00:00:00.000", + "shipVia": 3, + "freight": 70.09, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 2, + "discount": 0.15 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10785, + "customerID": "GROSR", + "employeeID": 1, + "orderDate": "1997-12-18 00:00:00.000", + "requiredDate": "1998-01-15 00:00:00.000", + "shippedDate": "1997-12-24 00:00:00.000", + "shipVia": 3, + "freight": 1.51, + "shipName": "GROSELLA-Restaurante", + "shipAddress": { + "street": "5ª Ave. Los Palos Grandes", + "city": "Caracas", + "region": "DF", + "postalCode": 1081, + "country": "Venezuela" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 10, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10786, + "customerID": "QUEEN", + "employeeID": 8, + "orderDate": "1997-12-19 00:00:00.000", + "requiredDate": "1998-01-16 00:00:00.000", + "shippedDate": "1997-12-23 00:00:00.000", + "shipVia": 1, + "freight": 110.87, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 42, + "discount": 0.2 + } + ] + }, + { + "orderID": 10776, + "customerID": "ERNSH", + "employeeID": 1, + "orderDate": "1997-12-15 00:00:00.000", + "requiredDate": "1998-01-12 00:00:00.000", + "shippedDate": "1997-12-18 00:00:00.000", + "shipVia": 3, + "freight": 351.53, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 16, + "discount": 0.05 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 27, + "discount": 0.05 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 120, + "discount": 0.05 + } + ] + }, + { + "orderID": 10787, + "customerID": "LAMAI", + "employeeID": 2, + "orderDate": "1997-12-19 00:00:00.000", + "requiredDate": "1998-01-02 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 249.93, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10791, + "customerID": "FRANK", + "employeeID": 6, + "orderDate": "1997-12-23 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1998-01-01 00:00:00.000", + "shipVia": 2, + "freight": 16.85, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10792, + "customerID": "WOLZA", + "employeeID": 1, + "orderDate": "1997-12-23 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 3, + "freight": 23.79, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10793, + "customerID": "AROUT", + "employeeID": 3, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-08 00:00:00.000", + "shipVia": 3, + "freight": 4.52, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10794, + "customerID": "QUEDE", + "employeeID": 6, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 1, + "freight": 21.49, + "shipName": "Que Delícia", + "shipAddress": { + "street": "Rua da Panificadora 12", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-673", + "country": "Brazil" + }, + "details": [ + { + "productID": 14, + "unitPrice": 23.25, + "quantity": 15, + "discount": 0.2 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 6, + "discount": 0.2 + } + ] + }, + { + "orderID": 10790, + "customerID": "GOURL", + "employeeID": 6, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1997-12-26 00:00:00.000", + "shipVia": 1, + "freight": 28.23, + "shipName": "Gourmet Lanchonetes", + "shipAddress": { + "street": "Av. Brasil 442", + "city": "Campinas", + "region": "SP", + "postalCode": "04876-786", + "country": "Brazil" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 3, + "discount": 0.15 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.15 + } + ] + }, + { + "orderID": 10796, + "customerID": "HILAA", + "employeeID": 3, + "orderDate": "1997-12-25 00:00:00.000", + "requiredDate": "1998-01-22 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 1, + "freight": 26.52, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 21, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 10, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 35, + "discount": 0.2 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 24, + "discount": 0.2 + } + ] + }, + { + "orderID": 10788, + "customerID": "QUICK", + "employeeID": 1, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 2, + "freight": 42.7, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10789, + "customerID": "FOLIG", + "employeeID": 1, + "orderDate": "1997-12-22 00:00:00.000", + "requiredDate": "1998-01-19 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 2, + "freight": 100.6, + "shipName": "Folies gourmandes", + "shipAddress": { + "street": "184 chaussée de Tournai", + "city": "Lille", + "region": "NULL", + "postalCode": 59000, + "country": "France" + }, + "details": [ + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 30, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10800, + "customerID": "SEVES", + "employeeID": 1, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-01-23 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 3, + "freight": 137.44, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 50, + "discount": 0.1 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 10, + "discount": 0.1 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 7, + "discount": 0.1 + } + ] + }, + { + "orderID": 10801, + "customerID": "BOLID", + "employeeID": 4, + "orderDate": "1997-12-29 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1997-12-31 00:00:00.000", + "shipVia": 2, + "freight": 97.09, + "shipName": "Bólido Comidas preparadas", + "shipAddress": { + "street": "C/ Araquil 67", + "city": "Madrid", + "region": "NULL", + "postalCode": 28023, + "country": "Spain" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 20, + "discount": 0.25 + } + ] + }, + { + "orderID": 10795, + "customerID": "ERNSH", + "employeeID": 8, + "orderDate": "1997-12-24 00:00:00.000", + "requiredDate": "1998-01-21 00:00:00.000", + "shippedDate": "1998-01-20 00:00:00.000", + "shipVia": 2, + "freight": 126.66, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 65, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10798, + "customerID": "ISLAT", + "employeeID": 2, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-01-23 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 1, + "freight": 2.33, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 2, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10799, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1997-12-26 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 3, + "freight": 30.76, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10805, + "customerID": "THEBI", + "employeeID": 2, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 3, + "freight": 237.34, + "shipName": "The Big Cheese", + "shipAddress": { + "street": "89 Jefferson Way Suite 2", + "city": "Portland", + "region": "OR", + "postalCode": 97201, + "country": "USA" + }, + "details": [ + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10802, + "customerID": "SIMOB", + "employeeID": 4, + "orderDate": "1997-12-29 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1998-01-02 00:00:00.000", + "shipVia": 2, + "freight": 257.26, + "shipName": "Simons bistro", + "shipAddress": { + "street": "Vinbæltet 34", + "city": "Kobenhavn", + "region": "NULL", + "postalCode": 1734, + "country": "Denmark" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 5, + "discount": 0.25 + } + ] + }, + { + "orderID": 10803, + "customerID": "WELLI", + "employeeID": 4, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-06 00:00:00.000", + "shipVia": 1, + "freight": 55.23, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 24, + "discount": 0.05 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 15, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10808, + "customerID": "OLDWO", + "employeeID": 2, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 3, + "freight": 45.53, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 50, + "discount": 0.15 + } + ] + }, + { + "orderID": 10810, + "customerID": "LAUGB", + "employeeID": 2, + "orderDate": "1998-01-01 00:00:00.000", + "requiredDate": "1998-01-29 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 3, + "freight": 4.33, + "shipName": "Laughing Bacchus Wine Cellars", + "shipAddress": { + "street": "2319 Elm St.", + "city": "Vancouver", + "region": "BC", + "postalCode": "V3F 2K1", + "country": "Canada" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 7, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 5, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10811, + "customerID": "LINOD", + "employeeID": 8, + "orderDate": "1998-01-02 00:00:00.000", + "requiredDate": "1998-01-30 00:00:00.000", + "shippedDate": "1998-01-08 00:00:00.000", + "shipVia": 1, + "freight": 31.22, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 15, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 18, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10804, + "customerID": "SEVES", + "employeeID": 6, + "orderDate": "1997-12-30 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-01-07 00:00:00.000", + "shipVia": 2, + "freight": 27.33, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 36, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 24, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 4, + "discount": 0.15 + } + ] + }, + { + "orderID": 10814, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 3, + "freight": 130.94, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 48, + "unitPrice": 12.75, + "quantity": 8, + "discount": 0.15 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10812, + "customerID": "REGGC", + "employeeID": 5, + "orderDate": "1998-01-02 00:00:00.000", + "requiredDate": "1998-01-30 00:00:00.000", + "shippedDate": "1998-01-12 00:00:00.000", + "shipVia": 1, + "freight": 59.78, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 16, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10817, + "customerID": "KOENE", + "employeeID": 3, + "orderDate": "1998-01-06 00:00:00.000", + "requiredDate": "1998-01-20 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 306.07, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 40, + "discount": 0.15 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 60, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 25, + "discount": 0.15 + } + ] + }, + { + "orderID": 10806, + "customerID": "VICTE", + "employeeID": 3, + "orderDate": "1997-12-31 00:00:00.000", + "requiredDate": "1998-01-28 00:00:00.000", + "shippedDate": "1998-01-05 00:00:00.000", + "shipVia": 2, + "freight": 22.11, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 2, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 15, + "discount": 0.25 + } + ] + }, + { + "orderID": 10816, + "customerID": "GREAL", + "employeeID": 4, + "orderDate": "1998-01-06 00:00:00.000", + "requiredDate": "1998-02-03 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 2, + "freight": 719.78, + "shipName": "Great Lakes Food Market", + "shipAddress": { + "street": "2732 Baker Blvd.", + "city": "Eugene", + "region": "OR", + "postalCode": 97403, + "country": "USA" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 30, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10813, + "customerID": "RICAR", + "employeeID": 1, + "orderDate": "1998-01-05 00:00:00.000", + "requiredDate": "1998-02-02 00:00:00.000", + "shippedDate": "1998-01-09 00:00:00.000", + "shipVia": 1, + "freight": 47.38, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10818, + "customerID": "MAGAA", + "employeeID": 7, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-12 00:00:00.000", + "shipVia": 3, + "freight": 65.48, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 32, + "unitPrice": 32, + "quantity": 20, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10819, + "customerID": "CACTU", + "employeeID": 2, + "orderDate": "1998-01-07 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-16 00:00:00.000", + "shipVia": 3, + "freight": 19.76, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 7, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10821, + "customerID": "SPLIR", + "employeeID": 1, + "orderDate": "1998-01-08 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-01-15 00:00:00.000", + "shipVia": 1, + "freight": 36.68, + "shipName": "Split Rail Beer & Ale", + "shipAddress": { + "street": "P.O. Box 555", + "city": "Lander", + "region": "WY", + "postalCode": 82520, + "country": "USA" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10822, + "customerID": "TRAIH", + "employeeID": 6, + "orderDate": "1998-01-08 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-01-16 00:00:00.000", + "shipVia": 3, + "freight": 7, + "shipName": "Trail's Head Gourmet Provisioners", + "shipAddress": { + "street": "722 DaVinci Blvd.", + "city": "Kirkland", + "region": "WA", + "postalCode": 98034, + "country": "USA" + }, + "details": [ + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10823, + "customerID": "LILAS", + "employeeID": 5, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-13 00:00:00.000", + "shipVia": 2, + "freight": 163.97, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 40, + "discount": 0.1 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10824, + "customerID": "FOLKO", + "employeeID": 8, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 1.23, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 70, + "unitPrice": 15, + "quantity": 9, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10825, + "customerID": "DRACD", + "employeeID": 1, + "orderDate": "1998-01-09 00:00:00.000", + "requiredDate": "1998-02-06 00:00:00.000", + "shippedDate": "1998-01-14 00:00:00.000", + "shipVia": 1, + "freight": 79.25, + "shipName": "Drachenblut Delikatessen", + "shipAddress": { + "street": "Walserweg 21", + "city": "Aachen", + "region": "NULL", + "postalCode": 52066, + "country": "Germany" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 12, + "discount": 0 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10826, + "customerID": "BLONP", + "employeeID": 6, + "orderDate": "1998-01-12 00:00:00.000", + "requiredDate": "1998-02-09 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 1, + "freight": 7.09, + "shipName": "Blondel père et fils", + "shipAddress": { + "street": "24 place Kléber", + "city": "Strasbourg", + "region": "NULL", + "postalCode": 67000, + "country": "France" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10827, + "customerID": "BONAP", + "employeeID": 1, + "orderDate": "1998-01-12 00:00:00.000", + "requiredDate": "1998-01-26 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 2, + "freight": 63.54, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 15, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10828, + "customerID": "RANCH", + "employeeID": 9, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-01-27 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 1, + "freight": 90.85, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 5, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10829, + "customerID": "ISLAT", + "employeeID": 9, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-02-10 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 1, + "freight": 154.72, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0 + }, + { + "productID": 8, + "unitPrice": 40, + "quantity": 20, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10830, + "customerID": "TRADH", + "employeeID": 4, + "orderDate": "1998-01-13 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 2, + "freight": 81.83, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 6, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 30, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 28, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 24, + "discount": 0 + } + ] + }, + { + "orderID": 10831, + "customerID": "SANTG", + "employeeID": 3, + "orderDate": "1998-01-14 00:00:00.000", + "requiredDate": "1998-02-11 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 2, + "freight": 72.19, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 8, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 9, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 2, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10832, + "customerID": "LAMAI", + "employeeID": 2, + "orderDate": "1998-01-14 00:00:00.000", + "requiredDate": "1998-02-11 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 2, + "freight": 43.26, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 3, + "discount": 0.2 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 16, + "discount": 0.2 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10833, + "customerID": "OTTIK", + "employeeID": 6, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 2, + "freight": 71.49, + "shipName": "Ottilies Käseladen", + "shipAddress": { + "street": "Mehrheimerstr. 369", + "city": "Köln", + "region": "NULL", + "postalCode": 50739, + "country": "Germany" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 9, + "discount": 0.1 + }, + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 9, + "discount": 0.1 + }, + { + "productID": 7, + "unitPrice": 30, + "quantity": 20, + "discount": 0.1 + } + ] + }, + { + "orderID": 10834, + "customerID": "TRADH", + "employeeID": 1, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-19 00:00:00.000", + "shipVia": 3, + "freight": 29.78, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 8, + "discount": 0.05 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 20, + "discount": 0.05 + } + ] + }, + { + "orderID": 10838, + "customerID": "LINOD", + "employeeID": 3, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 59.28, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 4, + "discount": 0.25 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0.25 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 50, + "discount": 0.25 + } + ] + }, + { + "orderID": 10839, + "customerID": "TRADH", + "employeeID": 3, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-01-22 00:00:00.000", + "shipVia": 3, + "freight": 35.43, + "shipName": "Tradiçao Hipermercados", + "shipAddress": { + "street": "Av. Inês de Castro 414", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05634-030", + "country": "Brazil" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 15, + "discount": 0.1 + } + ] + }, + { + "orderID": 10840, + "customerID": "LINOD", + "employeeID": 4, + "orderDate": "1998-01-19 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-16 00:00:00.000", + "shipVia": 2, + "freight": 2.71, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 6, + "discount": 0.2 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10841, + "customerID": "SUPRD", + "employeeID": 5, + "orderDate": "1998-01-20 00:00:00.000", + "requiredDate": "1998-02-17 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 2, + "freight": 424.3, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 16, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 30, + "discount": 0 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 50, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10842, + "customerID": "TORTU", + "employeeID": 1, + "orderDate": "1998-01-20 00:00:00.000", + "requiredDate": "1998-02-17 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 3, + "freight": 54.42, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 15, + "discount": 0 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 5, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 12, + "discount": 0 + } + ] + }, + { + "orderID": 10836, + "customerID": "ERNSH", + "employeeID": 7, + "orderDate": "1998-01-16 00:00:00.000", + "requiredDate": "1998-02-13 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 1, + "freight": 411.88, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 22, + "unitPrice": 21, + "quantity": 52, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 24, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 60, + "discount": 0 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10835, + "customerID": "ALFKI", + "employeeID": 1, + "orderDate": "1998-01-15 00:00:00.000", + "requiredDate": "1998-02-12 00:00:00.000", + "shippedDate": "1998-01-21 00:00:00.000", + "shipVia": 3, + "freight": 69.53, + "shipName": "Alfred's Futterkiste", + "shipAddress": { + "street": "Obere Str. 57", + "city": "Berlin", + "region": "NULL", + "postalCode": 12209, + "country": "Germany" + }, + "details": [ + { + "productID": 59, + "unitPrice": 55, + "quantity": 15, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 2, + "discount": 0.2 + } + ] + }, + { + "orderID": 10837, + "customerID": "BERGS", + "employeeID": 9, + "orderDate": "1998-01-16 00:00:00.000", + "requiredDate": "1998-02-13 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 13.32, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 6, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 25, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10845, + "customerID": "QUICK", + "employeeID": 8, + "orderDate": "1998-01-21 00:00:00.000", + "requiredDate": "1998-02-04 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 212.98, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 70, + "discount": 0.1 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 25, + "discount": 0.1 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 42, + "discount": 0.1 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 60, + "discount": 0.1 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 48, + "discount": 0 + } + ] + }, + { + "orderID": 10848, + "customerID": "CONSH", + "employeeID": 7, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-02-20 00:00:00.000", + "shippedDate": "1998-01-29 00:00:00.000", + "shipVia": 2, + "freight": 38.24, + "shipName": "Consolidated Holdings", + "shipAddress": { + "street": "Berkeley Gardens 12 Brewery", + "city": "London", + "region": "NULL", + "postalCode": "WX1 6LT", + "country": "UK" + }, + "details": [ + { + "productID": 9, + "unitPrice": 97, + "quantity": 3, + "discount": 0 + }, + { + "productID": 5, + "unitPrice": 21.35, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10850, + "customerID": "VICTE", + "employeeID": 1, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 49.19, + "shipName": "Victuailles en stock", + "shipAddress": { + "street": "2 rue du Commerce", + "city": "Lyon", + "region": "NULL", + "postalCode": 69004, + "country": "France" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 4, + "discount": 0.15 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0.15 + } + ] + }, + { + "orderID": 10847, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1998-01-22 00:00:00.000", + "requiredDate": "1998-02-05 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 3, + "freight": 487.57, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 80, + "discount": 0.2 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0.2 + }, + { + "productID": 37, + "unitPrice": 26, + "quantity": 60, + "discount": 0.2 + }, + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 36, + "discount": 0.2 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 45, + "discount": 0.2 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 55, + "discount": 0.2 + } + ] + }, + { + "orderID": 10846, + "customerID": "SUPRD", + "employeeID": 2, + "orderDate": "1998-01-22 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-01-23 00:00:00.000", + "shipVia": 3, + "freight": 56.46, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 21, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + }, + { + "productID": 74, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10849, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1998-01-23 00:00:00.000", + "requiredDate": "1998-02-20 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 2, + "freight": 0.56, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 49, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 18, + "discount": 0.15 + } + ] + }, + { + "orderID": 10851, + "customerID": "RICAR", + "employeeID": 5, + "orderDate": "1998-01-26 00:00:00.000", + "requiredDate": "1998-02-23 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 1, + "freight": 160.55, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 25, + "unitPrice": 14, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 59, + "unitPrice": 55, + "quantity": 42, + "discount": 0.05 + }, + { + "productID": 2, + "unitPrice": 19, + "quantity": 5, + "discount": 0.05 + } + ] + }, + { + "orderID": 10852, + "customerID": "RATTC", + "employeeID": 8, + "orderDate": "1998-01-26 00:00:00.000", + "requiredDate": "1998-02-09 00:00:00.000", + "shippedDate": "1998-01-30 00:00:00.000", + "shipVia": 1, + "freight": 174.05, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 15, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 6, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10854, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-05 00:00:00.000", + "shipVia": 2, + "freight": 100.22, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 100, + "discount": 0.15 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 65, + "discount": 0.15 + } + ] + }, + { + "orderID": 10855, + "customerID": "OLDWO", + "employeeID": 3, + "orderDate": "1998-01-27 00:00:00.000", + "requiredDate": "1998-02-24 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 1, + "freight": 170.97, + "shipName": "Old World Delicatessen", + "shipAddress": { + "street": "2743 Bering St.", + "city": "Anchorage", + "region": "AK", + "postalCode": 99508, + "country": "USA" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 50, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 14, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 24, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 15, + "discount": 0.15 + } + ] + }, + { + "orderID": 10856, + "customerID": "ANTON", + "employeeID": 3, + "orderDate": "1998-01-28 00:00:00.000", + "requiredDate": "1998-02-25 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 2, + "freight": 58.43, + "shipName": "Antonio Moreno Taquería", + "shipAddress": { + "street": "Mataderos 2312", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5023, + "country": "Mexico" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10857, + "customerID": "BERGS", + "employeeID": 8, + "orderDate": "1998-01-28 00:00:00.000", + "requiredDate": "1998-02-25 00:00:00.000", + "shippedDate": "1998-02-06 00:00:00.000", + "shipVia": 2, + "freight": 188.85, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 3, + "unitPrice": 10, + "quantity": 30, + "discount": 0 + }, + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 10, + "discount": 0.25 + } + ] + }, + { + "orderID": 10858, + "customerID": "LACOR", + "employeeID": 2, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-03 00:00:00.000", + "shipVia": 1, + "freight": 52.51, + "shipName": "La corne d'abondance", + "shipAddress": { + "street": "67 avenue de l'Europe", + "city": "Versailles", + "region": "NULL", + "postalCode": 78000, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 5, + "discount": 0 + }, + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 10, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 4, + "discount": 0 + } + ] + }, + { + "orderID": 10859, + "customerID": "FRANK", + "employeeID": 1, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 2, + "freight": 76.1, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 35, + "discount": 0.25 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 30, + "discount": 0.25 + } + ] + }, + { + "orderID": 10860, + "customerID": "FRANR", + "employeeID": 3, + "orderDate": "1998-01-29 00:00:00.000", + "requiredDate": "1998-02-26 00:00:00.000", + "shippedDate": "1998-02-04 00:00:00.000", + "shipVia": 3, + "freight": 19.26, + "shipName": "France restauration", + "shipAddress": { + "street": "54 rue Royale", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10861, + "customerID": "WHITC", + "employeeID": 4, + "orderDate": "1998-01-30 00:00:00.000", + "requiredDate": "1998-02-27 00:00:00.000", + "shippedDate": "1998-02-17 00:00:00.000", + "shipVia": 2, + "freight": 14.93, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 42, + "discount": 0 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 20, + "discount": 0 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10862, + "customerID": "LEHMS", + "employeeID": 8, + "orderDate": "1998-01-30 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-02-02 00:00:00.000", + "shipVia": 2, + "freight": 53.23, + "shipName": "Lehmanns Marktstand", + "shipAddress": { + "street": "Magazinweg 7", + "city": "Frankfurt a.M.", + "region": "NULL", + "postalCode": 60528, + "country": "Germany" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 25, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 8, + "discount": 0 + } + ] + }, + { + "orderID": 10863, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-17 00:00:00.000", + "shipVia": 2, + "freight": 30.26, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10864, + "customerID": "AROUT", + "employeeID": 4, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-03-02 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 2, + "freight": 3.04, + "shipName": "Around the Horn", + "shipAddress": { + "street": "Brook Farm Stratford St. Mary", + "city": "Colchester", + "region": "Essex", + "postalCode": "CO7 6JX", + "country": "UK" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 4, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10865, + "customerID": "QUICK", + "employeeID": 2, + "orderDate": "1998-02-02 00:00:00.000", + "requiredDate": "1998-02-16 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 348.14, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 60, + "discount": 0.05 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 80, + "discount": 0.05 + } + ] + }, + { + "orderID": 10869, + "customerID": "SEVES", + "employeeID": 5, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 1, + "freight": 143.28, + "shipName": "Seven Seas Imports", + "shipAddress": { + "street": "90 Wadhurst Rd.", + "city": "London", + "region": "NULL", + "postalCode": "OX15 4NB", + "country": "UK" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 40, + "discount": 0 + }, + { + "productID": 11, + "unitPrice": 21, + "quantity": 10, + "discount": 0 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 50, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10870, + "customerID": "WOLZA", + "employeeID": 5, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-13 00:00:00.000", + "shipVia": 3, + "freight": 12.04, + "shipName": "Wolski Zajazd", + "shipAddress": { + "street": "ul. Filtrowa 68", + "city": "Warszawa", + "region": "NULL", + "postalCode": "01-012", + "country": "Poland" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 3, + "discount": 0 + }, + { + "productID": 51, + "unitPrice": 53, + "quantity": 2, + "discount": 0 + } + ] + }, + { + "orderID": 10871, + "customerID": "BONAP", + "employeeID": 9, + "orderDate": "1998-02-05 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-02-10 00:00:00.000", + "shipVia": 2, + "freight": 112.27, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 6, + "unitPrice": 25, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 16, + "discount": 0.05 + } + ] + }, + { + "orderID": 10872, + "customerID": "GODOS", + "employeeID": 5, + "orderDate": "1998-02-05 00:00:00.000", + "requiredDate": "1998-03-05 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 2, + "freight": 175.32, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 10, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0.05 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 15, + "discount": 0.05 + } + ] + }, + { + "orderID": 10873, + "customerID": "WILMK", + "employeeID": 4, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-02-09 00:00:00.000", + "shipVia": 1, + "freight": 0.82, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 20, + "discount": 0 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 3, + "discount": 0 + } + ] + }, + { + "orderID": 10866, + "customerID": "BERGS", + "employeeID": 5, + "orderDate": "1998-02-03 00:00:00.000", + "requiredDate": "1998-03-03 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 1, + "freight": 109.11, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 21, + "discount": 0.25 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 6, + "discount": 0.25 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 40, + "discount": 0.25 + } + ] + }, + { + "orderID": 10876, + "customerID": "BONAP", + "employeeID": 7, + "orderDate": "1998-02-09 00:00:00.000", + "requiredDate": "1998-03-09 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 3, + "freight": 60.42, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 64, + "unitPrice": 33.25, + "quantity": 20, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10877, + "customerID": "RICAR", + "employeeID": 1, + "orderDate": "1998-02-09 00:00:00.000", + "requiredDate": "1998-03-09 00:00:00.000", + "shippedDate": "1998-02-19 00:00:00.000", + "shipVia": 1, + "freight": 38.06, + "shipName": "Ricardo Adocicados", + "shipAddress": { + "street": "Av. Copacabana 267", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "02389-890", + "country": "Brazil" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10868, + "customerID": "QUEEN", + "employeeID": 7, + "orderDate": "1998-02-04 00:00:00.000", + "requiredDate": "1998-03-04 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 2, + "freight": 191.27, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 26, + "unitPrice": 31.23, + "quantity": 20, + "discount": 0 + }, + { + "productID": 35, + "unitPrice": 18, + "quantity": 30, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 42, + "discount": 0.1 + } + ] + }, + { + "orderID": 10875, + "customerID": "BERGS", + "employeeID": 4, + "orderDate": "1998-02-06 00:00:00.000", + "requiredDate": "1998-03-06 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 2, + "freight": 32.37, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 25, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 15, + "discount": 0 + }, + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 21, + "discount": 0.1 + } + ] + }, + { + "orderID": 10882, + "customerID": "SAVEA", + "employeeID": 4, + "orderDate": "1998-02-11 00:00:00.000", + "requiredDate": "1998-03-11 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 3, + "freight": 23.1, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 42, + "unitPrice": 14, + "quantity": 25, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 20, + "discount": 0.15 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 32, + "discount": 0.15 + } + ] + }, + { + "orderID": 10884, + "customerID": "LETSS", + "employeeID": 4, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-13 00:00:00.000", + "shipVia": 2, + "freight": 90.97, + "shipName": "Let's Stop N Shop", + "shipAddress": { + "street": "87 Polk St. Suite 5", + "city": "San Francisco", + "region": "CA", + "postalCode": 94117, + "country": "USA" + }, + "details": [ + { + "productID": 56, + "unitPrice": 38, + "quantity": 21, + "discount": 0.05 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 12, + "discount": 0.05 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 40, + "discount": 0.05 + } + ] + }, + { + "orderID": 10885, + "customerID": "SUPRD", + "employeeID": 6, + "orderDate": "1998-02-12 00:00:00.000", + "requiredDate": "1998-03-12 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 3, + "freight": 5.64, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 12, + "discount": 0 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 30, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 25, + "discount": 0 + } + ] + }, + { + "orderID": 10886, + "customerID": "HANAR", + "employeeID": 1, + "orderDate": "1998-02-13 00:00:00.000", + "requiredDate": "1998-03-13 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 1, + "freight": 4.99, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 35, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 40, + "discount": 0 + }, + { + "productID": 10, + "unitPrice": 31, + "quantity": 70, + "discount": 0 + } + ] + }, + { + "orderID": 10880, + "customerID": "FOLKO", + "employeeID": 7, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 88.01, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 23, + "unitPrice": 9, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 70, + "unitPrice": 15, + "quantity": 50, + "discount": 0.2 + } + ] + }, + { + "orderID": 10879, + "customerID": "WILMK", + "employeeID": 3, + "orderDate": "1998-02-10 00:00:00.000", + "requiredDate": "1998-03-10 00:00:00.000", + "shippedDate": "1998-02-12 00:00:00.000", + "shipVia": 3, + "freight": 8.5, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 12, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 10, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10889, + "customerID": "RATTC", + "employeeID": 9, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 3, + "freight": 280.61, + "shipName": "Rattlesnake Canyon Grocery", + "shipAddress": { + "street": "2817 Milton Dr.", + "city": "Albuquerque", + "region": "NM", + "postalCode": 87110, + "country": "USA" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 40, + "discount": 0 + }, + { + "productID": 38, + "unitPrice": 263.5, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10890, + "customerID": "DUMON", + "employeeID": 7, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-18 00:00:00.000", + "shipVia": 1, + "freight": 32.76, + "shipName": "Du monde entier", + "shipAddress": { + "street": "67 rue des Cinquante Otages", + "city": "Nantes", + "region": "NULL", + "postalCode": 44000, + "country": "France" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 15, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 10, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 14, + "discount": 0 + } + ] + }, + { + "orderID": 10893, + "customerID": "KOENE", + "employeeID": 9, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 2, + "freight": 77.78, + "shipName": "Königlich Essen", + "shipAddress": { + "street": "Maubelstr. 90", + "city": "Brandenburg", + "region": "NULL", + "postalCode": 14776, + "country": "Germany" + }, + "details": [ + { + "productID": 8, + "unitPrice": 40, + "quantity": 30, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 10, + "discount": 0 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 24, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 35, + "discount": 0 + }, + { + "productID": 36, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10894, + "customerID": "SAVEA", + "employeeID": 1, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-20 00:00:00.000", + "shipVia": 1, + "freight": 116.13, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 28, + "discount": 0.05 + }, + { + "productID": 69, + "unitPrice": 36, + "quantity": 50, + "discount": 0.05 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 120, + "discount": 0.05 + } + ] + }, + { + "orderID": 10888, + "customerID": "GODOS", + "employeeID": 1, + "orderDate": "1998-02-16 00:00:00.000", + "requiredDate": "1998-03-16 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 2, + "freight": 51.87, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 20, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 18, + "discount": 0 + } + ] + }, + { + "orderID": 10898, + "customerID": "OCEAN", + "employeeID": 4, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 1.27, + "shipName": "Océano Atlántico Ltda.", + "shipAddress": { + "street": "Ing. Gustavo Moncada 8585 Piso 20-A", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10899, + "customerID": "LILAS", + "employeeID": 5, + "orderDate": "1998-02-20 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-02-26 00:00:00.000", + "shipVia": 3, + "freight": 1.21, + "shipName": "LILA-Supermercado", + "shipAddress": { + "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo", + "city": "Barquisimeto", + "region": "Lara", + "postalCode": 3508, + "country": "Venezuela" + }, + "details": [ + { + "productID": 39, + "unitPrice": 18, + "quantity": 8, + "discount": 0.15 + } + ] + }, + { + "orderID": 10901, + "customerID": "HILAA", + "employeeID": 4, + "orderDate": "1998-02-23 00:00:00.000", + "requiredDate": "1998-03-23 00:00:00.000", + "shippedDate": "1998-02-26 00:00:00.000", + "shipVia": 1, + "freight": 62.09, + "shipName": "HILARION-Abastos", + "shipAddress": { + "street": "Carrera 22 con Ave. Carlos Soublette #8-35", + "city": "San Cristóbal", + "region": "Táchira", + "postalCode": 5022, + "country": "Venezuela" + }, + "details": [ + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 30, + "discount": 0 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10902, + "customerID": "FOLKO", + "employeeID": 1, + "orderDate": "1998-02-23 00:00:00.000", + "requiredDate": "1998-03-23 00:00:00.000", + "shippedDate": "1998-03-03 00:00:00.000", + "shipVia": 1, + "freight": 44.15, + "shipName": "Folk och fä HB", + "shipAddress": { + "street": "Åkergatan 24", + "city": "Bräcke", + "region": "NULL", + "postalCode": "S-844 67", + "country": "Sweden" + }, + "details": [ + { + "productID": 55, + "unitPrice": 24, + "quantity": 30, + "discount": 0.15 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 6, + "discount": 0.15 + } + ] + }, + { + "orderID": 10903, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 3, + "freight": 36.71, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 40, + "discount": 0 + }, + { + "productID": 65, + "unitPrice": 21.05, + "quantity": 21, + "discount": 0 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10896, + "customerID": "MAISD", + "employeeID": 7, + "orderDate": "1998-02-19 00:00:00.000", + "requiredDate": "1998-03-19 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 32.45, + "shipName": "Maison Dewey", + "shipAddress": { + "street": "Rue Joseph-Bens 532", + "city": "Bruxelles", + "region": "NULL", + "postalCode": "B-1180", + "country": "Belgium" + }, + "details": [ + { + "productID": 45, + "unitPrice": 9.5, + "quantity": 15, + "discount": 0 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10904, + "customerID": "WHITC", + "employeeID": 3, + "orderDate": "1998-02-24 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-02-27 00:00:00.000", + "shipVia": 3, + "freight": 162.95, + "shipName": "White Clover Markets", + "shipAddress": { + "street": "1029 - 12th Ave. S.", + "city": "Seattle", + "region": "WA", + "postalCode": 98124, + "country": "USA" + }, + "details": [ + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 15, + "discount": 0 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10895, + "customerID": "ERNSH", + "employeeID": 3, + "orderDate": "1998-02-18 00:00:00.000", + "requiredDate": "1998-03-18 00:00:00.000", + "shippedDate": "1998-02-23 00:00:00.000", + "shipVia": 1, + "freight": 162.75, + "shipName": "Ernst Handel", + "shipAddress": { + "street": "Kirchgasse 6", + "city": "Graz", + "region": "NULL", + "postalCode": 8010, + "country": "Austria" + }, + "details": [ + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 91, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 100, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 110, + "discount": 0 + }, + { + "productID": 39, + "unitPrice": 18, + "quantity": 45, + "discount": 0 + } + ] + }, + { + "orderID": 10897, + "customerID": "HUNGO", + "employeeID": 3, + "orderDate": "1998-02-19 00:00:00.000", + "requiredDate": "1998-03-19 00:00:00.000", + "shippedDate": "1998-02-25 00:00:00.000", + "shipVia": 2, + "freight": 603.54, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 80, + "discount": 0 + }, + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10909, + "customerID": "SANTG", + "employeeID": 1, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-10 00:00:00.000", + "shipVia": 2, + "freight": 53.05, + "shipName": "Santé Gourmet", + "shipAddress": { + "street": "Erling Skakkes gate 78", + "city": "Stavern", + "region": "NULL", + "postalCode": 4110, + "country": "Norway" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 12, + "discount": 0 + }, + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 15, + "discount": 0 + }, + { + "productID": 41, + "unitPrice": 9.65, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10910, + "customerID": "WILMK", + "employeeID": 1, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 3, + "freight": 38.11, + "shipName": "Wilman Kala", + "shipAddress": { + "street": "Keskuskatu 45", + "city": "Helsinki", + "region": "NULL", + "postalCode": 21240, + "country": "Finland" + }, + "details": [ + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 12, + "discount": 0 + }, + { + "productID": 49, + "unitPrice": 20, + "quantity": 10, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10911, + "customerID": "GODOS", + "employeeID": 3, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-05 00:00:00.000", + "shipVia": 1, + "freight": 38.19, + "shipName": "Godos Cocina Típica", + "shipAddress": { + "street": "C/ Romero 33", + "city": "Sevilla", + "region": "NULL", + "postalCode": 41101, + "country": "Spain" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 17, + "unitPrice": 39, + "quantity": 12, + "discount": 0 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10912, + "customerID": "HUNGO", + "employeeID": 2, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 2, + "freight": 580.91, + "shipName": "Hungry Owl All-Night Grocers", + "shipAddress": { + "street": "8 Johnstown Road", + "city": "Cork", + "region": "Co. Cork", + "postalCode": "NULL", + "country": "Ireland" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 29, + "unitPrice": 123.79, + "quantity": 60, + "discount": 0.25 + } + ] + }, + { + "orderID": 10913, + "customerID": "QUEEN", + "employeeID": 4, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 1, + "freight": 33.05, + "shipName": "Queen Cozinha", + "shipAddress": { + "street": "Alameda dos Canàrios 891", + "city": "Sao Paulo", + "region": "SP", + "postalCode": "05487-020", + "country": "Brazil" + }, + "details": [ + { + "productID": 4, + "unitPrice": 22, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 40, + "discount": 0.25 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10917, + "customerID": "ROMEY", + "employeeID": 4, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 2, + "freight": 8.29, + "shipName": "Romero y tomillo", + "shipAddress": { + "street": "Gran Vía 1", + "city": "Madrid", + "region": "NULL", + "postalCode": 28001, + "country": "Spain" + }, + "details": [ + { + "productID": 30, + "unitPrice": 25.89, + "quantity": 1, + "discount": 0 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10916, + "customerID": "RANCH", + "employeeID": 1, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 2, + "freight": 63.77, + "shipName": "Rancho grande", + "shipAddress": { + "street": "Av. del Libertador 900", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 6, + "discount": 0 + }, + { + "productID": 32, + "unitPrice": 32, + "quantity": 6, + "discount": 0 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10918, + "customerID": "BOTTM", + "employeeID": 3, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 3, + "freight": 48.83, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 1, + "unitPrice": 18, + "quantity": 60, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 25, + "discount": 0.25 + } + ] + }, + { + "orderID": 10919, + "customerID": "LINOD", + "employeeID": 2, + "orderDate": "1998-03-02 00:00:00.000", + "requiredDate": "1998-03-30 00:00:00.000", + "shippedDate": "1998-03-04 00:00:00.000", + "shipVia": 2, + "freight": 19.8, + "shipName": "LINO-Delicateses", + "shipAddress": { + "street": "Ave. 5 de Mayo Porlamar", + "city": "I. de Margarita", + "region": "Nueva Esparta", + "postalCode": 4980, + "country": "Venezuela" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 24, + "discount": 0 + }, + { + "productID": 25, + "unitPrice": 14, + "quantity": 24, + "discount": 0 + }, + { + "productID": 40, + "unitPrice": 18.4, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10908, + "customerID": "REGGC", + "employeeID": 4, + "orderDate": "1998-02-26 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-06 00:00:00.000", + "shipVia": 2, + "freight": 32.96, + "shipName": "Reggiani Caseifici", + "shipAddress": { + "street": "Strada Provinciale 124", + "city": "Reggio Emilia", + "region": "NULL", + "postalCode": 42100, + "country": "Italy" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 20, + "discount": 0.05 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 14, + "discount": 0.05 + } + ] + }, + { + "orderID": 10921, + "customerID": "VAFFE", + "employeeID": 1, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-09 00:00:00.000", + "shipVia": 1, + "freight": 176.48, + "shipName": "Vaffeljernet", + "shipAddress": { + "street": "Smagsloget 45", + "city": "Århus", + "region": "NULL", + "postalCode": 8200, + "country": "Denmark" + }, + "details": [ + { + "productID": 35, + "unitPrice": 18, + "quantity": 10, + "discount": 0 + }, + { + "productID": 63, + "unitPrice": 43.9, + "quantity": 40, + "discount": 0 + } + ] + }, + { + "orderID": 10915, + "customerID": "TORTU", + "employeeID": 2, + "orderDate": "1998-02-27 00:00:00.000", + "requiredDate": "1998-03-27 00:00:00.000", + "shippedDate": "1998-03-02 00:00:00.000", + "shipVia": 2, + "freight": 3.51, + "shipName": "Tortuga Restaurante", + "shipAddress": { + "street": "Avda. Azteca 123", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5033, + "country": "Mexico" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 10, + "discount": 0 + }, + { + "productID": 33, + "unitPrice": 2.5, + "quantity": 30, + "discount": 0 + }, + { + "productID": 54, + "unitPrice": 7.45, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10925, + "customerID": "HANAR", + "employeeID": 3, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 1, + "freight": 2.27, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 36, + "unitPrice": 19, + "quantity": 25, + "discount": 0.15 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 12, + "discount": 0.15 + } + ] + }, + { + "orderID": 10926, + "customerID": "ANATR", + "employeeID": 4, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-03-11 00:00:00.000", + "shipVia": 3, + "freight": 39.92, + "shipName": "Ana Trujillo Emparedados y helados", + "shipAddress": { + "street": "Avda. de la Constitución 2222", + "city": "México D.F.", + "region": "NULL", + "postalCode": 5021, + "country": "Mexico" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 2, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 10, + "discount": 0 + }, + { + "productID": 19, + "unitPrice": 9.2, + "quantity": 7, + "discount": 0 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 10, + "discount": 0 + } + ] + }, + { + "orderID": 10927, + "customerID": "LACOR", + "employeeID": 4, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-04-08 00:00:00.000", + "shipVia": 1, + "freight": 19.79, + "shipName": "La corne d'abondance", + "shipAddress": { + "street": "67 avenue de l'Europe", + "city": "Versailles", + "region": "NULL", + "postalCode": 78000, + "country": "France" + }, + "details": [ + { + "productID": 20, + "unitPrice": 81, + "quantity": 5, + "discount": 0 + }, + { + "productID": 52, + "unitPrice": 7, + "quantity": 5, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10928, + "customerID": "GALED", + "employeeID": 1, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 1, + "freight": 1.36, + "shipName": "Galería del gastronómo", + "shipAddress": { + "street": "Rambla de Cataluña 23", + "city": "Barcelona", + "region": "NULL", + "postalCode": 8022, + "country": "Spain" + }, + "details": [ + { + "productID": 47, + "unitPrice": 9.5, + "quantity": 5, + "discount": 0 + }, + { + "productID": 76, + "unitPrice": 18, + "quantity": 5, + "discount": 0 + } + ] + }, + { + "orderID": 10929, + "customerID": "FRANK", + "employeeID": 6, + "orderDate": "1998-03-05 00:00:00.000", + "requiredDate": "1998-04-02 00:00:00.000", + "shippedDate": "1998-03-12 00:00:00.000", + "shipVia": 1, + "freight": 33.93, + "shipName": "Frankenversand", + "shipAddress": { + "street": "Berliner Platz 43", + "city": "München", + "region": "NULL", + "postalCode": 80805, + "country": "Germany" + }, + "details": [ + { + "productID": 21, + "unitPrice": 10, + "quantity": 60, + "discount": 0 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 49, + "discount": 0 + }, + { + "productID": 77, + "unitPrice": 13, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10930, + "customerID": "SUPRD", + "employeeID": 4, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-17 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 15.55, + "shipName": "Suprêmes délices", + "shipAddress": { + "street": "Boulevard Tirou 255", + "city": "Charleroi", + "region": "NULL", + "postalCode": "B-6000", + "country": "Belgium" + }, + "details": [ + { + "productID": 27, + "unitPrice": 43.9, + "quantity": 25, + "discount": 0 + }, + { + "productID": 55, + "unitPrice": 24, + "quantity": 25, + "discount": 0.2 + }, + { + "productID": 58, + "unitPrice": 13.25, + "quantity": 30, + "discount": 0.2 + }, + { + "productID": 21, + "unitPrice": 10, + "quantity": 36, + "discount": 0 + } + ] + }, + { + "orderID": 10931, + "customerID": "RICSU", + "employeeID": 4, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-03-20 00:00:00.000", + "shippedDate": "1998-03-19 00:00:00.000", + "shipVia": 2, + "freight": 13.6, + "shipName": "Richter Supermarkt", + "shipAddress": { + "street": "Starenweg 5", + "city": "Genève", + "region": "NULL", + "postalCode": 1204, + "country": "Switzerland" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 42, + "discount": 0.15 + }, + { + "productID": 57, + "unitPrice": 19.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10932, + "customerID": "BONAP", + "employeeID": 8, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-03 00:00:00.000", + "shippedDate": "1998-03-24 00:00:00.000", + "shipVia": 1, + "freight": 134.64, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 16, + "unitPrice": 17.45, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 14, + "discount": 0.1 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 16, + "discount": 0 + } + ] + }, + { + "orderID": 10933, + "customerID": "ISLAT", + "employeeID": 6, + "orderDate": "1998-03-06 00:00:00.000", + "requiredDate": "1998-04-03 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 3, + "freight": 54.15, + "shipName": "Island Trading", + "shipAddress": { + "street": "Garden House Crowther Way", + "city": "Cowes", + "region": "Isle of Wight", + "postalCode": "PO31 7PJ", + "country": "UK" + }, + "details": [ + { + "productID": 53, + "unitPrice": 32.8, + "quantity": 2, + "discount": 0 + }, + { + "productID": 61, + "unitPrice": 28.5, + "quantity": 30, + "discount": 0 + } + ] + }, + { + "orderID": 10935, + "customerID": "WELLI", + "employeeID": 4, + "orderDate": "1998-03-09 00:00:00.000", + "requiredDate": "1998-04-06 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 3, + "freight": 47.59, + "shipName": "Wellington Importadora", + "shipAddress": { + "street": "Rua do Mercado 12", + "city": "Resende", + "region": "SP", + "postalCode": "08737-363", + "country": "Brazil" + }, + "details": [ + { + "productID": 18, + "unitPrice": 62.5, + "quantity": 4, + "discount": 0.25 + }, + { + "productID": 23, + "unitPrice": 9, + "quantity": 8, + "discount": 0.25 + }, + { + "productID": 1, + "unitPrice": 18, + "quantity": 21, + "discount": 0 + } + ] + }, + { + "orderID": 10937, + "customerID": "CACTU", + "employeeID": 7, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-03-24 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 31.51, + "shipName": "Cactus Comidas para llevar", + "shipAddress": { + "street": "Cerrito 333", + "city": "Buenos Aires", + "region": "NULL", + "postalCode": 1010, + "country": "Argentina" + }, + "details": [ + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 8, + "discount": 0 + }, + { + "productID": 34, + "unitPrice": 14, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10938, + "customerID": "QUICK", + "employeeID": 3, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-03-16 00:00:00.000", + "shipVia": 2, + "freight": 31.89, + "shipName": "QUICK-Stop", + "shipAddress": { + "street": "Taucherstraße 10", + "city": "Cunewalde", + "region": "NULL", + "postalCode": 1307, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0.25 + }, + { + "productID": 43, + "unitPrice": 46, + "quantity": 24, + "discount": 0.25 + }, + { + "productID": 60, + "unitPrice": 34, + "quantity": 49, + "discount": 0.25 + }, + { + "productID": 71, + "unitPrice": 21.5, + "quantity": 35, + "discount": 0.25 + } + ] + }, + { + "orderID": 10939, + "customerID": "MAGAA", + "employeeID": 2, + "orderDate": "1998-03-10 00:00:00.000", + "requiredDate": "1998-04-07 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 2, + "freight": 76.33, + "shipName": "Magazzini Alimentari Riuniti", + "shipAddress": { + "street": "Via Ludovico il Moro 22", + "city": "Bergamo", + "region": "NULL", + "postalCode": 24100, + "country": "Italy" + }, + "details": [ + { + "productID": 2, + "unitPrice": 19, + "quantity": 10, + "discount": 0.15 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 40, + "discount": 0.15 + } + ] + }, + { + "orderID": 10940, + "customerID": "BONAP", + "employeeID": 8, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-23 00:00:00.000", + "shipVia": 3, + "freight": 19.77, + "shipName": "Bon app'", + "shipAddress": { + "street": "12 rue des Bouchers", + "city": "Marseille", + "region": "NULL", + "postalCode": 13008, + "country": "France" + }, + "details": [ + { + "productID": 7, + "unitPrice": 30, + "quantity": 8, + "discount": 0 + }, + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0 + } + ] + }, + { + "orderID": 10941, + "customerID": "SAVEA", + "employeeID": 7, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-20 00:00:00.000", + "shipVia": 2, + "freight": 400.81, + "shipName": "Save-a-lot Markets", + "shipAddress": { + "street": "187 Suffolk Ln.", + "city": "Boise", + "region": "ID", + "postalCode": 83720, + "country": "USA" + }, + "details": [ + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 44, + "discount": 0.25 + }, + { + "productID": 62, + "unitPrice": 49.3, + "quantity": 30, + "discount": 0.25 + }, + { + "productID": 68, + "unitPrice": 12.5, + "quantity": 80, + "discount": 0.25 + }, + { + "productID": 72, + "unitPrice": 34.8, + "quantity": 50, + "discount": 0 + } + ] + }, + { + "orderID": 10922, + "customerID": "HANAR", + "employeeID": 5, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-03-31 00:00:00.000", + "shippedDate": "1998-03-05 00:00:00.000", + "shipVia": 3, + "freight": 62.74, + "shipName": "Hanari Carnes", + "shipAddress": { + "street": "Rua do Paço 67", + "city": "Rio de Janeiro", + "region": "RJ", + "postalCode": "05454-876", + "country": "Brazil" + }, + "details": [ + { + "productID": 17, + "unitPrice": 39, + "quantity": 15, + "discount": 0 + }, + { + "productID": 24, + "unitPrice": 4.5, + "quantity": 35, + "discount": 0 + } + ] + }, + { + "orderID": 10923, + "customerID": "LAMAI", + "employeeID": 7, + "orderDate": "1998-03-03 00:00:00.000", + "requiredDate": "1998-04-14 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 68.26, + "shipName": "La maison d'Asie", + "shipAddress": { + "street": "1 rue Alsace-Lorraine", + "city": "Toulouse", + "region": "NULL", + "postalCode": 31000, + "country": "France" + }, + "details": [ + { + "productID": 43, + "unitPrice": 46, + "quantity": 10, + "discount": 0.2 + }, + { + "productID": 67, + "unitPrice": 14, + "quantity": 24, + "discount": 0.2 + }, + { + "productID": 42, + "unitPrice": 14, + "quantity": 10, + "discount": 0.2 + } + ] + }, + { + "orderID": 10924, + "customerID": "BERGS", + "employeeID": 3, + "orderDate": "1998-03-04 00:00:00.000", + "requiredDate": "1998-04-01 00:00:00.000", + "shippedDate": "1998-04-08 00:00:00.000", + "shipVia": 2, + "freight": 151.52, + "shipName": "Berglunds snabbköp", + "shipAddress": { + "street": "Berguvsvägen 8", + "city": "Luleå", + "region": "NULL", + "postalCode": "S-958 22", + "country": "Sweden" + }, + "details": [ + { + "productID": 10, + "unitPrice": 31, + "quantity": 20, + "discount": 0.1 + }, + { + "productID": 28, + "unitPrice": 45.6, + "quantity": 30, + "discount": 0.1 + }, + { + "productID": 75, + "unitPrice": 7.75, + "quantity": 6, + "discount": 0 + } + ] + }, + { + "orderID": 10943, + "customerID": "BSBEV", + "employeeID": 4, + "orderDate": "1998-03-11 00:00:00.000", + "requiredDate": "1998-04-08 00:00:00.000", + "shippedDate": "1998-03-19 00:00:00.000", + "shipVia": 2, + "freight": 2.17, + "shipName": "B's Beverages", + "shipAddress": { + "street": "Fauntleroy Circus", + "city": "London", + "region": "NULL", + "postalCode": "EC2 5NT", + "country": "UK" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 15, + "discount": 0 + }, + { + "productID": 22, + "unitPrice": 21, + "quantity": 21, + "discount": 0 + }, + { + "productID": 46, + "unitPrice": 12, + "quantity": 15, + "discount": 0 + } + ] + }, + { + "orderID": 10944, + "customerID": "BOTTM", + "employeeID": 6, + "orderDate": "1998-03-12 00:00:00.000", + "requiredDate": "1998-03-26 00:00:00.000", + "shippedDate": "1998-03-13 00:00:00.000", + "shipVia": 3, + "freight": 52.92, + "shipName": "Bottom-Dollar Markets", + "shipAddress": { + "street": "23 Tsawassen Blvd.", + "city": "Tsawassen", + "region": "BC", + "postalCode": "T2F 8M4", + "country": "Canada" + }, + "details": [ + { + "productID": 11, + "unitPrice": 21, + "quantity": 5, + "discount": 0.25 + }, + { + "productID": 56, + "unitPrice": 38, + "quantity": 18, + "discount": 0 + }, + { + "productID": 44, + "unitPrice": 19.45, + "quantity": 18, + "discount": 0.25 + } + ] + }, + { + "orderID": 10945, + "customerID": "MORGK", + "employeeID": 4, + "orderDate": "1998-03-12 00:00:00.000", + "requiredDate": "1998-04-09 00:00:00.000", + "shippedDate": "1998-03-18 00:00:00.000", + "shipVia": 1, + "freight": 10.22, + "shipName": "Morgenstern Gesundkost", + "shipAddress": { + "street": "Heerstr. 22", + "city": "Leipzig", + "region": "NULL", + "postalCode": 4179, + "country": "Germany" + }, + "details": [ + { + "productID": 13, + "unitPrice": 6, + "quantity": 20, + "discount": 0 + }, + { + "productID": 31, + "unitPrice": 12.5, + "quantity": 10, + "discount": 0 + } + ] + } +] diff --git a/vue-options-api-demos/grid/shared/products.json b/vue-options-api-demos/grid/shared/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/shared/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/shared/regions.json b/vue-options-api-demos/grid/shared/regions.json new file mode 100644 index 00000000..debca3d1 --- /dev/null +++ b/vue-options-api-demos/grid/shared/regions.json @@ -0,0 +1,239 @@ + +[ + { + "regionID" : 1, + "name" : "Eastern", + "territories" : [ + { + "territoryID" : 1833, + "name" : "Georgetow" + }, + { + "territoryID" : 1581, + "name" : "Westboro" + }, + { + "territoryID" : 2116, + "name" : "Boston" + }, + { + "territoryID" : 2139, + "name" : "Cambridge" + }, + { + "territoryID" : 1730, + "name" : "Bedford" + }, + { + "territoryID" : 2903, + "name" : "Providence" + }, + { + "territoryID" : 6897, + "name" : "Wilton" + }, + { + "territoryID" : 7960, + "name" : "Morristown" + }, + { + "territoryID" : 8837, + "name" : "Edison" + }, + { + "territoryID" : 10019, + "name" : "NewYork" + }, + { + "territoryID" : 10038, + "name" : "NewYork" + }, + { + "territoryID" : 11747, + "name" : "Mellvile" + }, + { + "territoryID" : 14450, + "name" : "Fairport" + }, + { + "territoryID" : 19713, + "name" : "Neward" + }, + { + "territoryID" : 2184, + "name" : "Braintree" + }, + { + "territoryID" : 20852, + "name" : "Rockville" + }, + { + "territoryID" : 27403, + "name" : "Greensboro" + }, + { + "territoryID" : 27511, + "name" : "Cary" + }, + { + "territoryID" : 40222, + "name" : "Louisville" + } + ] + }, + { + "regionID" : 2, + "name" : "Western", + "territories" : [ + { + "territoryID" : 60601, + "name" : "Chicago" + }, + { + "territoryID" : 80202, + "name" : "Denver" + }, + { + "territoryID" : 60179, + "name" : "HoffmanEstates" + }, + { + "territoryID" : 85014, + "name" : "Phoenix" + }, + { + "territoryID" : 80909, + "name" : "ColoradoSprings" + }, + { + "territoryID" : 85251, + "name" : "Scottsdale" + }, + { + "territoryID" : 90405, + "name" : "SantaMonica" + }, + { + "territoryID" : 94025, + "name" : "MenloPark" + }, + { + "territoryID" : 94105, + "name" : "SanFrancisco" + }, + { + "territoryID" : 98004, + "name" : "Bellevue" + }, + { + "territoryID" : 98052, + "name" : "Redmond" + }, + { + "territoryID" : 98104, + "name" : "Seattle" + }, + { + "territoryID" : 95008, + "name" : "Campbell" + }, + { + "territoryID" : 95054, + "name" : "SantaClara" + }, + { + "territoryID" : 95060, + "name" : "SantaCruz" + } + ] + }, + { + "regionID" : 4, + "name" : "Southern", + "territories" : [ + { + "territoryID" : 29202, + "name" : "Columbia" + }, + { + "territoryID" : 30346, + "name" : "Atlanta" + }, + { + "territoryID" : 32859, + "name" : "Orlando" + }, + { + "territoryID" : 31406, + "name" : "Savannah" + }, + { + "territoryID" : 72716, + "name" : "Bentonville" + }, + { + "territoryID" : 75234, + "name" : "Dallas" + }, + { + "territoryID" : 78759, + "name" : "Austin" + }, + { + "territoryID" : 33607, + "name" : "Tampa" + } + ] + }, + { + "regionID" : 3, + "name" : "Northern", + "territories" : [ + { + "territoryID" : 19428, + "name" : "Philadelphia" + }, + { + "territoryID" : 3801, + "name" : "Portsmouth" + }, + { + "territoryID" : 3049, + "name" : "Hollis" + }, + { + "territoryID" : 44122, + "name" : "Beachwood" + }, + { + "territoryID" : 45839, + "name" : "Findlay" + }, + { + "territoryID" : 48075, + "name" : "Southfield" + }, + { + "territoryID" : 48084, + "name" : "Troy" + }, + { + "territoryID" : 48304, + "name" : "BloomfieldHills" + }, + { + "territoryID" : 53404, + "name" : "Racine" + }, + { + "territoryID" : 55113, + "name" : "Roseville" + }, + { + "territoryID" : 55439, + "name" : "Minneapolis" + } + ] + } +] diff --git a/vue-options-api-demos/grid/shared/sample-products.js b/vue-options-api-demos/grid/shared/sample-products.js new file mode 100644 index 00000000..17c495bb --- /dev/null +++ b/vue-options-api-demos/grid/shared/sample-products.js @@ -0,0 +1,182 @@ +export const sampleProducts = [ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 8, 20) + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + }, + "FirstOrderedOn": new Date(1996, 7, 12) + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 8, 26) + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.35, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 7, 17) + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 9, 19) + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + }, + "FirstOrderedOn": new Date(1996, 7, 22) + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + }, + "FirstOrderedOn": new Date(1996, 11, 1) + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + }, + "FirstOrderedOn": new Date(1997, 1, 21) + }, + { + "ProductID": 10, + "ProductName": "Ikura", + "SupplierID": 4, + "CategoryID": 8, + "QuantityPerUnit": "12 - 200 ml jars", + "UnitPrice": 31, + "UnitsInStock": 31, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 8, + "CategoryName": "Seafood", + "Description": "Seaweed and fish" + }, + "FirstOrderedOn": new Date(1996, 8, 5) + } +]; diff --git a/vue-options-api-demos/grid/shared/shippers.json b/vue-options-api-demos/grid/shared/shippers.json new file mode 100644 index 00000000..3b4546bd --- /dev/null +++ b/vue-options-api-demos/grid/shared/shippers.json @@ -0,0 +1,18 @@ + +[ + { + "shipperID" : 1, + "companyName" : "Speedy Express", + "phone" : "(503) 555-9831" + }, + { + "shipperID" : 2, + "companyName" : "United Package", + "phone" : "(503) 555-3199" + }, + { + "shipperID" : 3, + "companyName" : "Federal Shipping", + "phone" : "(503) 555-9931" + } +] diff --git a/vue-options-api-demos/grid/shared/suppliers.json b/vue-options-api-demos/grid/shared/suppliers.json new file mode 100644 index 00000000..403a0673 --- /dev/null +++ b/vue-options-api-demos/grid/shared/suppliers.json @@ -0,0 +1,409 @@ + +[ + { + "supplierID" : 4, + "companyName" : "Tokyo Traders", + "contactName" : "Yoshi Nagase", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "9-8 Sekimai Musashino-shi", + "city" : "Tokyo", + "region" : "NULL", + "postalCode" : 100, + "country" : "Japan", + "phone" : "(03) 3555-5011" + } + }, + { + "supplierID" : 5, + "companyName" : "Cooperativa de Quesos 'Las Cabras'", + "contactName" : "Antonio del Valle Saavedra", + "contactTitle" : "Export Administrator", + "address" : { + "street" : "Calle del Rosal 4", + "city" : "Oviedo", + "region" : "Asturias", + "postalCode" : 33007, + "country" : "Spain", + "phone" : "(98) 598 76 54" + } + }, + { + "supplierID" : 6, + "companyName" : "Mayumi's", + "contactName" : "Mayumi Ohno", + "contactTitle" : "Marketing Representative", + "address" : { + "street" : "92 Setsuko Chuo-ku", + "city" : "Osaka", + "region" : "NULL", + "postalCode" : 545, + "country" : "Japan", + "phone" : "(06) 431-7877" + } + }, + { + "supplierID" : 7, + "companyName" : "Pavlova Ltd.", + "contactName" : "Ian Devling", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "74 Rose St. Moonie Ponds", + "city" : "Melbourne", + "region" : "Victoria", + "postalCode" : 3058, + "country" : "Australia", + "phone" : "(03) 444-2343" + } + }, + { + "supplierID" : 8, + "companyName" : "Specialty Biscuits Ltd.", + "contactName" : "Peter Wilson", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "29 King's Way", + "city" : "Manchester", + "region" : "NULL", + "postalCode" : "M14 GSD", + "country" : "UK", + "phone" : "(161) 555-4448" + } + }, + { + "supplierID" : 9, + "companyName" : "PB Knäckebröd AB", + "contactName" : "Lars Peterson", + "contactTitle" : "Sales Agent", + "address" : { + "street" : "Kaloadagatan 13", + "city" : "Göteborg", + "region" : "NULL", + "postalCode" : "S-345 67", + "country" : "Sweden", + "phone" : "031-987 65 43" + } + }, + { + "supplierID" : 10, + "companyName" : "Refrescos Americanas LTDA", + "contactName" : "Carlos Diaz", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Av. das Americanas 12.890", + "city" : "Sao Paulo", + "region" : "NULL", + "postalCode" : 5442, + "country" : "Brazil", + "phone" : "(11) 555 4640" + } + }, + { + "supplierID" : 11, + "companyName" : "Heli Süßwaren GmbH & Co. KG", + "contactName" : "Petra Winkler", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Tiergartenstraße 5", + "city" : "Berlin", + "region" : "NULL", + "postalCode" : 10785, + "country" : "Germany", + "phone" : "(010) 9984510" + } + }, + { + "supplierID" : 2, + "companyName" : "New Orleans Cajun Delights", + "contactName" : "Shelley Burke", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "P.O. Box 78934", + "city" : "New Orleans", + "region" : "LA", + "postalCode" : 70117, + "country" : "USA", + "phone" : "(100) 555-4822" + } + }, + { + "supplierID" : 12, + "companyName" : "Plutzer Lebensmittelgroßmärkte AG", + "contactName" : "Martin Bein", + "contactTitle" : "International Marketing Mgr.", + "address" : { + "street" : "Bogenallee 51", + "city" : "Frankfurt", + "region" : "NULL", + "postalCode" : 60439, + "country" : "Germany", + "phone" : "(069) 992755" + } + }, + { + "supplierID" : 13, + "companyName" : "Nord-Ost-Fisch Handelsgesellschaft mbH", + "contactName" : "Sven Petersen", + "contactTitle" : "Coordinator Foreign Markets", + "address" : { + "street" : "Frahmredder 112a", + "city" : "Cuxhaven", + "region" : "NULL", + "postalCode" : 27478, + "country" : "Germany", + "phone" : "(04721) 8713" + } + }, + { + "supplierID" : 14, + "companyName" : "Formaggi Fortini s.r.l.", + "contactName" : "Elio Rossi", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Viale Dante 75", + "city" : "Ravenna", + "region" : "NULL", + "postalCode" : 48100, + "country" : "Italy", + "phone" : "(0544) 60323" + } + }, + { + "supplierID" : 15, + "companyName" : "Norske Meierier", + "contactName" : "Beate Vileid", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "Hatlevegen 5", + "city" : "Sandvika", + "region" : "NULL", + "postalCode" : 1320, + "country" : "Norway", + "phone" : "(0)2-953010" + } + }, + { + "supplierID" : 1, + "companyName" : "Exotic Liquids", + "contactName" : "Charlotte Cooper", + "contactTitle" : "Purchasing Manager", + "address" : { + "street" : "49 Gilbert St.", + "city" : "London", + "region" : "NULL", + "postalCode" : "EC1 4SD", + "country" : "UK", + "phone" : "(171) 555-2222" + } + }, + { + "supplierID" : 3, + "companyName" : "Grandma Kelly's Homestead", + "contactName" : "Regina Murphy", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "707 Oxford Rd.", + "city" : "Ann Arbor", + "region" : "MI", + "postalCode" : 48104, + "country" : "USA", + "phone" : "(313) 555-5735" + } + }, + { + "supplierID" : 16, + "companyName" : "Bigfoot Breweries", + "contactName" : "Cheryl Saylor", + "contactTitle" : "Regional Account Rep.", + "address" : { + "street" : "3400 - 8th Avenue Suite 210", + "city" : "Bend", + "region" : "OR", + "postalCode" : 97101, + "country" : "USA", + "phone" : "(503) 555-9931" + } + }, + { + "supplierID" : 17, + "companyName" : "Svensk Sjöföda AB", + "contactName" : "Michael Björn", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Brovallavägen 231", + "city" : "Stockholm", + "region" : "NULL", + "postalCode" : "S-123 45", + "country" : "Sweden", + "phone" : "08-123 45 67" + } + }, + { + "supplierID" : 18, + "companyName" : "Aux joyeux ecclésiastiques", + "contactName" : "Guylène Nodier", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "203 Rue des Francs-Bourgeois", + "city" : "Paris", + "region" : "NULL", + "postalCode" : 75004, + "country" : "France", + "phone" : "(1) 03.83.00.68" + } + }, + { + "supplierID" : 19, + "companyName" : "New England Seafood Cannery", + "contactName" : "Robb Merchant", + "contactTitle" : "Wholesale Account Agent", + "address" : { + "street" : "Order Processing Dept. 2100 Paul Revere Blvd.", + "city" : "Boston", + "region" : "MA", + "postalCode" : 2134, + "country" : "USA", + "phone" : "(617) 555-3267" + } + }, + { + "supplierID" : 20, + "companyName" : "Leka Trading", + "contactName" : "Chandra Leka", + "contactTitle" : "Owner", + "address" : { + "street" : "471 Serangoon Loop Suite #402", + "city" : "Singapore", + "region" : "NULL", + "postalCode" : 512, + "country" : "Singapore", + "phone" : "555-8787" + } + }, + { + "supplierID" : 21, + "companyName" : "Lyngbysild", + "contactName" : "Niels Petersen", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "Lyngbysild Fiskebakken 10", + "city" : "Lyngby", + "region" : "NULL", + "postalCode" : 2800, + "country" : "Denmark", + "phone" : 43844108 + } + }, + { + "supplierID" : 22, + "companyName" : "Zaanse Snoepfabriek", + "contactName" : "Dirk Luchte", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "Verkoop Rijnweg 22", + "city" : "Zaandam", + "region" : "NULL", + "postalCode" : "9999 ZZ", + "country" : "Netherlands", + "phone" : "(12345) 1212" + } + }, + { + "supplierID" : 25, + "companyName" : "Ma Maison", + "contactName" : "Jean-Guy Lauzon", + "contactTitle" : "Marketing Manager", + "address" : { + "street" : "2960 Rue St. Laurent", + "city" : "Montréal", + "region" : "Québec", + "postalCode" : "H1J 1C3", + "country" : "Canada", + "phone" : "(514) 555-9022" + } + }, + { + "supplierID" : 27, + "companyName" : "Escargots Nouveaux", + "contactName" : "Marie Delamare", + "contactTitle" : "Sales Manager", + "address" : { + "street" : "22 rue H. Voiron", + "city" : "Montceau", + "region" : "NULL", + "postalCode" : 71300, + "country" : "France", + "phone" : "85.57.00.07" + } + }, + { + "supplierID" : 26, + "companyName" : "Pasta Buttini s.r.l.", + "contactName" : "Giovanni Giudici", + "contactTitle" : "Order Administrator", + "address" : { + "street" : "Via dei Gelsomini 153", + "city" : "Salerno", + "region" : "NULL", + "postalCode" : 84100, + "country" : "Italy", + "phone" : "(089) 6547665" + } + }, + { + "supplierID" : 28, + "companyName" : "Gai pâturage", + "contactName" : "Eliane Noz", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "Bat. B 3 rue des Alpes", + "city" : "Annecy", + "region" : "NULL", + "postalCode" : 74000, + "country" : "France", + "phone" : "38.76.98.06" + } + }, + { + "supplierID" : 23, + "companyName" : "Karkki Oy", + "contactName" : "Anne Heikkonen", + "contactTitle" : "Product Manager", + "address" : { + "street" : "Valtakatu 12", + "city" : "Lappeenranta", + "region" : "NULL", + "postalCode" : 53120, + "country" : "Finland", + "phone" : "(953) 10956" + } + }, + { + "supplierID" : 24, + "companyName" : "G'day Mate", + "contactName" : "Wendy Mackenzie", + "contactTitle" : "Sales Representative", + "address" : { + "street" : "170 Prince Edward Parade Hunter's Hill", + "city" : "Sydney", + "region" : "NSW", + "postalCode" : 2042, + "country" : "Australia", + "phone" : "(02) 555-5914" + } + }, + { + "supplierID" : 29, + "companyName" : "Forêts d'érables", + "contactName" : "Chantal Goulet", + "contactTitle" : "Accounting Manager", + "address" : { + "street" : "148 rue Chasseur", + "city" : "Ste-Hyacinthe", + "region" : "Québec", + "postalCode" : "J2S 7S8", + "country" : "Canada", + "phone" : "(514) 555-2955" + } + } +] diff --git a/vue-options-api-demos/grid/sorting/basic/main.js b/vue-options-api-demos/grid/sorting/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/sorting/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/sorting/basic/main.vue b/vue-options-api-demos/grid/sorting/basic/main.vue new file mode 100644 index 00000000..32647a6d --- /dev/null +++ b/vue-options-api-demos/grid/sorting/basic/main.vue @@ -0,0 +1,80 @@ + + diff --git a/vue-options-api-demos/grid/sorting/custom/main.js b/vue-options-api-demos/grid/sorting/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/sorting/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/sorting/custom/main.vue b/vue-options-api-demos/grid/sorting/custom/main.vue new file mode 100644 index 00000000..1d22ff49 --- /dev/null +++ b/vue-options-api-demos/grid/sorting/custom/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/grid/styling/styling-cell/main.js b/vue-options-api-demos/grid/styling/styling-cell/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-cell/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/styling/styling-cell/main.vue b/vue-options-api-demos/grid/styling/styling-cell/main.vue new file mode 100644 index 00000000..e3769081 --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-cell/main.vue @@ -0,0 +1,51 @@ + + diff --git a/vue-options-api-demos/grid/styling/styling-cell/products.json b/vue-options-api-demos/grid/styling/styling-cell/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-cell/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/styling/styling-class-name/main.js b/vue-options-api-demos/grid/styling/styling-class-name/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-class-name/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/styling/styling-class-name/main.vue b/vue-options-api-demos/grid/styling/styling-class-name/main.vue new file mode 100644 index 00000000..771d997c --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-class-name/main.vue @@ -0,0 +1,38 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/grid/styling/styling-class-name/products.json b/vue-options-api-demos/grid/styling/styling-class-name/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-class-name/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/styling/styling-dynamic/main.js b/vue-options-api-demos/grid/styling/styling-dynamic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-dynamic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/styling/styling-dynamic/main.vue b/vue-options-api-demos/grid/styling/styling-dynamic/main.vue new file mode 100644 index 00000000..30bf410d --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-dynamic/main.vue @@ -0,0 +1,81 @@ + + diff --git a/vue-options-api-demos/grid/styling/styling-header-cell/main.js b/vue-options-api-demos/grid/styling/styling-header-cell/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-header-cell/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/styling/styling-header-cell/main.vue b/vue-options-api-demos/grid/styling/styling-header-cell/main.vue new file mode 100644 index 00000000..3c814aa8 --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-header-cell/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/grid/styling/styling-header-cell/products.json b/vue-options-api-demos/grid/styling/styling-header-cell/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-header-cell/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/grid/styling/styling-row/main.js b/vue-options-api-demos/grid/styling/styling-row/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-row/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/grid/styling/styling-row/main.vue b/vue-options-api-demos/grid/styling/styling-row/main.vue new file mode 100644 index 00000000..e113bba7 --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-row/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/grid/styling/styling-row/products.json b/vue-options-api-demos/grid/styling/styling-row/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/grid/styling/styling-row/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/indicators/badge/alignment/main.js b/vue-options-api-demos/indicators/badge/alignment/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/alignment/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/alignment/main.vue b/vue-options-api-demos/indicators/badge/alignment/main.vue new file mode 100644 index 00000000..1d6cd1f4 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/alignment/main.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/container/main.js b/vue-options-api-demos/indicators/badge/container/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/container/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/container/main.vue b/vue-options-api-demos/indicators/badge/container/main.vue new file mode 100644 index 00000000..c9840866 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/container/main.vue @@ -0,0 +1,131 @@ + + + + diff --git a/vue-options-api-demos/indicators/badge/cutout-border/main.js b/vue-options-api-demos/indicators/badge/cutout-border/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/cutout-border/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/cutout-border/main.vue b/vue-options-api-demos/indicators/badge/cutout-border/main.vue new file mode 100644 index 00000000..f3368667 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/cutout-border/main.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/fill/main.js b/vue-options-api-demos/indicators/badge/fill/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/fill/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/fill/main.vue b/vue-options-api-demos/indicators/badge/fill/main.vue new file mode 100644 index 00000000..b7da64a5 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/fill/main.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/overview/Contacts.vue b/vue-options-api-demos/indicators/badge/overview/Contacts.vue new file mode 100644 index 00000000..2d42d412 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/overview/Contacts.vue @@ -0,0 +1,133 @@ + + + + diff --git a/vue-options-api-demos/indicators/badge/overview/SocialApps.vue b/vue-options-api-demos/indicators/badge/overview/SocialApps.vue new file mode 100644 index 00000000..e6cedbdd --- /dev/null +++ b/vue-options-api-demos/indicators/badge/overview/SocialApps.vue @@ -0,0 +1,66 @@ + + + + diff --git a/vue-options-api-demos/indicators/badge/overview/Status.vue b/vue-options-api-demos/indicators/badge/overview/Status.vue new file mode 100644 index 00000000..4822c1a9 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/overview/Status.vue @@ -0,0 +1,45 @@ + + + + diff --git a/vue-options-api-demos/indicators/badge/overview/main.js b/vue-options-api-demos/indicators/badge/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/overview/main.vue b/vue-options-api-demos/indicators/badge/overview/main.vue new file mode 100644 index 00000000..8cf2e1a9 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/overview/main.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/position/main.js b/vue-options-api-demos/indicators/badge/position/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/position/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/position/main.vue b/vue-options-api-demos/indicators/badge/position/main.vue new file mode 100644 index 00000000..fe18ce7a --- /dev/null +++ b/vue-options-api-demos/indicators/badge/position/main.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/positioning/main.js b/vue-options-api-demos/indicators/badge/positioning/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/positioning/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/positioning/main.vue b/vue-options-api-demos/indicators/badge/positioning/main.vue new file mode 100644 index 00000000..42bdf20f --- /dev/null +++ b/vue-options-api-demos/indicators/badge/positioning/main.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/rounded/main.js b/vue-options-api-demos/indicators/badge/rounded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/rounded/main.vue b/vue-options-api-demos/indicators/badge/rounded/main.vue new file mode 100644 index 00000000..0c2ebffe --- /dev/null +++ b/vue-options-api-demos/indicators/badge/rounded/main.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/size/main.js b/vue-options-api-demos/indicators/badge/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/size/main.vue b/vue-options-api-demos/indicators/badge/size/main.vue new file mode 100644 index 00000000..6d02d371 --- /dev/null +++ b/vue-options-api-demos/indicators/badge/size/main.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/vue-options-api-demos/indicators/badge/theme-color/main.js b/vue-options-api-demos/indicators/badge/theme-color/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/badge/theme-color/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/badge/theme-color/main.vue b/vue-options-api-demos/indicators/badge/theme-color/main.vue new file mode 100644 index 00000000..3a72527b --- /dev/null +++ b/vue-options-api-demos/indicators/badge/theme-color/main.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/vue-options-api-demos/indicators/get-started/main.js b/vue-options-api-demos/indicators/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/get-started/main.vue b/vue-options-api-demos/indicators/get-started/main.vue new file mode 100644 index 00000000..1b36f37f --- /dev/null +++ b/vue-options-api-demos/indicators/get-started/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/indicators/globalization/main.js b/vue-options-api-demos/indicators/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/globalization/main.vue b/vue-options-api-demos/indicators/globalization/main.vue new file mode 100644 index 00000000..67d521cf --- /dev/null +++ b/vue-options-api-demos/indicators/globalization/main.vue @@ -0,0 +1,145 @@ + + + diff --git a/vue-options-api-demos/indicators/loader/overview/main.js b/vue-options-api-demos/indicators/loader/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/loader/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/loader/overview/main.vue b/vue-options-api-demos/indicators/loader/overview/main.vue new file mode 100644 index 00000000..29e6a231 --- /dev/null +++ b/vue-options-api-demos/indicators/loader/overview/main.vue @@ -0,0 +1,53 @@ + + diff --git a/vue-options-api-demos/indicators/loader/size/main.js b/vue-options-api-demos/indicators/loader/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/loader/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/loader/size/main.vue b/vue-options-api-demos/indicators/loader/size/main.vue new file mode 100644 index 00000000..42b8988f --- /dev/null +++ b/vue-options-api-demos/indicators/loader/size/main.vue @@ -0,0 +1,22 @@ + + + diff --git a/vue-options-api-demos/indicators/loader/theme-color/main.js b/vue-options-api-demos/indicators/loader/theme-color/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/loader/theme-color/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/loader/theme-color/main.vue b/vue-options-api-demos/indicators/loader/theme-color/main.vue new file mode 100644 index 00000000..0350c18e --- /dev/null +++ b/vue-options-api-demos/indicators/loader/theme-color/main.vue @@ -0,0 +1,51 @@ + + + + diff --git a/vue-options-api-demos/indicators/loader/type/main.js b/vue-options-api-demos/indicators/loader/type/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/loader/type/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/loader/type/main.vue b/vue-options-api-demos/indicators/loader/type/main.vue new file mode 100644 index 00000000..46da22a1 --- /dev/null +++ b/vue-options-api-demos/indicators/loader/type/main.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue-options-api-demos/indicators/overview/main.js b/vue-options-api-demos/indicators/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/overview/main.vue b/vue-options-api-demos/indicators/overview/main.vue new file mode 100644 index 00000000..d67e8884 --- /dev/null +++ b/vue-options-api-demos/indicators/overview/main.vue @@ -0,0 +1,177 @@ + + + + diff --git a/vue-options-api-demos/indicators/skeleton/animation/main.js b/vue-options-api-demos/indicators/skeleton/animation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/animation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/skeleton/animation/main.vue b/vue-options-api-demos/indicators/skeleton/animation/main.vue new file mode 100644 index 00000000..e353a92c --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/animation/main.vue @@ -0,0 +1,175 @@ + + diff --git a/vue-options-api-demos/indicators/skeleton/dynamic/main.js b/vue-options-api-demos/indicators/skeleton/dynamic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/dynamic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/skeleton/dynamic/main.vue b/vue-options-api-demos/indicators/skeleton/dynamic/main.vue new file mode 100644 index 00000000..6c5fefd9 --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/dynamic/main.vue @@ -0,0 +1,133 @@ + + diff --git a/vue-options-api-demos/indicators/skeleton/overview/main.js b/vue-options-api-demos/indicators/skeleton/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/skeleton/overview/main.vue b/vue-options-api-demos/indicators/skeleton/overview/main.vue new file mode 100644 index 00000000..a94e97be --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/overview/main.vue @@ -0,0 +1,125 @@ + + diff --git a/vue-options-api-demos/indicators/skeleton/shape/main.js b/vue-options-api-demos/indicators/skeleton/shape/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/shape/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/indicators/skeleton/shape/main.vue b/vue-options-api-demos/indicators/skeleton/shape/main.vue new file mode 100644 index 00000000..b1ea192c --- /dev/null +++ b/vue-options-api-demos/indicators/skeleton/shape/main.vue @@ -0,0 +1,54 @@ + + diff --git a/vue-options-api-demos/inputs/basic/main.js b/vue-options-api-demos/inputs/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/basic/main.vue b/vue-options-api-demos/inputs/basic/main.vue new file mode 100644 index 00000000..243dbbc8 --- /dev/null +++ b/vue-options-api-demos/inputs/basic/main.vue @@ -0,0 +1,126 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/appearance/configurator/CheckboxStyleConfigurator.vue b/vue-options-api-demos/inputs/checkbox/appearance/configurator/CheckboxStyleConfigurator.vue new file mode 100644 index 00000000..cb2341a7 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/appearance/configurator/CheckboxStyleConfigurator.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.js b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.vue b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.vue new file mode 100644 index 00000000..aea89a62 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.js b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.vue b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.vue new file mode 100644 index 00000000..f7981983 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.vue @@ -0,0 +1,56 @@ + + + + diff --git a/vue-options-api-demos/inputs/checkbox/appearance/size/main.js b/vue-options-api-demos/inputs/checkbox/appearance/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/appearance/size/main.vue b/vue-options-api-demos/inputs/checkbox/appearance/size/main.vue new file mode 100644 index 00000000..dbc7de11 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/appearance/size/main.vue @@ -0,0 +1,49 @@ + + + + diff --git a/vue-options-api-demos/inputs/checkbox/controlled/checked/main.js b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/controlled/checked/main.vue b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.vue new file mode 100644 index 00000000..eb2ed0f1 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.vue @@ -0,0 +1,44 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/controlled/value/main.js b/vue-options-api-demos/inputs/checkbox/controlled/value/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/controlled/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/controlled/value/main.vue b/vue-options-api-demos/inputs/checkbox/controlled/value/main.vue new file mode 100644 index 00000000..8057bb4b --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/controlled/value/main.vue @@ -0,0 +1,44 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/default/main.js b/vue-options-api-demos/inputs/checkbox/default/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/default/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/default/main.vue b/vue-options-api-demos/inputs/checkbox/default/main.vue new file mode 100644 index 00000000..55318496 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/default/main.vue @@ -0,0 +1,15 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/disabled/main.js b/vue-options-api-demos/inputs/checkbox/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/disabled/main.vue b/vue-options-api-demos/inputs/checkbox/disabled/main.vue new file mode 100644 index 00000000..97f8d452 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/disabled/main.vue @@ -0,0 +1,17 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/form/basic/main.js b/vue-options-api-demos/inputs/checkbox/form/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/form/basic/main.vue b/vue-options-api-demos/inputs/checkbox/form/basic/main.vue new file mode 100644 index 00000000..3c4dbaff --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/basic/main.vue @@ -0,0 +1,76 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/form/custom-message/main.js b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/form/custom-message/main.vue b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.vue new file mode 100644 index 00000000..ddcf6bc6 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.vue @@ -0,0 +1,83 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.js b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.vue b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.vue new file mode 100644 index 00000000..6a552097 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.vue @@ -0,0 +1,85 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormCheckbox.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormContent.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormContent.vue new file mode 100644 index 00000000..07505af6 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormContent.vue @@ -0,0 +1,106 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormInput.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormInput.vue new file mode 100644 index 00000000..47972c76 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormInput.vue @@ -0,0 +1,94 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.js b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/form/override/main.js b/vue-options-api-demos/inputs/checkbox/form/override/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/form/override/main.vue b/vue-options-api-demos/inputs/checkbox/form/override/main.vue new file mode 100644 index 00000000..abbf4687 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/form/override/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/inputs/checkbox/keyboard/main.js b/vue-options-api-demos/inputs/checkbox/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/keyboard/main.vue b/vue-options-api-demos/inputs/checkbox/keyboard/main.vue new file mode 100644 index 00000000..4778853d --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/keyboard/main.vue @@ -0,0 +1,20 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/labels/custom/main.js b/vue-options-api-demos/inputs/checkbox/labels/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/labels/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/labels/custom/main.vue b/vue-options-api-demos/inputs/checkbox/labels/custom/main.vue new file mode 100644 index 00000000..10689281 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/labels/custom/main.vue @@ -0,0 +1,26 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/labels/setup/main.js b/vue-options-api-demos/inputs/checkbox/labels/setup/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/labels/setup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/labels/setup/main.vue b/vue-options-api-demos/inputs/checkbox/labels/setup/main.vue new file mode 100644 index 00000000..22a4038c --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/labels/setup/main.vue @@ -0,0 +1,22 @@ + + + diff --git a/vue-options-api-demos/inputs/checkbox/main/main.js b/vue-options-api-demos/inputs/checkbox/main/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/main/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/checkbox/main/main.vue b/vue-options-api-demos/inputs/checkbox/main/main.vue new file mode 100644 index 00000000..277d0715 --- /dev/null +++ b/vue-options-api-demos/inputs/checkbox/main/main.vue @@ -0,0 +1,20 @@ + + + diff --git a/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.js b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.vue b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.vue new file mode 100644 index 00000000..c51c167c --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.vue @@ -0,0 +1,43 @@ + + diff --git a/vue-options-api-demos/inputs/colorgradient/controlled/main.js b/vue-options-api-demos/inputs/colorgradient/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorgradient/controlled/main.vue b/vue-options-api-demos/inputs/colorgradient/controlled/main.vue new file mode 100644 index 00000000..9bf1dea3 --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/controlled/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/inputs/colorgradient/disabled/main.js b/vue-options-api-demos/inputs/colorgradient/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorgradient/disabled/main.vue b/vue-options-api-demos/inputs/colorgradient/disabled/main.vue new file mode 100644 index 00000000..d303f0a5 --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/disabled/main.vue @@ -0,0 +1,19 @@ + + diff --git a/vue-options-api-demos/inputs/colorgradient/events/Logger.vue b/vue-options-api-demos/inputs/colorgradient/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/colorgradient/events/main.js b/vue-options-api-demos/inputs/colorgradient/events/main.js new file mode 100644 index 00000000..1f1c6c86 --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') + diff --git a/vue-options-api-demos/inputs/colorgradient/events/main.vue b/vue-options-api-demos/inputs/colorgradient/events/main.vue new file mode 100644 index 00000000..195215e6 --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/events/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/inputs/colorgradient/keyboard/main.js b/vue-options-api-demos/inputs/colorgradient/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorgradient/keyboard/main.vue b/vue-options-api-demos/inputs/colorgradient/keyboard/main.vue new file mode 100644 index 00000000..21fc51c9 --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/keyboard/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/colorgradient/opacity/main.js b/vue-options-api-demos/inputs/colorgradient/opacity/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/opacity/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorgradient/opacity/main.vue b/vue-options-api-demos/inputs/colorgradient/opacity/main.vue new file mode 100644 index 00000000..af77ecf9 --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/opacity/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/inputs/colorgradient/overview/main.js b/vue-options-api-demos/inputs/colorgradient/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorgradient/overview/main.vue b/vue-options-api-demos/inputs/colorgradient/overview/main.vue new file mode 100644 index 00000000..fcd2a2dc --- /dev/null +++ b/vue-options-api-demos/inputs/colorgradient/overview/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/inputs/colorpalette/controlled/main.js b/vue-options-api-demos/inputs/colorpalette/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpalette/controlled/main.vue b/vue-options-api-demos/inputs/colorpalette/controlled/main.vue new file mode 100644 index 00000000..55d3a97c --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/controlled/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/inputs/colorpalette/custom/main.js b/vue-options-api-demos/inputs/colorpalette/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpalette/custom/main.vue b/vue-options-api-demos/inputs/colorpalette/custom/main.vue new file mode 100644 index 00000000..f1232ad1 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/custom/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/inputs/colorpalette/disabled/main.js b/vue-options-api-demos/inputs/colorpalette/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpalette/disabled/main.vue b/vue-options-api-demos/inputs/colorpalette/disabled/main.vue new file mode 100644 index 00000000..3f94de29 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/disabled/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/colorpalette/keyboard/main.js b/vue-options-api-demos/inputs/colorpalette/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpalette/keyboard/main.vue b/vue-options-api-demos/inputs/colorpalette/keyboard/main.vue new file mode 100644 index 00000000..e83327c3 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/keyboard/main.vue @@ -0,0 +1,26 @@ + + diff --git a/vue-options-api-demos/inputs/colorpalette/overview/basic/main.js b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpalette/overview/basic/main.vue b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.vue new file mode 100644 index 00000000..2546f633 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/inputs/colorpalette/overview/basic/styles.css b/vue-options-api-demos/inputs/colorpalette/overview/basic/styles.css new file mode 100644 index 00000000..f7de5d25 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/overview/basic/styles.css @@ -0,0 +1,56 @@ +.example { + display: flex; + justify-content: space-evenly; + align-items: center; + margin: 0 auto; + width: 700px; + color: #44403f; + } + .k-colorpalette .k-item { + border-radius: 50%; + } + .description { + width: 340px; + margin-top: 35px; + align-self: flex-start; + } + h1 { + font-size: 32px; + font-weight: bold; + margin-bottom: 20px; + } + p { + font-size: 20px; + letter-spacing: 0.025em; + margin-bottom: 0; + } + .description span { + color: #8e8682; + display: block; + font-size: 13px; + } + .selected-color { + margin: 40px 0 10px 0; + } + .img { + width: 100%; + height: 480px; + margin-right: 10px; + background-size: cover; + background-image: url("https://demos.telerik.com/kendo-vue-ui/assets/inputs/colorpalette/demo-img.png"); + } + button { + display: block; + background: transparent; + color: #44403f; + border-color: currentColor; + width: 200px; + margin-top: 40px; + padding: 8px; + font-size: 20px; + } + button:hover { + background: #0083ff; + color: #fff; + border-color: currentColor; + } diff --git a/vue-options-api-demos/inputs/colorpalette/overview/events/Logger.vue b/vue-options-api-demos/inputs/colorpalette/overview/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/overview/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/colorpalette/overview/events/main.js b/vue-options-api-demos/inputs/colorpalette/overview/events/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/overview/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpalette/overview/events/main.vue b/vue-options-api-demos/inputs/colorpalette/overview/events/main.vue new file mode 100644 index 00000000..724fd12f --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/overview/events/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/inputs/colorpalette/presets/main.js b/vue-options-api-demos/inputs/colorpalette/presets/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/presets/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpalette/presets/main.vue b/vue-options-api-demos/inputs/colorpalette/presets/main.vue new file mode 100644 index 00000000..10205af8 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpalette/presets/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.js b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.vue b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.vue new file mode 100644 index 00000000..a438c3e9 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/appearance/ColorPickerConfigurator.vue b/vue-options-api-demos/inputs/colorpicker/appearance/ColorPickerConfigurator.vue new file mode 100644 index 00000000..6301fe82 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/appearance/ColorPickerConfigurator.vue @@ -0,0 +1,105 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/colorpicker/appearance/main.js b/vue-options-api-demos/inputs/colorpicker/appearance/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/appearance/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/appearance/main.vue b/vue-options-api-demos/inputs/colorpicker/appearance/main.vue new file mode 100644 index 00000000..1bb9a867 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/appearance/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.js b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.vue b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.vue new file mode 100644 index 00000000..9e6254ec --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.js b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.vue b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.vue new file mode 100644 index 00000000..16b034d6 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/value/main.js b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/value/main.vue b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.vue new file mode 100644 index 00000000..80832f6d --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.js b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.vue new file mode 100644 index 00000000..09e0d0a1 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.js b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.vue new file mode 100644 index 00000000..d2639f46 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.vue @@ -0,0 +1,26 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.js b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.vue new file mode 100644 index 00000000..63a95d75 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/custom/palette/main.js b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/custom/palette/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.vue new file mode 100644 index 00000000..7bcd10a1 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/default/main.js b/vue-options-api-demos/inputs/colorpicker/default/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/default/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/default/main.vue b/vue-options-api-demos/inputs/colorpicker/default/main.vue new file mode 100644 index 00000000..b4d57e97 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/default/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/disabled/main.js b/vue-options-api-demos/inputs/colorpicker/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/disabled/main.vue b/vue-options-api-demos/inputs/colorpicker/disabled/main.vue new file mode 100644 index 00000000..502256e8 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/disabled/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/events/Logger.vue b/vue-options-api-demos/inputs/colorpicker/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/colorpicker/events/main.js b/vue-options-api-demos/inputs/colorpicker/events/main.js new file mode 100644 index 00000000..1f1c6c86 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') + diff --git a/vue-options-api-demos/inputs/colorpicker/events/main.vue b/vue-options-api-demos/inputs/colorpicker/events/main.vue new file mode 100644 index 00000000..79a2e99e --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/events/main.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/keyboard/main.js b/vue-options-api-demos/inputs/colorpicker/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/keyboard/main.vue b/vue-options-api-demos/inputs/colorpicker/keyboard/main.vue new file mode 100644 index 00000000..986ae8e1 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/keyboard/main.vue @@ -0,0 +1,26 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/overview/main.js b/vue-options-api-demos/inputs/colorpicker/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/overview/main.vue b/vue-options-api-demos/inputs/colorpicker/overview/main.vue new file mode 100644 index 00000000..4c71221d --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/overview/main.vue @@ -0,0 +1,28 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/view/combined/main.js b/vue-options-api-demos/inputs/colorpicker/view/combined/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/view/combined/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/view/combined/main.vue b/vue-options-api-demos/inputs/colorpicker/view/combined/main.vue new file mode 100644 index 00000000..179364a9 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/view/combined/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/inputs/colorpicker/view/popup/main.js b/vue-options-api-demos/inputs/colorpicker/view/popup/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/view/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/colorpicker/view/popup/main.vue b/vue-options-api-demos/inputs/colorpicker/view/popup/main.vue new file mode 100644 index 00000000..ea150f69 --- /dev/null +++ b/vue-options-api-demos/inputs/colorpicker/view/popup/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/inputs/common/es.json b/vue-options-api-demos/inputs/common/es.json new file mode 100644 index 00000000..45ec5932 --- /dev/null +++ b/vue-options-api-demos/inputs/common/es.json @@ -0,0 +1,6 @@ +{ + "numerictextbox": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + } +} diff --git a/vue-options-api-demos/inputs/flatcolorpicker/basic/main.js b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/flatcolorpicker/basic/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.vue new file mode 100644 index 00000000..4f3633c2 --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.js b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.vue new file mode 100644 index 00000000..5afb1e7d --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.js b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.vue new file mode 100644 index 00000000..da4fdf61 --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.js b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.vue new file mode 100644 index 00000000..5df9c1d3 --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/flatcolorpicker/events/Logger.vue b/vue-options-api-demos/inputs/flatcolorpicker/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/flatcolorpicker/events/main.js b/vue-options-api-demos/inputs/flatcolorpicker/events/main.js new file mode 100644 index 00000000..1f1c6c86 --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') + diff --git a/vue-options-api-demos/inputs/flatcolorpicker/events/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/events/main.vue new file mode 100644 index 00000000..bd19240c --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/events/main.vue @@ -0,0 +1,45 @@ + + diff --git a/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.js b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.vue new file mode 100644 index 00000000..9e67683e --- /dev/null +++ b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.vue @@ -0,0 +1,19 @@ + + diff --git a/vue-options-api-demos/inputs/floating-labels/main.js b/vue-options-api-demos/inputs/floating-labels/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/floating-labels/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/floating-labels/main.vue b/vue-options-api-demos/inputs/floating-labels/main.vue new file mode 100644 index 00000000..c908a7d1 --- /dev/null +++ b/vue-options-api-demos/inputs/floating-labels/main.vue @@ -0,0 +1,59 @@ + + diff --git a/vue-options-api-demos/inputs/get-started/main.js b/vue-options-api-demos/inputs/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/get-started/main.vue b/vue-options-api-demos/inputs/get-started/main.vue new file mode 100644 index 00000000..505c36bb --- /dev/null +++ b/vue-options-api-demos/inputs/get-started/main.vue @@ -0,0 +1,14 @@ + + diff --git a/vue-options-api-demos/inputs/globalization/es.json b/vue-options-api-demos/inputs/globalization/es.json new file mode 100644 index 00000000..efa4e824 --- /dev/null +++ b/vue-options-api-demos/inputs/globalization/es.json @@ -0,0 +1,11 @@ +{ + "numerictextbox": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "slider": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor", + "dragTitle": "arrastrar" + } +} diff --git a/vue-options-api-demos/inputs/globalization/main.js b/vue-options-api-demos/inputs/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/globalization/main.vue b/vue-options-api-demos/inputs/globalization/main.vue new file mode 100644 index 00000000..8f984eaf --- /dev/null +++ b/vue-options-api-demos/inputs/globalization/main.vue @@ -0,0 +1,54 @@ + + diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator copy.vue b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator copy.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator copy.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator.vue b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/main.js b/vue-options-api-demos/inputs/input/appearance/configurator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/main.vue b/vue-options-api-demos/inputs/input/appearance/configurator/main.vue new file mode 100644 index 00000000..060176cd --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/configurator/main.vue @@ -0,0 +1,42 @@ + + diff --git a/vue-options-api-demos/inputs/input/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.vue new file mode 100644 index 00000000..d00c0120 --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.vue @@ -0,0 +1,54 @@ + + + + diff --git a/vue-options-api-demos/inputs/input/appearance/rounded/main.js b/vue-options-api-demos/inputs/input/appearance/rounded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/appearance/rounded/main.vue b/vue-options-api-demos/inputs/input/appearance/rounded/main.vue new file mode 100644 index 00000000..b783521b --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/rounded/main.vue @@ -0,0 +1,58 @@ + + + + diff --git a/vue-options-api-demos/inputs/input/appearance/size/main.js b/vue-options-api-demos/inputs/input/appearance/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/appearance/size/main.vue b/vue-options-api-demos/inputs/input/appearance/size/main.vue new file mode 100644 index 00000000..c4c1037a --- /dev/null +++ b/vue-options-api-demos/inputs/input/appearance/size/main.vue @@ -0,0 +1,53 @@ + + + + diff --git a/vue-options-api-demos/inputs/input/basic/main.js b/vue-options-api-demos/inputs/input/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/basic/main.vue b/vue-options-api-demos/inputs/input/basic/main.vue new file mode 100644 index 00000000..fc2e9f3a --- /dev/null +++ b/vue-options-api-demos/inputs/input/basic/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/inputs/input/forms/basic/main.js b/vue-options-api-demos/inputs/input/forms/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/forms/basic/main.vue b/vue-options-api-demos/inputs/input/forms/basic/main.vue new file mode 100644 index 00000000..357f63c8 --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/basic/main.vue @@ -0,0 +1,83 @@ + + diff --git a/vue-options-api-demos/inputs/input/forms/custom-message/main.js b/vue-options-api-demos/inputs/input/forms/custom-message/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/forms/custom-message/main.vue b/vue-options-api-demos/inputs/input/forms/custom-message/main.vue new file mode 100644 index 00000000..166e664f --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/custom-message/main.vue @@ -0,0 +1,88 @@ + + diff --git a/vue-options-api-demos/inputs/input/forms/disable-styles/main.js b/vue-options-api-demos/inputs/input/forms/disable-styles/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/forms/disable-styles/main.vue b/vue-options-api-demos/inputs/input/forms/disable-styles/main.vue new file mode 100644 index 00000000..0898b436 --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/disable-styles/main.vue @@ -0,0 +1,84 @@ + + diff --git a/vue-options-api-demos/inputs/input/forms/override/main.js b/vue-options-api-demos/inputs/input/forms/override/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/input/forms/override/main.vue b/vue-options-api-demos/inputs/input/forms/override/main.vue new file mode 100644 index 00000000..2b20c074 --- /dev/null +++ b/vue-options-api-demos/inputs/input/forms/override/main.vue @@ -0,0 +1,99 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.vue new file mode 100644 index 00000000..68637c14 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/InputIcons.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/InputIcons.vue new file mode 100644 index 00000000..f1df8505 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/InputIcons.vue @@ -0,0 +1,24 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.vue new file mode 100644 index 00000000..6a4cf2e5 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.vue @@ -0,0 +1,43 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.vue new file mode 100644 index 00000000..28f3823e --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.vue new file mode 100644 index 00000000..6b59ba84 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/InputIcons.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/InputIcons.vue new file mode 100644 index 00000000..b00e1cc0 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/InputIcons.vue @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.vue new file mode 100644 index 00000000..4205e44b --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.vue new file mode 100644 index 00000000..532f500d --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.vue new file mode 100644 index 00000000..ae5599e1 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.vue new file mode 100644 index 00000000..a4c45fc4 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/MaskedTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/MaskedTextBoxStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/MaskedTextBoxStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.vue new file mode 100644 index 00000000..740aa7d8 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.vue new file mode 100644 index 00000000..1a474b34 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.vue @@ -0,0 +1,71 @@ + + + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.vue new file mode 100644 index 00000000..2ca7ce35 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.vue @@ -0,0 +1,80 @@ + + + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.vue new file mode 100644 index 00000000..c395407a --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.vue @@ -0,0 +1,70 @@ + + + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/basic/main.js b/vue-options-api-demos/inputs/maskedtextbox/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/basic/main.vue b/vue-options-api-demos/inputs/maskedtextbox/basic/main.vue new file mode 100644 index 00000000..f306f01e --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/basic/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/disabled/main.js b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/disabled/main.vue b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.vue new file mode 100644 index 00000000..43abb2c4 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.vue new file mode 100644 index 00000000..406500a1 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.vue @@ -0,0 +1,75 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.vue new file mode 100644 index 00000000..7ab86e4a --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.vue @@ -0,0 +1,72 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.vue new file mode 100644 index 00000000..ac8cc1a1 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.vue @@ -0,0 +1,80 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.vue new file mode 100644 index 00000000..5a97a19e --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.vue @@ -0,0 +1,78 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.js b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.vue b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.vue new file mode 100644 index 00000000..2b04f93c --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.vue @@ -0,0 +1,76 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.js b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.vue b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.vue new file mode 100644 index 00000000..b16c9a0a --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.js b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.vue b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.vue new file mode 100644 index 00000000..5c397425 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/readonly/main.js b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/readonly/main.vue b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.vue new file mode 100644 index 00000000..0af7d65f --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.js b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.vue b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.vue new file mode 100644 index 00000000..4dcedcf5 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/inputs/maskedtextbox/value/main.js b/vue-options-api-demos/inputs/maskedtextbox/value/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/maskedtextbox/value/main.vue b/vue-options-api-demos/inputs/maskedtextbox/value/main.vue new file mode 100644 index 00000000..6b0941f5 --- /dev/null +++ b/vue-options-api-demos/inputs/maskedtextbox/value/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.vue new file mode 100644 index 00000000..62d331fe --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/InputIcons.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/InputIcons.vue new file mode 100644 index 00000000..b00e1cc0 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/InputIcons.vue @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.vue new file mode 100644 index 00000000..b4b56641 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.vue new file mode 100644 index 00000000..8aa41600 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.vue new file mode 100644 index 00000000..979a526b --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/InputIcons.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/InputIcons.vue new file mode 100644 index 00000000..b00e1cc0 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/InputIcons.vue @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.vue new file mode 100644 index 00000000..4688c047 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.vue new file mode 100644 index 00000000..3c480f43 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.vue new file mode 100644 index 00000000..3362213b --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.vue @@ -0,0 +1,17 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.vue new file mode 100644 index 00000000..7b24e232 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/NumericTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/NumericTextBoxStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/NumericTextBoxStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.vue new file mode 100644 index 00000000..c3e11df9 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.vue new file mode 100644 index 00000000..6b58cbd3 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.vue @@ -0,0 +1,54 @@ + + + + diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.vue new file mode 100644 index 00000000..21562787 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.vue @@ -0,0 +1,58 @@ + + + + diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.vue new file mode 100644 index 00000000..58cecfca --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.vue @@ -0,0 +1,53 @@ + + + + diff --git a/vue-options-api-demos/inputs/numerictextbox/basic/main.js b/vue-options-api-demos/inputs/numerictextbox/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/basic/main.vue b/vue-options-api-demos/inputs/numerictextbox/basic/main.vue new file mode 100644 index 00000000..3e22cb6f --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/basic/main.vue @@ -0,0 +1,52 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.js b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.vue b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.vue new file mode 100644 index 00000000..2f33c893 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/formats/main.js b/vue-options-api-demos/inputs/numerictextbox/formats/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/formats/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/formats/main.vue b/vue-options-api-demos/inputs/numerictextbox/formats/main.vue new file mode 100644 index 00000000..0c206e83 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/formats/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.vue new file mode 100644 index 00000000..ace2740b --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.vue @@ -0,0 +1,72 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.vue new file mode 100644 index 00000000..ab5f5608 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.vue @@ -0,0 +1,78 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.vue new file mode 100644 index 00000000..b0b3e8cf --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.vue @@ -0,0 +1,81 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/override/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/override/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.vue new file mode 100644 index 00000000..9656b17a --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.vue @@ -0,0 +1,91 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/input-mode/main.js b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/input-mode/main.vue b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.vue new file mode 100644 index 00000000..0da4efe5 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.vue @@ -0,0 +1,52 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/keyboard/main.js b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/keyboard/main.vue b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.vue new file mode 100644 index 00000000..26de86a5 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.vue @@ -0,0 +1,18 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.js b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.vue b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.vue new file mode 100644 index 00000000..b54813bb --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.vue @@ -0,0 +1,19 @@ + + diff --git a/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.js b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.vue b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.vue new file mode 100644 index 00000000..e943f397 --- /dev/null +++ b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.vue @@ -0,0 +1,20 @@ + + diff --git a/vue-options-api-demos/inputs/radiobutton/appearance/main.js b/vue-options-api-demos/inputs/radiobutton/appearance/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/appearance/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiobutton/appearance/main.vue b/vue-options-api-demos/inputs/radiobutton/appearance/main.vue new file mode 100644 index 00000000..23d017ac --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/appearance/main.vue @@ -0,0 +1,49 @@ + + + + diff --git a/vue-options-api-demos/inputs/radiobutton/disabled/main.js b/vue-options-api-demos/inputs/radiobutton/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiobutton/disabled/main.vue b/vue-options-api-demos/inputs/radiobutton/disabled/main.vue new file mode 100644 index 00000000..b7ce62d7 --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/disabled/main.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.js b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.vue b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.vue new file mode 100644 index 00000000..6e3c9574 --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.vue @@ -0,0 +1,50 @@ + + + diff --git a/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.js b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.vue b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.vue new file mode 100644 index 00000000..36f5957e --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.vue @@ -0,0 +1,26 @@ + + + diff --git a/vue-options-api-demos/inputs/radiobutton/overview/main.js b/vue-options-api-demos/inputs/radiobutton/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiobutton/overview/main.vue b/vue-options-api-demos/inputs/radiobutton/overview/main.vue new file mode 100644 index 00000000..49e5c5e9 --- /dev/null +++ b/vue-options-api-demos/inputs/radiobutton/overview/main.vue @@ -0,0 +1,45 @@ + + + diff --git a/vue-options-api-demos/inputs/radiogroup/controlled/main.js b/vue-options-api-demos/inputs/radiogroup/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiogroup/controlled/main.vue b/vue-options-api-demos/inputs/radiogroup/controlled/main.vue new file mode 100644 index 00000000..a1f237e9 --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/controlled/main.vue @@ -0,0 +1,65 @@ + + diff --git a/vue-options-api-demos/inputs/radiogroup/default-state/main.js b/vue-options-api-demos/inputs/radiogroup/default-state/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/default-state/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiogroup/default-state/main.vue b/vue-options-api-demos/inputs/radiogroup/default-state/main.vue new file mode 100644 index 00000000..4f7529c8 --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/default-state/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/inputs/radiogroup/forms/FormContent.vue b/vue-options-api-demos/inputs/radiogroup/forms/FormContent.vue new file mode 100644 index 00000000..fc044241 --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/forms/FormContent.vue @@ -0,0 +1,131 @@ + + diff --git a/vue-options-api-demos/inputs/radiogroup/forms/FormInput.vue b/vue-options-api-demos/inputs/radiogroup/forms/FormInput.vue new file mode 100644 index 00000000..5070f7e3 --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/forms/FormInput.vue @@ -0,0 +1,83 @@ + + + diff --git a/vue-options-api-demos/inputs/radiogroup/forms/FormRadioGroup.vue b/vue-options-api-demos/inputs/radiogroup/forms/FormRadioGroup.vue new file mode 100644 index 00000000..fc5f0ccd --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/forms/FormRadioGroup.vue @@ -0,0 +1,94 @@ + + + diff --git a/vue-options-api-demos/inputs/radiogroup/forms/main.js b/vue-options-api-demos/inputs/radiogroup/forms/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/forms/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiogroup/forms/main.vue b/vue-options-api-demos/inputs/radiogroup/forms/main.vue new file mode 100644 index 00000000..798b6d8d --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/forms/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/inputs/radiogroup/keyboard/main.js b/vue-options-api-demos/inputs/radiogroup/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiogroup/keyboard/main.vue b/vue-options-api-demos/inputs/radiogroup/keyboard/main.vue new file mode 100644 index 00000000..2fe242df --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/keyboard/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/inputs/radiogroup/layout/main.js b/vue-options-api-demos/inputs/radiogroup/layout/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/layout/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiogroup/layout/main.vue b/vue-options-api-demos/inputs/radiogroup/layout/main.vue new file mode 100644 index 00000000..8f630e98 --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/layout/main.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/inputs/radiogroup/overview/main.js b/vue-options-api-demos/inputs/radiogroup/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/radiogroup/overview/main.vue b/vue-options-api-demos/inputs/radiogroup/overview/main.vue new file mode 100644 index 00000000..1ecbba2a --- /dev/null +++ b/vue-options-api-demos/inputs/radiogroup/overview/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/inputs/rangeslider/controlled/main.js b/vue-options-api-demos/inputs/rangeslider/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rangeslider/controlled/main.vue b/vue-options-api-demos/inputs/rangeslider/controlled/main.vue new file mode 100644 index 00000000..5c240493 --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/controlled/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/inputs/rangeslider/disabled/main.js b/vue-options-api-demos/inputs/rangeslider/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rangeslider/disabled/main.vue b/vue-options-api-demos/inputs/rangeslider/disabled/main.vue new file mode 100644 index 00000000..cb90daab --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/disabled/main.vue @@ -0,0 +1,27 @@ + + diff --git a/vue-options-api-demos/inputs/rangeslider/events/Logger.vue b/vue-options-api-demos/inputs/rangeslider/events/Logger.vue new file mode 100644 index 00000000..7d9e1695 --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/events/Logger.vue @@ -0,0 +1,45 @@ + + + + diff --git a/vue-options-api-demos/inputs/rangeslider/events/main.js b/vue-options-api-demos/inputs/rangeslider/events/main.js new file mode 100644 index 00000000..1f1c6c86 --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') + diff --git a/vue-options-api-demos/inputs/rangeslider/events/main.vue b/vue-options-api-demos/inputs/rangeslider/events/main.vue new file mode 100644 index 00000000..73dd6579 --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/events/main.vue @@ -0,0 +1,54 @@ + + diff --git a/vue-options-api-demos/inputs/rangeslider/labels/main.js b/vue-options-api-demos/inputs/rangeslider/labels/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/labels/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rangeslider/labels/main.vue b/vue-options-api-demos/inputs/rangeslider/labels/main.vue new file mode 100644 index 00000000..e5b78833 --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/labels/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/inputs/rangeslider/orientation/main.js b/vue-options-api-demos/inputs/rangeslider/orientation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/orientation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rangeslider/orientation/main.vue b/vue-options-api-demos/inputs/rangeslider/orientation/main.vue new file mode 100644 index 00000000..6ed22968 --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/orientation/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/inputs/rangeslider/overview/main.js b/vue-options-api-demos/inputs/rangeslider/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rangeslider/overview/main.vue b/vue-options-api-demos/inputs/rangeslider/overview/main.vue new file mode 100644 index 00000000..c0b73caf --- /dev/null +++ b/vue-options-api-demos/inputs/rangeslider/overview/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/inputs/rating/basic/main.js b/vue-options-api-demos/inputs/rating/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/basic/main.vue b/vue-options-api-demos/inputs/rating/basic/main.vue new file mode 100644 index 00000000..ab7efb24 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/basic/main.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/controlled/main.js b/vue-options-api-demos/inputs/rating/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/controlled/main.vue b/vue-options-api-demos/inputs/rating/controlled/main.vue new file mode 100644 index 00000000..f6911540 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/controlled/main.vue @@ -0,0 +1,23 @@ + + + diff --git a/vue-options-api-demos/inputs/rating/disabled/main.js b/vue-options-api-demos/inputs/rating/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/disabled/main.vue b/vue-options-api-demos/inputs/rating/disabled/main.vue new file mode 100644 index 00000000..d296eed5 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/disabled/main.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/form-support/FormContent.vue b/vue-options-api-demos/inputs/rating/form-support/FormContent.vue new file mode 100644 index 00000000..297a8e9f --- /dev/null +++ b/vue-options-api-demos/inputs/rating/form-support/FormContent.vue @@ -0,0 +1,120 @@ + + diff --git a/vue-options-api-demos/inputs/rating/form-support/FormInput.vue b/vue-options-api-demos/inputs/rating/form-support/FormInput.vue new file mode 100644 index 00000000..b69c4a21 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/form-support/FormInput.vue @@ -0,0 +1,85 @@ + + + diff --git a/vue-options-api-demos/inputs/rating/form-support/FormRating.vue b/vue-options-api-demos/inputs/rating/form-support/FormRating.vue new file mode 100644 index 00000000..0cd38b44 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/form-support/FormRating.vue @@ -0,0 +1,92 @@ + + + diff --git a/vue-options-api-demos/inputs/rating/form-support/main.js b/vue-options-api-demos/inputs/rating/form-support/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/form-support/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/form-support/main.vue b/vue-options-api-demos/inputs/rating/form-support/main.vue new file mode 100644 index 00000000..cb5e3869 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/form-support/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/inputs/rating/icon/main.js b/vue-options-api-demos/inputs/rating/icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/icon/main.vue b/vue-options-api-demos/inputs/rating/icon/main.vue new file mode 100644 index 00000000..ba5ccf57 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/icon/main.vue @@ -0,0 +1,23 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/item-customization/customItem.vue b/vue-options-api-demos/inputs/rating/item-customization/customItem.vue new file mode 100644 index 00000000..f7f74352 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/item-customization/customItem.vue @@ -0,0 +1,40 @@ + + + diff --git a/vue-options-api-demos/inputs/rating/item-customization/main.js b/vue-options-api-demos/inputs/rating/item-customization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/item-customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/item-customization/main.vue b/vue-options-api-demos/inputs/rating/item-customization/main.vue new file mode 100644 index 00000000..2d541bb2 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/item-customization/main.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/items/main.js b/vue-options-api-demos/inputs/rating/items/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/items/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/items/main.vue b/vue-options-api-demos/inputs/rating/items/main.vue new file mode 100644 index 00000000..9bcb86dd --- /dev/null +++ b/vue-options-api-demos/inputs/rating/items/main.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/label/main.js b/vue-options-api-demos/inputs/rating/label/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/label/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/label/main.vue b/vue-options-api-demos/inputs/rating/label/main.vue new file mode 100644 index 00000000..4ff31f2c --- /dev/null +++ b/vue-options-api-demos/inputs/rating/label/main.vue @@ -0,0 +1,29 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/navigation/main.js b/vue-options-api-demos/inputs/rating/navigation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/navigation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/navigation/main.vue b/vue-options-api-demos/inputs/rating/navigation/main.vue new file mode 100644 index 00000000..f4950864 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/navigation/main.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/precision/first-full/main.js b/vue-options-api-demos/inputs/rating/precision/first-full/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/precision/first-full/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/precision/first-full/main.vue b/vue-options-api-demos/inputs/rating/precision/first-full/main.vue new file mode 100644 index 00000000..991fb0d8 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/precision/first-full/main.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/precision/first-half/main.js b/vue-options-api-demos/inputs/rating/precision/first-half/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/precision/first-half/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/precision/first-half/main.vue b/vue-options-api-demos/inputs/rating/precision/first-half/main.vue new file mode 100644 index 00000000..beaa59e1 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/precision/first-half/main.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/precision/main.js b/vue-options-api-demos/inputs/rating/precision/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/precision/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/precision/main.vue b/vue-options-api-demos/inputs/rating/precision/main.vue new file mode 100644 index 00000000..8e165bc5 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/precision/main.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/readonly/main.js b/vue-options-api-demos/inputs/rating/readonly/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/readonly/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/readonly/main.vue b/vue-options-api-demos/inputs/rating/readonly/main.vue new file mode 100644 index 00000000..2b30f917 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/readonly/main.vue @@ -0,0 +1,16 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rating/selection/main.js b/vue-options-api-demos/inputs/rating/selection/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rating/selection/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rating/selection/main.vue b/vue-options-api-demos/inputs/rating/selection/main.vue new file mode 100644 index 00000000..f5ff2357 --- /dev/null +++ b/vue-options-api-demos/inputs/rating/selection/main.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/rtl/main.js b/vue-options-api-demos/inputs/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/rtl/main.vue b/vue-options-api-demos/inputs/rtl/main.vue new file mode 100644 index 00000000..f376f980 --- /dev/null +++ b/vue-options-api-demos/inputs/rtl/main.vue @@ -0,0 +1,104 @@ + + + + diff --git a/vue-options-api-demos/inputs/shared/CheckboxStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/CheckboxStyleConfigurator.vue new file mode 100644 index 00000000..cb2341a7 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/CheckboxStyleConfigurator.vue @@ -0,0 +1,80 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/FormCheckbox.vue b/vue-options-api-demos/inputs/shared/FormCheckbox.vue new file mode 100644 index 00000000..9c415a82 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/FormCheckbox.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/FormInput.vue b/vue-options-api-demos/inputs/shared/FormInput.vue new file mode 100644 index 00000000..47972c76 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/FormInput.vue @@ -0,0 +1,94 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/FormSwitch.vue b/vue-options-api-demos/inputs/shared/FormSwitch.vue new file mode 100644 index 00000000..76da195a --- /dev/null +++ b/vue-options-api-demos/inputs/shared/FormSwitch.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/inputs/shared/InputStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/InputStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/InputStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/MaskedTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/MaskedTextBoxStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/MaskedTextBoxStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/NumericTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/NumericTextBoxStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/NumericTextBoxStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/RadioButtonStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/RadioButtonStyleConfigurator.vue new file mode 100644 index 00000000..e00c2976 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/RadioButtonStyleConfigurator.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/SignatureStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/SignatureStyleConfigurator.vue new file mode 100644 index 00000000..ffdd6c08 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/SignatureStyleConfigurator.vue @@ -0,0 +1,158 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/shared/SwitchStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/SwitchStyleConfigurator.vue new file mode 100644 index 00000000..c5b405da --- /dev/null +++ b/vue-options-api-demos/inputs/shared/SwitchStyleConfigurator.vue @@ -0,0 +1,101 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/TextAreaStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/TextAreaStyleConfigurator.vue new file mode 100644 index 00000000..c1b36044 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/TextAreaStyleConfigurator.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/inputs/shared/sample-signature.js b/vue-options-api-demos/inputs/shared/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/shared/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/SignatureStyleConfigurator.vue b/vue-options-api-demos/inputs/signature/appearance/all-options/SignatureStyleConfigurator.vue new file mode 100644 index 00000000..ffdd6c08 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/all-options/SignatureStyleConfigurator.vue @@ -0,0 +1,158 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/main.js b/vue-options-api-demos/inputs/signature/appearance/all-options/main.js new file mode 100644 index 00000000..3a6df88d --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/all-options/main.js @@ -0,0 +1,4 @@ +import { createApp } from "vue"; +import App from "./main.vue"; + +createApp(App).mount("#app"); diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/main.vue b/vue-options-api-demos/inputs/signature/appearance/all-options/main.vue new file mode 100644 index 00000000..3e8e11b7 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/all-options/main.vue @@ -0,0 +1,70 @@ + + diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/sample-signature.js b/vue-options-api-demos/inputs/signature/appearance/all-options/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/all-options/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/appearance/color/main.js b/vue-options-api-demos/inputs/signature/appearance/color/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/color/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/appearance/color/main.vue b/vue-options-api-demos/inputs/signature/appearance/color/main.vue new file mode 100644 index 00000000..e22f4aa8 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/color/main.vue @@ -0,0 +1,83 @@ + + + + diff --git a/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.vue new file mode 100644 index 00000000..2f68baef --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.vue @@ -0,0 +1,55 @@ + + + + diff --git a/vue-options-api-demos/inputs/signature/appearance/roundness/main.js b/vue-options-api-demos/inputs/signature/appearance/roundness/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/roundness/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/appearance/roundness/main.vue b/vue-options-api-demos/inputs/signature/appearance/roundness/main.vue new file mode 100644 index 00000000..a7bf938f --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/roundness/main.vue @@ -0,0 +1,79 @@ + + + + diff --git a/vue-options-api-demos/inputs/signature/appearance/size/main.js b/vue-options-api-demos/inputs/signature/appearance/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/appearance/size/main.vue b/vue-options-api-demos/inputs/signature/appearance/size/main.vue new file mode 100644 index 00000000..2406c9c3 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/size/main.vue @@ -0,0 +1,64 @@ + + + + diff --git a/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.js b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.vue b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.vue new file mode 100644 index 00000000..d6094922 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.vue @@ -0,0 +1,52 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/signature/controlled/export-scale/main.js b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/controlled/export-scale/main.vue b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.vue new file mode 100644 index 00000000..54d3e272 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.vue @@ -0,0 +1,58 @@ + + + diff --git a/vue-options-api-demos/inputs/signature/controlled/export-scale/sample-signature.js b/vue-options-api-demos/inputs/signature/controlled/export-scale/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/export-scale/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEgQIAAga0KCNy3OvPGTYAAAQIECBAgQIAAAQJbE8gLUT+0DNodH7O1VWK8BAgQINBLQODei8/NBAgQIECAAAECBAgQIEBg9gIJ2t+VknPX83nN9dO1/rmmsjoECBAgQIDAPwQE7lYCAQIECBAgQIAAAQIECBBYr8CXZWgfS6kN2nNO+7GU03pJjIwAAQIECIwnIHAfz1bLBAgQIECAAAECBAgQIEDgWQJflAfn+JhdZQd+LfUSzB8r66tGgAABAgQIvCAgcLcsCBAgQIAAAQIECBAgQIDAegT2ZSh5IWo+1lxN0J6w/ZeaG9QhQIAAAQIEXhcQuFsdBAgQIECAAAECBAgQIEBg+QK7MoTsaM/O9trru1LxWMql9gb1CBAgQIAAgbcFBO5WCAECBAgQIECAAAECBAgQWK7ArnQ9O9oPLYbww7W+oL0FmqoECBAgQKBGQOBeo6QOAQIECBAgQIAAAQIECBCYl0BegvqulK9KqX0haoL2YynneQ1FbwgQIECAwHoEBO7rmUsjIUCAAAECBAgQIECAAIFtCCRoT3BeG7T/fK1/2gaPURIgQIAAgecJCNyfZ+/JBAgQIECAAAECBAgQIECgjcCX1+B8V3lTXoiaHfCC9kow1QgQIECAQF8BgXtfQfcTIECAAAECBAgQIECAAIFxBfal+bwQ9bPKxyRo/3gtv1TeoxoBAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAgREEErAnaN+3aPu7Uje72gXtLdBUJUCAAAECQwkI3IeS1A4BAgQIECBAgAABAgQIEBhGYFea+bqUQ4vmPl2D9kuLe1QlQIAAAQIEBhYQuA8MqjkCBAgQIECAAAECBAgQINBRIC9BTdCeHeq11w+l4rGUc+0N6hEgQIAAAQLjCQjcx7PVMgECBAgQIECAAAECBAgQqBFI0P6ulATt+bzm+rlUOpRyrqmsDgECBAgQIDCNgMB9GmdPIUCAAAECBAgQIECAAAECLwl8Wb54LGVXyZOgPfVPlfVVI0CAAAECBCYUELhPiO1RBAgQIECAAAECBAgQIEDgKvBF+ZgXou4qRX4t9T5eixeiVqKpRoAAAQIEphYQuE8t7nkECBAgQIAAAQIECBAgsGWBfRl8zmnPx9rrvaC9lko9AgQIECDwXAGB+3P9PZ0AAQIECBAgQIAAAQIEtiGwK8PMjvbsbK+9visVj6Vcam9QjwABAgQIEHiugMD9uf6eToAAAQIECBAgQIAAAQLrFtiV4WVH+6HFMH8odfMC1R9b3KMqAQIECBAgMAMBgfsMJkEXCBAgQIAAAQIECBAgQGB1Ar8rI3p3Dc7zec2VoP1YyrmmsjoECBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgWULZEd7dqjXBu0/X4P207KHrfcECBAgQICAwN0aIECAAAECBAgQIECAAAECwwh8eQ3Od5XN/Xqt/7GyvmoECBAgQIDAzAUE7jOfIN0jQIAAAQIECBAgQIAAgdkL7EsP80LUzyp7mqA9IXvKL5X3qEaAAAECBAgsQEDgvoBJ0kUCBAgQIECAAAECBAgQmKVAgvYcH5OPtdd3pWKOmxG014qpR4AAAQIEFiQgcF/QZOkqAQIECBAgQIAAAQIECMxCYFd6kaD90KI3n65B+6XFPaoSIECAAAECCxMQuC9swnSXAAECBAgQIECAAAECBJ4mkJeg5uiYNkH7D6X+sZTz03rtwQQIECBAgMBkAgL3yag9iAABAgQIECBAgAABAgQWKpCg/V0pOQomn9dcP5dKh1LONZXVIUCAAAECBNYhIHBfxzwaBQECBAgQIECAAAECBAiMI5Cg/VhKm6A99U/jdEerBAgQIECAwJwFBO5znh19I0CAAAECBAgQIECAAIFnCXx5Ddp3lR34tdT7eL2n8hbVCBAgQIAAgbUJCNzXNqPGQ4AAAQIECBAgQIAAAQJ9BPbl5pzT/lllI03QnrD9l8p7VCNAgAABAgRWKiBwX+nEGhYBAgQIECBAgAABAgQItBJI0P51KflYe31XKh5LudTeoB4BAgQIECCwbgGB+7rn1+gIECBAgAABAgQIECBA4G2BXfl2gvZDC6hPpW5eoCpob4GmKgECBAgQ2IKAwH0Ls2yMBAgQIECAAAECBAgQIHAvkJeg5uiYNkH7D6X+sZQzTgIECBAgQIDASwICd+uCAAECBAgQIECAAAECBLYkkKD9XSnZoZ7Pa66fr/W/r6msDgECBAgQILBdAYH7dufeyAkQIECAAAECBAgQILA1gRwd0zZoP5Z7TluDMl4CBAgQIECgm4DAvZubuwgQIECAAAECBAgQIEBgOQJflq4mON9VdvnXUu/jtfxSeY9qBAgQIECAAIHfCNwtAgIECBAgQIAAAQIECBBYq8C+DOxbQftap9e4CBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgX4CCdpzfEw+1l7flYrHUi61N6hHgAABAgQIELgXELhbEwQIECBAgAABAgQIECCwFoFdGciHUr5oMaBPpW7OdRe0t0BTlQABAgQIEHhZQOBuZRAgQIAAAQIECBAgQIDA0gUStGdH+6HFQH4odY+lnFvcoyoBAgQIECBA4E0BgbsFQoAAAQIECBAgQIAAAQJLFfhd6fi7a3BeO4afS8WDoL2WSz0CBAgQIECgjYDAvY2WugQIECBAgAABAgQIECAwB4EmaM9RMPm85krQfizlVFNZHQIECBAgQIBAFwGBexc19xAgQIAAAQIECBAgQIDAswS+LA/+WEpt0P7rNWjPPS4CBAgQIECAwKgCAvdReTVOgAABAgQIECBAgAABAgMJJGg/lrKrbC9Be0L2lF8q71GNAAECBAgQINBLQODei8/NBAgQIECAAAECBAgQIDCywL60/6GUz1o857tSN8fNCNpboKlKgAABAgQI9BcQuPc31AIBAgQIECBAgAABAgQIDC+QoP3rUvKx9krQfizlUnuDegQIECBAgACBIQUE7kNqaosAAQIECBAgQIAAAQIE+grsSgPZ0f5Fi4Z+KHWzo/3HFveoSoAAAQIECBAYXEDgPjipBgkQIECAAAECBAgQIECgg0CC9uxoP7S4N0H7sZRzi3tUJUCAAAECBAiMJiBwH41WwwQIECBAgAABAgQIECBQIfC7UidBe3ao114/X+t/X3uDegQIECBAgACBKQQE7lMoewYBAgQIECBAgAABAgQI3AskaH93Dc7zec2VoP1YyqmmsjoECBAgQIAAgakFBO5Ti3seAQIECBAgQIAAAQIECDQ72muD9l8L2cdr2E6PAAECBAgQIDBbAYH7bKdGxwgQIECAAAECBAiMIrArrf6+lM9KSdi5v3lKvpfSXHkB5ftSHNsxylRsstEvy6iPd+vsLYgmaE/Y/ssmxQyaAAECBAgQWJSAwH1R06WzBAgQIECAAAECBFoJJFD/Yyn7UhKw52PbKyHnv5dyaXuj+gRuBNoG7bn1m1KOpQjaLSUCBAgQIEBgMQIC98VMlY4SIECAAAECBAgQeCjQBOxflJr7UnYP76ir8OdSzS73Oiu1/lkg6zDHx+Rj7fVdqXgs5VJ7g3oECBAgQIAAgbkICNznMhP6QYAAAQIECBAgQKCbwK7cll3sCdlTxrgE7mOorrvNfRle26D9h3LPoZTLummMjgABAgQIEFizgMB9zbNrbAQIECBAgAABAmsVyE72HNGRcDJHxYx9/ak84Dz2Q7S/CoFdGcWHUtr88idB+9EaW8X8GwQBAgQIENi8gMB980sAAAECBAgQIECAwIIEErKPuZP9NQr/f8OCFsmTupqgPTvaDy2e/1Op+5WgvYWYqgQIECBAgMDsBfwfzrOfIh0kQIAAAQIECBDYuECCzHfXIDM724e4sqP4ci0/lo95KeVfS3mp/U/l6212Kw/RP20sRyBrJkF7gvPa6+dS8VjKqfYG9QgQIECAAAECSxEQuC9lpvSTAAECBAgQIEBgawLNkTH7ngPPLuKE6udrubzQXsLPhKYvXc5v7zkBK709QXt+EZSgvfYXQYL2lS4GwyJAgAABAgT+V0DgbjUQIECAAAECBAgQmI9AE2IeSpd2Hbv1a7nv+2s5l4/Zvf7WlTPg//5KhQSkXfvRsftuW4BAs6O9NmjPmvxYynEBY9NFAgQIECBAgEAvAYF7Lz43EyBAgAABAgQIEBhEIKF3c2xMlwYTjN+G7LVtJDBN2L575QYvS62V3Ea9/NXF8Y31cq/QBO0J2x/94mcbgkZJgAABAgQIrF5A4L76KTZAAgQIECBAgACBGQt8XvqWIzn2HfrY7GRPmJkjY9peCdv/VkrC/peunPPepV9t+6H+/AXaBu0Z0TelHEsRtM9/fvWQAAECBAgQGFBA4D4gpqYIECBAgAABAgQIVAgk6E7QnjByV1H/vkpeYnoqJTva+1wJ2/evNJAwP30TlvYRXv69WR8fSnntlzIvjfC769q+LH/4RkCAAAECBAgQaC8gcG9v5g4CBAgQIECAAAECXQS6vGSyeU4C8FMp2c0+RJD5bWnn8MYgHCXTZYbXc8++DCXntOdj7ZW/iMiaGmJ91j5TPQIECBAgQIDA7AQE7rObEh0iQIAAAQIECBBYmcCujCfhZcLItldCzNO1tL33tfqPwvb35cbjUA/TzqIEspM9O9r3LXqdNZr1cm5xj6oECBAgQIAAgdUKCNxXO7UGRoAAAQIECBAg8GSBhJZtdwk3Xc6xHF3PZn9t2Nlh/9dS0q/Xrjz38GQ3j59eYHddq23mXtA+/Tx5IgECBAgQILAAAYH7AiZJFwkQIECAAAECBBYlkBdMJrjct+z1z6X+qZQE7UOfnZ6dywnbd2/0SdjecsJWUD3roe1fX2SdHq9rdQUEhkCAAAECBAgQGFZA4D6sp9YIECBAgAABAgS2KdDnRag/FbKE7KeR6L4o7eYYmfTxtSt9aPNizJG6qtmJBLIWErR/1eJ5gmpWyTgAACAASURBVPYWWKoSIECAAAEC2xUQuG937o2cAAECBAgQIECgv0CfF6GOfSTHrgwv53EncH/rSti+L2XoXfX9dbUwtECX9ZoX9uYXQsehO6M9AgQIECBAgMAaBQTua5xVYyJAgAABAgQIEBhbYFce0PYojqZPObol4eVlxE6+uz7jrV3tefynUg6lCNtHnIwZNN0naB/jiKMZkOgCAQIECBAgQGAcAYH7OK5aJUCAAAECBAgQWKfAvgyrOaO9zQibXcJjh5e70qkcH5N+Prq+KRXaHCnyqD3fn6dA7S9fmt5PtVbnqaVXBAgQIECAAIGeAgL3noBuJ0CAAAECBAgQ2IRAAuzsaM/HNlfOvW7OZx97F3n6d6zoXALVBO2nirqqLFcgvxjKeti1GMIUf33RojuqEiBAgAABAgSWJyBwX96c6TEBAgQIECBAgMB0As1u9n3LR479ItTb7qRv2dVeE6ymX4dSfmw5HtWXIyBoX85c6SkBAgQIECCwQgGB+won1ZAIECBAgAABAgR6C3QJLfPQsV+EejuwBOy1x8fkvvelHHvLaGCuAl3WbM7wz187XOY6KP0iQIAAAQIECCxNQOC+tBnTXwIECBAgQIAAgTEFuoSW6c+UR3HkBZg5Pqb2/PX8EiB17Wofc+U8r+39dT3kY+015S+GavukHgECBAgQIEBgFQIC91VMo0EQIECAAAECBAj0EEiA/Xkpx1J2LdrJWeinUnJG+6XFfX2q5hcCeV76/OhK/zKm1HetT2BfhtT2vQKC9vWtAyMiQIAAAQIEZiYgcJ/ZhOgOAQIECBAgQIDAZAIJrd+Vkt3fNQF207EE2QmxU8Z+EWrzzISrH0r5rFInweqhlEtlfdWWI5C1IGhfznzpKQECBAgQILAxAYH7xibccAkQIECAAAECBP47XO8StP9c7juWcprQMAF7gvaErDVX+phfIHxfU1mdRQlkDbQN2p+xZheFqrMECBAgQIAAgaEFBO5Di2qPAAECBAgQIEBgrgJLCtp313D1UInZ7Lo/VtZXbTkCgvblzJWeEiBAgAABAgR+I3C3CAgQIECAAAECBNYusKSgPX3NjvbaoD1zN+ULW9e+VuY0PkH7nGZDXwgQIECAAAEClQIC90oo1QgQIECAAAECBBYn0DVoz/nnOZ99ymNZuvTVCzAXtySrOrwrtXJ0zKGq9j8qOTqmBZaqBAgQIECAAIExBQTuY+pqmwABAgQIECBA4BkCXcLr9PNZAXbC1TYvbs3xMal/egauZ44msCsttw3an/EC39EANEyAAAECBAgQWIOAwH0Ns2gMBAgQIECAAAECjcCX5ZNjKQkva69nBe1t+ypcrZ3RZdXLWhW0L2vO9JYAAQIECBAg8KqAwN3iIECAAAECBAgQWINA2/A6Y15K0J6+vi8lx9z8sobJMob/FtiVImi3GAgQIECAAAECKxMQuK9sQg2HAAECBAgQILAxgbUH7V6Iur4FLWhf35waEQECBAgQIEDgfwQE7hYDAQIECBAgQIDAEgXWHrR/KpOSc9ovS5wcfX5R4LPy1XelHFr4OEaoBZaqBAgQIECAAIE5CAjc5zAL+kCAAAECBAgQIFArsC8VP5SS8LL2WtLRMc/qa62leu0FsmZzdEw+1l6C9lop9QgQIECAAAECMxMQuM9sQnSHAAECBAgQIEDgRYEuoeWzwusl7b633MYT6LJmBe3jzYeWCRAgQIAAAQKTCAjcJ2H2EAIECBAgQIAAgY4C2cmeHe0JL2uvn0rFHMdyrr1hoHqC9oEgF95M1qod7QufRN0nQIAAAQIECHQVELh3lXMfAQIECBAgQIDAmAK7a2h5aPGQn0vdYymnFvf0rfq70sDn1+emz7XXs3bf1/ZPvfYC+YVL1uu+xa12tLfAUpUAAQIECBAgsAQBgfsSZkkfCRAgQIAAAQLbEdiVoWZ3cILL2utZQXtegJmd9Anday9Be63Ucup1+csGQfty5ldPCRAgQIAAAQKtBATurbhUJkCAAAECBAgQGEkgoXXbAFvQPtJkaPahQNe/bBC0P6RVgQABAgQIECCwbAGB+7LnT+8JECBAgAABAksX6BK0J7Q8lvJxwsF36We6Z0f7hJM0waO6rgNB+wST4xEECBAgQIAAgTkICNznMAv6QIAAAQIECBDYpkDbozieEVp2DVgF7eta07synLZHHUXgGWt2XfJGQ4AAAQIECBBYmIDAfWETprsECBAgQIAAgRUI7MsYvi0lIWbt9b5UzI72X2pvGKBefiGQZzqjfQDMhTaRtdq8DLXNEJrjjr6feM226aO6BAgQIECAAAECIwgI3EdA1SQBAgQIECBAgMCLAgkvs0s4H2uv70rFYymX2hsGqNd2530eaUf7APAzaqIJ2dus1XT/Ge8VmBGbrhAgQIAAAQIECAjcrQECBAgQIECAAIGxBXblAW2P4xC0jz0r2r8XyF8yJGj/qpSs2TZXfuFyupY296lLgAABAgQIECCwMgGB+8om1HAIECBAgAABAjMSSID5oZRDiz49Y6f4/trPz2bezxbdU7WFwK7UfXddp22OD8ojnrFeWwxNVQIECBAgQIAAgakFBO5Ti3seAQIECBAgQGD9Al1eNPpTYcnO4vOEPPvyrLZH3AhYJ5ygkR+V+U/Q/kWH5zzjLzA6dNMtBAgQIECAAAECUwsI3KcW9zwCBAgQIECAwLoF2r5o9BlnXu/KFOSlrQlcay9Be63U/Os1x8a0+YuGjOrXUk6l5EW6l/kPUw8JECBAgAABAgSeISBwf4a6ZxIgQIAAAQIE1iewL0NKiL2rHFrCy+M1vKy8pXe19K3tWfLP2Hnfe6Aa+BeBzH0TtLc9Nia/FErIfirlF7YECBAgQIAAAQIE3hIQuFsfBAgQIECAAAECfQSySzjntO8rG0nQnvAyZarwMgFrgvYcWVN7PWPnfW3f1KsXyLpM0H6ov+V/anoRagc0txAgQIAAAQIEti4gcN/6CjB+AgQIECBAgEA3gV25re1u8anPve5ylrygvdt6mNtdXY+NyTiyTk+lnOc2KP0hQIAAAQIECBCYv4DAff5zpIcECBAgQIAAgTkJdAmxs1P4UMplwoHkZZjHUmqPD2l23uce1zIFdqXbXY+NcT77MudcrwkQIECAAAECsxMQuM9uSnSIAAECBAgQIDBbgbYvRH3Gi0bTx4TmCV9rrmcccVPTL3XqBfalatdjY5q/aPi+tDHVEUf1I1OTAAECBAgQIEBgcQIC98VNmQ4TIECAAAECBCYXSKDZ5oWozziWpW0fg/hNKUdB6+TraYgH5i8XPr/O365Dg/llUN4jkKDdRYAAAQIECBAgQGAwAYH7YJQaIkCAAAECBAisTqDrC1GPE0rsy7Nylnw+1l5TnyVf2y/1HgvsrvP9RflYe1xQ02r+miEBe9bn5fGj1CBAgAABAgQIECDQXkDg3t7MHQQIECBAgACBtQskyPxQyqHFQKfeLb679jHBa+31jLPka/um3tsC2c3+VSn7DlD5i4vsZj+V4tiYDoBuIUCAAAECBAgQqBcQuNdbqUmAAAECBAgQ2IJAdosn2KzdPfzpWv8yEc6uPCd9PLR43jPOkm/RPVVfEchcN2ez5/O2l2Nj2oqpT4AAAQIECBAg0FtA4N6bUAMECBAgQIAAgVUItH3Z6NQhdn4B8K6UYwvt7Gw+lHJucY+qzxfYly50fQmqY2OeP396QIAAAQIECBDYtIDAfdPTb/AECBAgQIAAgf8+oqPNGehTvxC1Cdrb7Lqfuo+WUX+Bvi9BbeY8Z7Q7Nqb/fGiBAAECBAgQIECgo4DAvSOc2wgQIECAAAECCxfYXYP2Q+U4snM452AfK+sPUS27nPPM2uNtntHHIca55TbyYt785UKXl6DGLS/APZVy3jKisRMgQIAAAQIECMxHQOA+n7nQEwIECBAgQIDAFAJddown1MwO86l2Drc93qYJ2hPOT9XHKeZqzc9ojozZdxhkdrMnZE+5dLjfLQQIECBAgAABAgRGExC4j0arYQIECBAgQIDA7ATaBtk5p/0wYai5L8/6UEp2PddeU/8yoLZf6v2rwK58KbvZs6Zq/2rhtpWsx9O18CVAgAABAgQIECAwSwGB+yynRacIECBAgAABAoMK7Etrbc9pTyh6HrQXrzfWtn9pKUH7sZTLRH30mO4CfXazNy9BzV8v/Ni9C+4kQIAAAQIECBAgMI2AwH0aZ08hQIAAAQIECDxDYFcemqD9UPnwhJvHUhJuTnFlJ3t2tO9bPCy7nHO8jfC1BdoTqmbtNUF7Pm97eQlqWzH1CRAgQIAAAQIEZiEgcJ/FNOgEAQIECBAgQGBQgS7ntH9TenAsZYoz0BPAtvlFQHAStKd/50GlNDa0wOelwUMpeQlql8tLULuouYcAAQIECBAgQGA2AgL32UyFjhAgQIAAAQIEBhFoe077p/LU7Bi/DPL0txvZlW+3Ddqz0zn9+36C/nlEN4HMa9/d7KfShpfedvN3FwECBAgQIECAwIwEBO4zmgxdIUCAAAECBAj0EGh7PMtP1yD73OOZtbdmx32C9gTntVdzpMip9gb1Jhfou5s9v+zJ/PplyuRT54EECBAgQIAAAQJjCQjcx5LVLgECBAgQIEBgGoGE2TkH/VD5uJzTnuA7QefYV5ejbaY+R35sg7W1vysDGmI3e9bfZW04xkOAAAECBAgQIEBA4G4NECBAgAABAgSWK9DsGk+wXXO9L5WmOLaja9Cevk3Rvxordf5ZoO9u9pzBf7oWtgQIECBAgAABAgRWKyBwX+3UGhgBAgQIECCwYoG8kDK72neVY0zYeSjlUlm/azVBe1e5ed6X+cxu9vxFRO1aux1J/lrhVEp+iTL22punoF4RIECAAAECBAhsTkDgvrkpN2ACBAgQIEBgwQIJPb8tZV85hpyDfijlXFm/T7UEswlWa3fb51nflXIs5dLnwe4dXCDrqzk2pkvjdrN3UXMPAQIECBAgQIDAKgQE7quYRoMgQIAAAQIEVi7Q9qWjU56DnmA2ofmuxRwI2ltgTVQ189fnbHa72SeaKI8hQIAAAQIECBCYt4DAfd7zo3cECBAgQIAAgbY7x7+5BuC/jEwnaB8ZeKLm+57N/lPpZ/6y4TRRfz2GAAECBAgQIECAwKwFBO6znh6dI0CAAAECBDYssC9jzzntn1UaTHVOe5egPX07lnKuHItq4wpkTTW72dscAdT0KrvZvy8lQfuP43ZV6wQIECBAgAABAgSWJSBwX9Z86S0BAgQIECCwfoFdGeLXpRwqh5pz2vNSywSgY16C9jF1x28766rZzV77S5z7XjW72bPWxv4LivFFPIEAAQIECBAgQIDACAIC9xFQNUmAAAECBAgQ6CiQoD3hec2u4+wyzg7jY8dn1d4maK+Vml+9rKOE7F9cS5ce2s3eRc09BAgQIECAAAECmxUQuG926g2cAAECBAgQmJFAAtEcH7Or7NMULx0VtFdOxgyr3YbsNb+8eWkIdrPPcGJ1iQABAgQIECBAYP4CAvf5z5EeEiBAgAABAusVSMD+bSn7yiFOcRa6oL1yMmZWre+57BlOdrOfrsXZ7DObYN0hQIAAAQIECBBYhoDAfRnzpJcECBAgQIDAugSy67g5PqZmZAlCc9RMwtAxrubokWNpfNfiATk/PveM1a8WXdlk1SZkz19ItJm3e6xP5Qs5l908bnIZGTQBAgQIECBAgMCQAgL3ITW1RYAAAQIECBB4LJAd5Dl7vfaoj/fX+mO8pDJ9eFdK7bnxzegE7Y/neawau9Jw35efpm+Zw6zDBO2XsTqrXQIECBAgQIAAAQJbExC4b23GjZcAAQIECBB4lsC+PDi72vOx5srxMYdSLjWVW9YRtLcEe3L1zFd+UZP1kF3tXS9HxnSVcx8BAgQIECBAgACBSgGBeyWUagQIECBAgACBjgIJS/NC1ISlNVd2HqfuuaZyyzq7Uj872tN+7Q77PMKO9pbQA1RvjvnJcTEpXa+E7NnF3pSu7biPAAECBAgQIECAAIEKAYF7BZIqBAgQIECAAIGOAs057TXhdoLRHPFx7Pist27blW+mL4eWbf907dOp5X2qdxdojovpE7Ln6c257AnaxziOqPsI3UmAAAECBAgQIEBgxQIC9xVPrqERIECAAAECTxPYlyd/W8qusgfflXo5R33oYDT9yI72tuFtjrM5lnKu7L9q/QQyTzkyJvNU88uZ156WX5CcrmXotdRvhO4mQIAAAQIECBAgsBEBgftGJtowCRAgQIAAgUkEduUpOT6mNuBOQJqg/Txw75rzvvct2xW0twTrUT1rpZmnfN71akJ2Lz/tKug+AgQIECBAgAABAgMKCNwHxNQUAQIECBAgsFmB5iWkx0qBHB+ToP1UWb+mWvNizbS7q7nhpo6gvSVYx+rNueyZoz4vP82Z+gnYs35+7NgXtxEgQIAAAQIECBAgMIKAwH0EVE0SIECAAAECmxLIbvbsat9VjvqbUu9YylBHfuS5XV6Emu7mKJucGy+0rZy8jtVyLnvWyaHj/bmtefmp+eqB6FYCBAgQIECAAAECYwsI3McW1j4BAgQIECCwVoFdGVjOad9XDjC7yLOzeahwO8/tcj57upug/VjKpbLvqrUXyProe2RME7JnN3uKiwABAgQIECBAgACBmQsI3Gc+QbpHgAABAgQIzE4gx4J8XUrC85orx3+k7lCBaULcLkeSJLzN7uhTKZeajqvTSaDr+fm3D/t0XS+ZKxcBAgQIECBAgAABAgsSELgvaLJ0lQABAgQIPFFgV579+xeen6+n3F+vff22XoLrPudYp63sFr89miWf3+4gv/3vBN+XnoYJUxNap++PribgTv2+x8fkec2xMS95v9WXjLsJ2vv249GYt/r9zEnXY30as7z8NPOUX8yYp62uJOMmQIAAAQIECBBYvIDAffFTaAAECBAgQOChwB9varwUcu/vWhgiCH/YqSdXuA3qz9e+NB8TfN4HnvnFQM5pv7d6bRjZoZxd6Jee49yV+7Ob/tChnRxhc7qWDre7pUIgZ7Nnbr6oqPtSleblpwna+66Vjl1wGwECBAgQIECAAAECQwoI3IfU1BYBAgQIEBhPIIHvb6/N3wfi+d7tjuv9eN3YVMsJQJsQtNY0AeqhlHNPqQS5Cexrn3v7uJzPfhqgDz2HsNrb87PWHOuz6zDK5lx2c9QBzy0ECBAgQIAAAQIE5i4gcJ/7DOkfAQIECKxR4DY8vw3Lbz/fwi7ztc1tgu5Dj0FlzhO0H0tpG+QmxE2Aa6d0jwl4cGvmJH9tkN3sNUcK3TfX/MWBI2PGmyMtEyBAgAABAgQIEHi6gMD96VOgAwQIECCwAoHbI1v2N+N57fMVDNkQXhHIUTQ5ruZ8LQlZH127UqHr+d/OZ3+k2//7ff7awC9C+vtrgQABAgQIECBAgMCiBATui5ounSVAgACBiQSye/UP12clDE3Jdfv5/TEuE3XNYxYocCp9zu73813f9+W/E7R3Of87QX7zgs0Fksy+y33+2iCDyxn+mffsZncRIECAAAECBAgQILAhAYH7hibbUAkQIEDgN81RLrfHteyKS0quPaNXBbJTNzu3769L+UJK7ddv6zW7wfuw3//i4/4ontv5vT3Kp88zu957Ljf+uZRmx3T60/ZKcJ+g/aW5aNuW+v8qkPXS9a8N7Ga3oggQIECAAAECBAgQ+I3A3SIgQIAAgTUINEe63IatTRDrLPTf/Ob+WJMEv7dXwtuE37fXfZ01rJPbMeyv/3EoH/MCzDlfCXITsqfcz9Oc+72kvmU9ZB1kPbS9frrOzantjeoTIECAAAECBAgQILA+AYH7+ubUiAgQILAmgSZI35VBpeTaXz/efm1NY35tLDmr+3LzzfPN5/eB+UsB+haM2owx6+dDKbXHuTS/tLg9bqjN87rUFeR2UWt3TxOyN/+utLk7f21wKuX2Z7HN/eoSIECAAAECBAgQILBCAYH7CifVkAgQILAQgSZMb3aiJwBN2cKO9Nvw/FLGnJLr/ogVQd44i/nr0uxX17X26AnZXZ66p7uKzXrdX9dt/vv25bmP2n3r+zn/O7vZzX8fxdfv7XM+e/PXBlkPzc/tOL3UKgECBAgQIECAAAECixQQuC9y2nSaAAECsxfYWpiencjNUR+3u8tf+3z2E7jSDu7LuL4tZVc5vm9KvePN3D66Le222TV/257zvx/p9v9+gvacz177y5bbJ/prg/7+WiBAgAABAgQIECCwCQGB+yam2SAJECAwqMBWwvTmCJHbXee3n1+Kaopr/gK70sU2QXjm/tBifvelbtfzv/PXDsdSvi/F+ezjrKXMf/6qIXPa9vLXBm3F1CdAgAABAgQIECCwcQGB+8YXgOETIEDgTqA5n7o51uX+49LBbo9yaXaf34bozj5f+gz/c/+bHc3HymFlfWT3c8LvR1efY0nSdkL9HBtT86xHffH9lwV25ctdgnZ/bWBFESBAgAABAgQIECDQWUDg3pnOjQQIEFikwFoD9dsjXc7XmbmUjym5mq8tctJ0upNAXoaaXe27yrvfl3oJwB/tMk97OZbkUEp+ntpe2TGdUL9Zm23vV/+xwL5USdCej22u/MIla+BUsQ7atKsuAQIECBAgQIAAAQIbEhC4b2iyDZUAgU0IrC1Qb4L0l3ah335tE5NrkFUCu1Ir57Tvq2r/Y6f5oZTLg/qfl+8nKK9t96XmsnM6/XsU6ld2XbU7gcxNl6Dd+eyWEgECBAgQIECAAAECgwkI3Aej1BABAgQmEVhToN6E6Qk6U24D9PMkmh6yJoExjo/ZFaDmbPZ83vfKLvpj30bc/y8C+/KVLkF7ftmS+fDvjUVFgAABAgQIECBAgMBgAgL3wSg1RIAAgcEEmlB9V1pM+ayUfC2h0lIuYfpSZmod/WxzfEx2mefYkOMbQ8/PWo6NSbtDXTmuJD/PruEEMk9dgvbvrvN/Ga4rWiJAgAABAgQIECBAgMA/BATuVgIBAgSeI5Dg7fel3IbpzQtKn9Oj+qcK0+ut1BxXID9HbY6Peev89Pz8ZTd7jo1Ju0Nf/14azEt5Xf0F9qWJtkG7F6H2d9cCAQIECBAgQIAAAQIVAgL3CiRVCBAg0FEgYfpvS0k41ITpSwjVm0D9fB33/ceOHG4jMJhAl+NjDuXpzVq+7Uh+PptjY7p0MCH+H0rZvXHzf5TvZVe9q59A5qpL0B77mhfi9uuduwkQIECAAAECBAgQIFAEBO6WAQECBPoJ/PF6e4KgJkzflc9T5no1gXp22zbnpt9+nGu/9YtABBKOJzzNz9uj67XjY/Lz2eds9qbd70s7OXrm8EZHcnzJW99/NAbf/8e/p23+kiFmzRwJ2q0gAgQIECBAgAABAgQmFRC4T8rtYQQILFQgYU9z/Es+z8715iiYOQ5JoD7HWdGnvgL5mftQyr6yofvjYxLQf17KoUUb94/KSzZP15L2/nb9t+C1LuVnMf3NL7Rc7QXy7212tGfOaq+clX8sJb8M4V6rph4BAgQIECBAgAABAoMJCNwHo9QQAQIrEMhu9WaX+u3Z6nMbmkB9bjOiP2MK5GcyoWvOVq+5ErgeSjlfK+/Lx+xm/+L6813Txm2d7JROeHss5XL9Rv59SNj+1i57YXtb6f+t3/bIoNzZBO2n7o91JwECBAgQIECAAAECBPoLCNz7G2qBAIFlCSTIyXnLt4H6rvx3ypyu7KS9P+7lUr6W4iKwFYG2x8ccC0yOEMnPc58jY+KbwDxt3e+UTvif57x1Cdu7r9Ac0RPfmiOD8hRBe3drdxIgQIAAAQIECBAgMIKAwH0EVE0SIDALgdtgfVd6lIB9P4ue/W8nbkP1S/lyyo+lOAZhZhOlO5MLtD0+JuekH0vJX6lkJ3tKl6vZzZ6gPT+Lt1f+Hak5Rzx9yW58P8ftZiD/Psc3zjXXa+fz19yrDgECBAgQIECAAAECBEYTELiPRqthAgQmFEg4l13rCWoS2uRjbWgzZjcTCCW0u1xLE6afx3yotgksWKDt8THZSd4c7XLoMe7XdrM3TSbATxj8aNf1N6VO7dE3Pbq7qlvzb3XNLzKaQXsZ6qqm32AIECBAgAABAgQIrE9A4L6+OTUiAmsWSDCTl5fuS0nInv/Ox2deOc7gUsp9mH5+Zqc8m8ACBdocH9MML7vIH4Xgr1HkZzfHxWQ3e36GX7rSdsLgmh3zfyn1Tgt0f1aXY9scH1Pbh/fX+fLXA7Vi6hEgQIAAAQIECBAgMLmAwH1ycg8kQKBSIEdD3Ibq+bxrsFb5yDer5fiXy7U0u9bvj5wY4jnaILA1gbbHx/T1yZEvCdpT3rpqfwGQ4D6BvH8P6mdmX6q2OT6mOTIo/wa7CBAgQIAAAQIECBAgMGsBgfusp0fnCGxGoDkSJiFMPn/WrvXb3eoJdm6Pg9nMZBgogYkE2h4f06dbj46MuW17V/6j9oiTT6XuoRQ7rutmJ3P+4WpWc0d+0Xks5VxTWR0CBAgQIECAAAECBAjMQUDgPodZ0AcC2xJowvUmWN8/YfgJ3y6lJFC/PwrmCd3xSAKbE6jdPd4HJmd9n66lZvd52yNO/qO0neNoXHUC+SuAmnPw01p++flVKY/+CqHuyWoRIECAAAECBAgQIEBgQgGB+4TYHkVggwLPDtfvg/Vmx/oGp8KQCcxCYOzjYxKyN8fFtAlr8wuAYym7CqX8u3IopSbEr2huE1XilbD90dW8EDVz4SJAgAABAgQIECBAgMAiBQTui5w2nSYwS4HsDs256/tSEqrl41RXQpqEX+dSLteSz10ECMxDYOzjY3K0SwL2U8vh5t+pr1v8e5WXdh5bPmPr1Q8FoCZszxxmV3v+DXcRIECAAAECBAgQIEBgsQIC98VOnY4TeLrA7bnrCa12E/WoeXlpcxxMcyTMRI/3GAIEWgqMdXxME7InaG973uQL5wAAIABJREFUhnr+vUrQfqgci13tlVB31eL7KGx3fEw3W3cRIECAAAECBAgQIDBTAYH7TCdGtwjMUOB+93p2rI553e5ab46CcYTDmOLaJjCswL4012b3eM3T8wu3UyldQva03/acdkec1MzKy3XyS9m/Xc1fa+Wb8o1jKW1/YdK9V+4kQIAAAQIECBAgQIDAyAIC95GBNU9goQK70u8/lLK/lgQnY1734bqz1sfU1jaBcQTy70Z+MZeXY+bfjqF+KZeQvTmX/dKx603QniNLavvliJOO2Nfb/l4+vva/Hfk3P+vk3O8R7iZAgAABAgQIECBAgMD8BATu85sTPSLwDIEEUJ9fQ7IEZbsROyFcHxFX0wQmFBjrWKn8G5EgtgnZ++5+bvNC1PDliJPDtQ8Tcq7qUR/LaN69MqLMb/53xl8srWrKDYYAAQIECBAgQIAAgUZA4G4tENiuwG3APtYOduH6dteXka9PYMxjpfJvRROw5+MQV9ugPX04lpKw2NVdYF9uzVEyL10xzv/eXLo3704CBAgQIECAAAECBAjMW0DgPu/50TsCQwrsSmPNcQ/5U/4xrrxYMLsWz9ciVBlDWZsExhfIX73k34uEo/trGfqp2UmecP10/XdjqPbT3w/Xvte2+b5UTNDedzd97fPWXC9he+bgpevP1zlf8/iNjQABAgQIECBAgACBjQsI3De+AAx/9QK7MsLsZD+UMsYu9pytfC6lCdmFVatfUga4UoH8W3G7g32Mfy9uj4rJvxuXgS33pb22L2n9rtxzHKEvAw9tMc3lf2u+faW3ORN/rF/2LgZIRwkQIECAAAECBAgQWL+AwH39c2yE2xNozmNPsDFkuNGEZQnKmoB9e7pGTGAdAvfh+m7EYSXUzu7xsc7s3pe22wbt+WXhsZT8e+YaTuA/S1MvraX870e+7peyw1lriQABAgQIECBAgACBmQoI3Gc6MbpFoINAwoyETgnZE7r3vXI8zLmUJly/9G3Q/QQIPEUgu9Wb42Hy+Ri7118aWP4N+er678gYA99f/83Lx9pL0F4r1b5e/rfnr6/c9pfy9VP7Jt1BgAABAgQIECBAgACB5QkI3Jc3Z3pM4F4gYdO7UvruZs95yudrybnKdiJaawSWJ5Aw/Q+lNMF6/n2Y+hr75aMZU9sd7fn37VjKaWqMDT0v/7uRI8zur9jvNuRgqAQIECBAgAABAgQIbFxA4L7xBWD4ixZIgJHQ6dBxFLdHxJxLG2Md99Cxe24jQOCBQP4NaML1ffk8IfsQf93SBz7Hx2RX+xi/sMsYBe19Zmfce//rlebtbh/XXesECBAgQIAAAQIECMxMQOA+swnRHQKVAodS70OHcC0he3YhNqXycaoRIPBkgWbn+q70Y1/KHML1W5Ixj4/JeAXtT16ADx7/1nEy/m/Nec+d3hEgQIAAAQIECBAgMLCA/ydoYFDNEZhA4NvyjEOL5wjZW2CpSuDJAtmhnl3rCZl3pUx95vq5PPP3pdQeUTXm8TExaBu0pz95QWvKGLvsn7w8Zvv443Wu7juYM/Mzjy4CBAgQIECAAAECBAhsRkDgvpmpNtCVCLwWarw0vBztYCf7SibeMFYpkDA94XY+JpScctd6ztXOMVIp52vZlY/5hV76UnONdXxMni9or5mB+dR57X+b3pcu5nsuAgQIECBAgAABAgQIbEZA4L6ZqTbQFQgkjPt7xTi+uQYcdndWYKlCYAKBP5Zn7K4lP8f5PB+nurLruwnWm4+3/z5kV31evHys7NBYx8fkhZs5/31f2Y9Us6O9BdaIVbN28kuS+0vgPiK6pgkQIECAAAECBAgQmKeAwH2e86JXBF4SeC3QeKR1fqFCQrf7QP6lr+U4ABcBAo8FdqVKs1s9nzdHwSTMnvrKz+3t7vXLGx3I0TF5H0T6/Oga6/iYL8uD8+9bTR+aPgraH83WtN/P/AncpzX3NAIECBAgQIAAAQIEZiogcJ/pxOgWgRcEXgs0psY63z0wwX3CvdvrUv4j5fbKERb3X5u6755HoI/ArtycUD0fU5ojYPZ9Gu15b3ab3+5ev/9ZfK359P/Zx8cI2ntO/oxuP5a+CNxnNCG6QoAAAQIECBAgQIDA8wQE7s+z92QCbQUSkCVM+23bG2dc/1L6lnJ71X6tOSZjxsPTtYUJ5GfsNlDPf9+WZw7n9liY/Iw0O9jb9mkOx8cI2tvO2vzrH0sXBe7znyc9JECAAAECBAgQIEBgAgGB+wTIHkFgQIHsqM2LUBMKul4WOL/w5Uv5Wsr99VLd1HGUzvpW1+7m56bZmZ6v3Za5jDq71rNeb3euD/FOhmcfH9MlaM9fxnws5VTKEAZzmeO19eNYBiRwX9usGg8BAgQIECBAgAABAp0EBO6d2NxE4OkCzYsF85JB1zQCLx2d0zz5/EoXLuXrKS9dCVUFiP3mLru1/3BtYlc+puRqAvV8P5/P9Wp2rTe71bNWXltLfcYQlzbHx3wq9Q8Drc9mR33+zWpznn2C9mMppz4Dd+9kApkrgftk3B5EgAABAgQIECBAgMCcBQTuc54dfSPwWKAJFPelahMy5uOajp15rLDOGucHw3r0/dz+1i8J3mp+6B3+u/Kwmr/KyDq+vZo13Xwt7aQs7WreX5A5a+YkIfvYv3Bpe3xM+nkopWZtPZoDQfsjoXV9/1iGI3Bf15waDQECBAgQIECAAAECHQUE7h3h3EZgQQL7F/pa+7U/Lmicukrg2QL5RcXlWhKo5/N8fMbV9viYHNtyHKCjgvYBEBfYRNaOwH2BE6fLBAgQIECAAAECBAgMLyBwH95UiwTWLPDSER27MuCU2+ulr9l5v+aVsZ2xNbv/z2XIzW71S/k8ZQ5XfvbaHh+T41769r9r0J6jlRL2n+aApw+dBY7lToF7Zz43EiBAgAABAgQIECCwJgGB+5pm01gILE/g/siQjKD2awkWa44pWZ6KHj9T4DZQTz/O1840H5/Zt0fPTuBZe1b6UMfHdA3a43y88X00Nt+ft0DmUuA+7znSOwIECBAgQIAAAQIEJhIQuE8E7TEECEwmsH/hSbvytZT766W6CRCbF3FO1mkPGl2geUFpHnS5lnx+vj65+Th6R0Z4QNZxdrW/tMbvHxeHoY6PeVfaOpbS5mWogvYRFsAMmsw6ELjPYCJ0gQABAgQIECBAgACB5wsI3J8/B3pAgMAyBF46Tic9f+3r+V4C0JSXLkfsDDPvzY702xfEXkrTKbnOwzxmlq1kbX0oJee111yfSqUhjo/5srRzfGNtv9QXQXvNDC23TtaDwH2586fnBAgQIECAAAECBAgMKCBwHxBTUwQIEBhQYP9GW2+F/Le31da7f9TQL8vN8SWXCpvzXZ28cDRBenPdhuoVza26yjOOjxG0r3pJ9RrcsdwtcO9F6GYCBAgQIECAAAECBNYiIHBfy0waBwECBAhsQWBfBjn18TGC9i2srH5jFLj383M3AQIECBAgQIAAAQIrEhC4r2gyDYUAAQIEViuwKyOb+vgYQftql9PgAxO4D06qQQIECBAgQIAAAQIEliogcF/qzOk3AQIECGxFoO3xMTmn/fuOODmGKEF72kjIX3s5o71Wap31jmVYjpRZ59waFQECBAgQIECAAAECLQUE7i3BVCdAgAABAhMJ7Mtzao+PSZfel/KxlNtz72u7uisVm6A9oXvtJWivlVp3vWMZnsB93XNsdAQIECBAgAABAgQIVAoI3CuhVCNAgAABAhMJJPDO8TGHyucl9E7dS2X922q78h8JSmuf1dybF+EeSzl1eKZb1ieQtSBwX9+8GhEBAgQIECBAgAABAh0EBO4d0NxCgAABAgRGEnh3DbJrdpkn9O56fMzn13v3LcchaG8JtpHqAveNTLRhEiBAgAABAgQIECDwWEDg/thIDQIECBAgMLZAgu/sav+s8kFdjo/pej57uvRTKTmu5lTZP9W2JXAsw7XDfVtzbrQECBAgQIAAAQIECLwiIHC3NAgQIECAwPMEpjg+ZncNQ78oH2t2zt9qOKP9eWtjSU8WuC9ptvSVAAECBAgQIECAAIFRBQTuo/JqnAABAgQIvCow9vExeQnqoZR9hzn4VO7JjvZzh3vdsj2BYxmyHe7bm3cjJkCAAAECBAgQIEDgBQGBu2VBgAABAgSmFUgAPtbxMbvSdhO05/O213flhoSnl7Y3qr9pgawZgfuml4DBEyBAgAABAgQIECDQCAjcrQUCBAgQIDCNQJfjY/JS1B8rupeXoB5KybExba9fyw3ZzZ7yS9ub1SdQBI6lCNwtBQIECBAgQIAAAQIECBQBgbtlQIAAAQIExhdoc3xMAvAE7acH3dqV7/fZze5FqOPP+1aeIHDfykwbJwECBAgQIECAAAECDwUE7g+JVCBAgAABAp0FPit3fltKPtZc35RKCS/f2mneZzd7+pBjY06lnGs6pA6BCoGsWTvcK6BUIUCAAAECBAgQIEBg/QIC9/XPsRESIECAwPQCOT4mAWR2qtdcP1zrvnZ8zK58P7vkD6Wk7bbXz+WG07Vc2t6sPoEHAsfrer+v9r58Id9zESBAgAABAgQIECBAYDMCAvfNTLWBEiBAgMBEAjnmJeeh1wTjbx0fk/uzmz2hfe0O+fshJsg/XctEw/eYDQocy5jtcN/gxBsyAQIECBAgQIAAAQL/KiBwtyoIECBAgMAwAgnFP5Syr2zuteNjcn9C+7wAtSa0v39cQvxTKQn9L5V9UY1AH4FDuTlHJ91fn67ruE/b7iVAgAABAgQIECBAgMCiBATui5ounSVAgACBGQoMcXzMroyrzwtQw2I3+wwXx0a6tC/j/NsLY82azPdcBAgQIECAAAECBAgQ2IyAwH0zU22gBAgQIDCCQJ/jY4Y4MsZu9hEmVZOtBV4L3C+lpX9r3ZobCBAgQIAAAQIECBAgsGABgfuCJ0/XCRAgQOBpAm2Pj/mu9DRnsf9SSs5lz3Exhx69z1Ed35dy6tGGWwkMKfBfrzTm/9YcUllbBAgQIECAAAECBAjMXsD/EzT7KdJBAgQIEJiRQNvjY34qfU/QfinlXSkJ2ncdx/Nzue90LWnPRWBOAq8F7v+3dDK/aHIRIECAAAECBAgQIEBgEwIC901Ms0ESIECAwAACbY+PyUtL/7OUBO7ZEd/1yu74Uynnrg24j8AEAlmff3zhOX+ydifQ9wgCBAgQIECAAAECBGYjIHCfzVToCAECBAjMVGBX+vVtKfvK/mU3748t6r/UbHbGJ7DPsTF2B1fCq/ZUgXN5+kuB+1/K109P7ZmHEyBAgAABAgQIECBAYEIBgfuE2B5FgAABAosSyPExOQbmOFGvc2RMAvYE7ZeJnukxBIYSyM/J1y809n7Cn6GhxqIdAgQIECBAgAABAgQIdBYQuHemcyMBAgQIrFggZ61/KGU38hh/Le03Lz89j/wszRMYU+BYGn8pcM+RSIcxH6xtAgQIECBAgAABAgQIzElA4D6n2dAXAgQIEHi2wK50oM3xMV37+0O58VSKI2O6CrpvbgL70qG/vdCprPV8z0WAAAECBAgQIECAAIFNCAjcNzHNBkmAAAECFQLZnZsXnOYomTGuHBlzupbLGA/QJoEnCuzLs18K3PM+g39/Yr88mgABAgQIECBAgAABApMKCNwn5fYwAgQIEJihQILC7GrfjdA3R8aMgKrJ2Qr81ys9839vznbKdIwAAQIECBAgQIAAgaEF/D9AQ4tqjwABAgSWIpCd7Dmn/TBChx0ZMwKqJmcvIHCf/RTpIAECBAgQIECAAAECYwsI3McW1j4BAgQIzFHgXenUsZQhj49xZMwcZ1qfphS4lIf9/oUH/ql87TxlRzyLAAECBAgQIECAAAECzxIQuD9L3nMJECBA4BkCn5WHZlf7fsCHf1faystPU1wEtixwLoP/4wsAAvctrwpjJ0CAAAECBAgQILAxAYH7xibccAkQILBRgexkb3a1D0GQ3ewfSzmV8ssQDWqDwAoEBO4rmERDIECAAAECBAgQIECgn4DAvZ+fuwkQIEBg/gL70sWhXoqa3ewJ2RMsuggQ+GeB/FzY4W5VECBAgAABAgQIECCwaQGB+6an3+AJECCwaoHsak/Q/kXPUdrN3hPQ7ZsRyF995C9J7q//KF/I91wECBAgQIAAAQIECBBYvYDAffVTbIAECBDYpMAQL0W1m32TS8egewgcy71fv3D/+/K1fM9FgAABAgQIECBAgACB1QsI3Fc/xQZIgACBTQn0fSnqr0WrOZv9sik5gyXQXyChusC9v6MWCBAgQIAAAQIECBBYsIDAfcGTp+sECBAg8N8COTrm81K+KiWBe5frp3JTE7R3ud89BAj8Yxe7wN1KIECAAAECBAgQIEBg0wIC901Pv8ETIEBg0QIJ2XM++6HHKHJsTIL2H3u04VYCbQV25YbfX2/KL4nyS6Nct5+/9N9tn/Oo/rlUSPk00M/AsbQjcH+k7vsECBAgQIAAAQIECKxaQOC+6uk1OAIECKxOYFdG9GUph1LyeZfLS1C7qLmnjcAfr5X3r3xs09ZUdU/lQTlr/dLjgcdyr8C9B6BbCRAgQIAAAQIECBBYvoDAfflzaAQECBDYgkBC9uxmT+ly5Wz270uxm72LnnteEkionp3p2ZW+u5b7HepLlDuWTn9Tyi8dOp97Be4d4NxCgAABAgQIECBAgMB6BATu65lLIyFAgMDaBBJivivlUEpz5EbbMf5QbjiVkrC9S4DY9nnqr0sg6+4PpTRB+r58nnWZsubrUgb3l1LOLQd5LPUF7i3RVCdAgAABAgQIECBAYF0CAvd1zafRECBAYA0COZv9UErX3ewxyJnUeYnqZQ0gxjCJQHas70pJuN6Urr/omaTDEzwk7zY4XX+ean6WjqWuwH2CifEIAgQIECBAgAABAgTmKyBwn+/c6BkBAgS2JJBgM8fGJCTf9Rh4zmc/lHLu0YZb1y2Q9ZUXlu5LaY6DyUfX2wIJ3/OXIvnZyhFN+e/bvwCIYUxf+vnN2fBHwAQIECBAgAABAgQIENiCgMB9C7NsjAQIEJivQAK7HBuToL3vbuKcO51Qz9Ex853vqXuW8Lc5EmZfPp/LGetNYB2Py7Xcf57/Tqg91nrOz9vh+jPz25EnRuA+MrDmCRAgQIAAAQIECBCYj4DAfT5zoScECBDYmkCOnhgiaP/pGhwmnHRtVyBhehOuP/tImKzJBOVNYN58vJSvpczpSvD+sZT8hclY159Kw+exGtcuAQIECBAgQIAAAQIE5iQgcJ/TbOgLAQIEtiGQYO9Yyq7ncLNLOO0kLHRtS+A+XN8/Yfg5vuhSSsL024/5fIlXDE+l5LidIa/88sGRPUOKaosAAQIECBAgQIAAgVkLCNxnPT06R4AAgVUJ7Mpovi0lwV7f64fSwKGUS9+G3D97gbzMtNmxnjU0xPppM+gExllnCdabnernNg0srG5+ro6lDBG8+zld2OTrLgECBAgQIECAAAEC/QUE7v0NtUCAAAECjwW+KFUStvc9pz272hMI5uWNrnUJ7K4h7758TMCe/55yZ3SzY/1cnnu7a31dyvWjaV6Cmp+3HNXT5vp0/Rk9tblJXQIECBAgQIAAAQIECKxBQOC+hlk0BgIECMxbIGe1HwfoopeiDoA4gybyS5fmrPVd+bwJdqfsWnatNzvWb3euT9mHJT0r85RfmjXzlY/NDvjsYm/Oqz9fXcd60euSzPSVAAECBAgQIECAAIGNCgjcNzrxhk2AAIGJBPJS1A89n5Wdx4dSEua5liOwK11NKHu7Wz2f9/0rh7YCCYTvw/W2bahPgAABAgQIECBAgAABAgSqBATuVUwqESBAgEAHgX25528d7ru95X35j2PPNtw+nkAC9N+WkrnOdf9xvCe/3LJwfWpxzyNAgAABAgQIECBAgACBfxIQuFsQBAgQIDCWwP8rDXfdzexli2PNSl27eVFprsxfc4767e70fV0zo9XKWf7ZtX6+fmzOXB/tgRomQIAAAQIECBAgQIAAAQI1AgL3GiV1CBAgQKCtQALZLrvbE6QeS/nY9oHqPxRodqOnYhOe3wbqu/L1lLld9y8zFa7PbYb0hwABAgQIECBAgAABAgT+R0DgbjEQIECAwBgCx9JoXpba9kqY2ryAsXnx4qV8LSVXE762bXct9ZsXjjbjuT8TfX8z0F35PGVJV/6yIXN9e+a6F3AuaQb1lQABAgQIECBAgAABAhsXELhvfAEYPgECBEYSyA71dyO1fdtswtmU5rr/73z9pa/l60OE97e7xmuGu3+lUtuv1zxrznV+us5LE6xnjvK5iwABAgQIECBAgAABAgQILFpA4L7o6dN5AgQIzE4gO7C/LeWL2fVMh54h0OxYbwJ1wfozZsEzCRAgQIAAAQIECBAgQGAyAYH7ZNQeRIAAgdULZEf7sZSuL0pdPdAKB9j8lUCC9NvSHA20wiEbEgECBAgQIECAAAECBAgQeF1A4G51ECBAgEBfgV1pILva930bcv9sBHLkS3N2+vnaq0v5mJJLoD6bqdIRAgQIECBAgAABAgQIEJiTgMB9TrOhLwQIEFieQJtd7Z/K8E6l5Nzz3bW0PQN9eULz6fFtiH4p3UrJdb5+bF5WO58e6wkBAgQIECBAgAABAgQIEFiYgMB9YROmuwQIEJiJwK7046+lJDB/dOXYka9K+f6NijmG5rat/U3dfL05pmbrAf2vxeL25aKX8t8pzXW++VyA/mhl+j4BAgQIECBAgAABAgQIEBhYQOA+MKjmCBAgsAGBQxnjh1Jqzmp/X+p9LKU5nmRontswPm3f/3e+truW+2fn67/v2aHbXeM1TZ1fqdT26zXPUocAAQIECBAgQIAAAQIECBCYWEDgPjG4xxEgQGDBAgnYc1b7FxVj+KHUya72293YFbepQoAAAQIECBAgQIAAAQIECBBYroDAfblzp+cECBCYUiA7xxO2PzpCJkeeHEvJrnYXAQIECBAgQIAAAQIECBAgQGBTAgL3TU23wRIgQKCTQHa0J2x/dIRMdrUfSrl0eoqbCBAgQIAAAQIECBAgQIAAAQILFxC4L3wCdZ8AAQIjCyRAT9j+1mVX+8iToHkCBAgQIECAAAECBAgQIEBgGQIC92XMk14SIEDgGQI1YXteGpp6zmp/xgx5JgECBAgQIECAAAECBAgQIDArAYH7rKZDZwgQIDAbgZzV/rdS3jpG5pvy/bwY1UWAAAECBAgQIECAAAECBAgQIFAEBO6WAQECBAjcCyRk/3spu1docoRMgvYTOgIECBAgQIAAAQIECBAgQIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/controlled/popup/main.js b/vue-options-api-demos/inputs/signature/controlled/popup/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/popup/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/controlled/popup/main.vue b/vue-options-api-demos/inputs/signature/controlled/popup/main.vue new file mode 100644 index 00000000..1197e10e --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/popup/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/inputs/signature/controlled/value/main.js b/vue-options-api-demos/inputs/signature/controlled/value/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/value/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/controlled/value/main.vue b/vue-options-api-demos/inputs/signature/controlled/value/main.vue new file mode 100644 index 00000000..35d67f5d --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/value/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/inputs/signature/controlled/value/sample-signature.js b/vue-options-api-demos/inputs/signature/controlled/value/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/controlled/value/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/disabled/main.js b/vue-options-api-demos/inputs/signature/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/disabled/main.vue b/vue-options-api-demos/inputs/signature/disabled/main.vue new file mode 100644 index 00000000..e589e416 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/disabled/main.vue @@ -0,0 +1,18 @@ + + diff --git a/vue-options-api-demos/inputs/signature/disabled/sample-signature.js b/vue-options-api-demos/inputs/signature/disabled/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/disabled/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/events/main.js b/vue-options-api-demos/inputs/signature/events/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/events/main.vue b/vue-options-api-demos/inputs/signature/events/main.vue new file mode 100644 index 00000000..c3e25e18 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/events/main.vue @@ -0,0 +1,11 @@ + + diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/FormContent.vue b/vue-options-api-demos/inputs/signature/forms/kendo/FormContent.vue new file mode 100644 index 00000000..fed071c4 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/forms/kendo/FormContent.vue @@ -0,0 +1,98 @@ + + diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/FormInput.vue b/vue-options-api-demos/inputs/signature/forms/kendo/FormInput.vue new file mode 100644 index 00000000..61915564 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/forms/kendo/FormInput.vue @@ -0,0 +1,89 @@ + + diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/FormSignature.vue b/vue-options-api-demos/inputs/signature/forms/kendo/FormSignature.vue new file mode 100644 index 00000000..aa5f2239 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/forms/kendo/FormSignature.vue @@ -0,0 +1,79 @@ + + diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/main.js b/vue-options-api-demos/inputs/signature/forms/kendo/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/forms/kendo/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/main.vue b/vue-options-api-demos/inputs/signature/forms/kendo/main.vue new file mode 100644 index 00000000..1e5a3f0e --- /dev/null +++ b/vue-options-api-demos/inputs/signature/forms/kendo/main.vue @@ -0,0 +1,24 @@ + + + diff --git a/vue-options-api-demos/inputs/signature/overview/main.js b/vue-options-api-demos/inputs/signature/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/overview/main.vue b/vue-options-api-demos/inputs/signature/overview/main.vue new file mode 100644 index 00000000..60f3128e --- /dev/null +++ b/vue-options-api-demos/inputs/signature/overview/main.vue @@ -0,0 +1,227 @@ + + diff --git a/vue-options-api-demos/inputs/signature/overview/sample-signature.js b/vue-options-api-demos/inputs/signature/overview/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/overview/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEgQIAAga0KCNy3OvPGTYAAAQIECBAgQIAAAQJbE8gLUT+0DNodH7O1VWK8BAgQINBLQODei8/NBAgQIECAAAECBAgQIEBg9gIJ2t+VknPX83nN9dO1/rmmsjoECBAgQIDAPwQE7lYCAQIECBAgQIAAAQIECBBYr8CXZWgfS6kN2nNO+7GU03pJjIwAAQIECIwnIHAfz1bLBAgQIECAAAECBAgQIEDgWQJflAfn+JhdZQd+LfUSzB8r66tGgAABAgQIvCAgcLcsCBAgQIAAAQIECBAgQIDAegT2ZSh5IWo+1lxN0J6w/ZeaG9QhQIAAAQIEXhcQuFsdBAgQIECAAAECBAgQIEBg+QK7MoTsaM/O9trru1LxWMql9gb1CBAgQIAAgbcFBO5WCAECBAgQIECAAAECBAgQWK7ArnQ9O9oPLYbww7W+oL0FmqoECBAgQKBGQOBeo6QOAQIECBAgQIAAAQIECBCYl0BegvqulK9KqX0haoL2YynneQ1FbwgQIECAwHoEBO7rmUsjIUCAAAECBAgQIECAAIFtCCRoT3BeG7T/fK1/2gaPURIgQIAAgecJCNyfZ+/JBAgQIECAAAECBAgQIECgjcCX1+B8V3lTXoiaHfCC9kow1QgQIECAQF8BgXtfQfcTIECAAAECBAgQIECAAIFxBfal+bwQ9bPKxyRo/3gtv1TeoxoBAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAgREEErAnaN+3aPu7Uje72gXtLdBUJUCAAAECQwkI3IeS1A4BAgQIECBAgAABAgQIEBhGYFea+bqUQ4vmPl2D9kuLe1QlQIAAAQIEBhYQuA8MqjkCBAgQIECAAAECBAgQINBRIC9BTdCeHeq11w+l4rGUc+0N6hEgQIAAAQLjCQjcx7PVMgECBAgQIECAAAECBAgQqBFI0P6ulATt+bzm+rlUOpRyrqmsDgECBAgQIDCNgMB9GmdPIUCAAAECBAgQIECAAAECLwl8Wb54LGVXyZOgPfVPlfVVI0CAAAECBCYUELhPiO1RBAgQIECAAAECBAgQIEDgKvBF+ZgXou4qRX4t9T5eixeiVqKpRoAAAQIEphYQuE8t7nkECBAgQIAAAQIECBAgsGWBfRl8zmnPx9rrvaC9lko9AgQIECDwXAGB+3P9PZ0AAQIECBAgQIAAAQIEtiGwK8PMjvbsbK+9visVj6Vcam9QjwABAgQIEHiugMD9uf6eToAAAQIECBAgQIAAAQLrFtiV4WVH+6HFMH8odfMC1R9b3KMqAQIECBAgMAMBgfsMJkEXCBAgQIAAAQIECBAgQGB1Ar8rI3p3Dc7zec2VoP1YyrmmsjoECBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgWULZEd7dqjXBu0/X4P207KHrfcECBAgQICAwN0aIECAAAECBAgQIECAAAECwwh8eQ3Od5XN/Xqt/7GyvmoECBAgQIDAzAUE7jOfIN0jQIAAAQIECBAgQIAAgdkL7EsP80LUzyp7mqA9IXvKL5X3qEaAAAECBAgsQEDgvoBJ0kUCBAgQIECAAAECBAgQmKVAgvYcH5OPtdd3pWKOmxG014qpR4AAAQIEFiQgcF/QZOkqAQIECBAgQIAAAQIECMxCYFd6kaD90KI3n65B+6XFPaoSIECAAAECCxMQuC9swnSXAAECBAgQIECAAAECBJ4mkJeg5uiYNkH7D6X+sZTz03rtwQQIECBAgMBkAgL3yag9iAABAgQIECBAgAABAgQWKpCg/V0pOQomn9dcP5dKh1LONZXVIUCAAAECBNYhIHBfxzwaBQECBAgQIECAAAECBAiMI5Cg/VhKm6A99U/jdEerBAgQIECAwJwFBO5znh19I0CAAAECBAgQIECAAIFnCXx5Ddp3lR34tdT7eL2n8hbVCBAgQIAAgbUJCNzXNqPGQ4AAAQIECBAgQIAAAQJ9BPbl5pzT/lllI03QnrD9l8p7VCNAgAABAgRWKiBwX+nEGhYBAgQIECBAgAABAgQItBJI0P51KflYe31XKh5LudTeoB4BAgQIECCwbgGB+7rn1+gIECBAgAABAgQIECBA4G2BXfl2gvZDC6hPpW5eoCpob4GmKgECBAgQ2IKAwH0Ls2yMBAgQIECAAAECBAgQIHAvkJeg5uiYNkH7D6X+sZQzTgIECBAgQIDASwICd+uCAAECBAgQIECAAAECBLYkkKD9XSnZoZ7Pa66fr/W/r6msDgECBAgQILBdAYH7dufeyAkQIECAAAECBAgQILA1gRwd0zZoP5Z7TluDMl4CBAgQIECgm4DAvZubuwgQIECAAAECBAgQIEBgOQJflq4mON9VdvnXUu/jtfxSeY9qBAgQIECAAIHfCNwtAgIECBAgQIAAAQIECBBYq8C+DOxbQftap9e4CBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgX4CCdpzfEw+1l7flYrHUi61N6hHgAABAgQIELgXELhbEwQIECBAgAABAgQIECCwFoFdGciHUr5oMaBPpW7OdRe0t0BTlQABAgQIEHhZQOBuZRAgQIAAAQIECBAgQIDA0gUStGdH+6HFQH4odY+lnFvcoyoBAgQIECBA4E0BgbsFQoAAAQIECBAgQIAAAQJLFfhd6fi7a3BeO4afS8WDoL2WSz0CBAgQIECgjYDAvY2WugQIECBAgAABAgQIECAwB4EmaM9RMPm85krQfizlVFNZHQIECBAgQIBAFwGBexc19xAgQIAAAQIECBAgQIDAswS+LA/+WEpt0P7rNWjPPS4CBAgQIECAwKgCAvdReTVOgAABAgQIECBAgAABAgMJJGg/lrKrbC9Be0L2lF8q71GNAAECBAgQINBLQODei8/NBAgQIECAAAECBAgQIDCywL60/6GUz1o857tSN8fNCNpboKlKgAABAgQI9BcQuPc31AIBAgQIECBAgAABAgQIDC+QoP3rUvKx9krQfizlUnuDegQIECBAgACBIQUE7kNqaosAAQIECBAgQIAAAQIE+grsSgPZ0f5Fi4Z+KHWzo/3HFveoSoAAAQIECBAYXEDgPjipBgkQIECAAAECBAgQIECgg0CC9uxoP7S4N0H7sZRzi3tUJUCAAAECBAiMJiBwH41WwwQIECBAgAABAgQIECBQIfC7UidBe3ao114/X+t/X3uDegQIECBAgACBKQQE7lMoewYBAgQIECBAgAABAgQI3AskaH93Dc7zec2VoP1YyqmmsjoECBAgQIAAgakFBO5Ti3seAQIECBAgQIAAAQIECDQ72muD9l8L2cdr2E6PAAECBAgQIDBbAYH7bKdGxwgQIECAAAECBAiMIrArrf6+lM9KSdi5v3lKvpfSXHkB5ftSHNsxylRsstEvy6iPd+vsLYgmaE/Y/ssmxQyaAAECBAgQWJSAwH1R06WzBAgQIECAAAECBFoJJFD/Yyn7UhKw52PbKyHnv5dyaXuj+gRuBNoG7bn1m1KOpQjaLSUCBAgQIEBgMQIC98VMlY4SIECAAAECBAgQeCjQBOxflJr7UnYP76ir8OdSzS73Oiu1/lkg6zDHx+Rj7fVdqXgs5VJ7g3oECBAgQIAAgbkICNznMhP6QYAAAQIECBAgQKCbwK7cll3sCdlTxrgE7mOorrvNfRle26D9h3LPoZTLummMjgABAgQIEFizgMB9zbNrbAQIECBAgAABAmsVyE72HNGRcDJHxYx9/ak84Dz2Q7S/CoFdGcWHUtr88idB+9EaW8X8GwQBAgQIENi8gMB980sAAAECBAgQIECAwIIEErKPuZP9NQr/f8OCFsmTupqgPTvaDy2e/1Op+5WgvYWYqgQIECBAgMDsBfwfzrOfIh0kQIAAAQIECBDYuECCzHfXIDM724e4sqP4ci0/lo95KeVfS3mp/U/l6212Kw/RP20sRyBrJkF7gvPa6+dS8VjKqfYG9QgQIECAAAECSxEQuC9lpvSTAAECBAgQIEBgawLNkTH7ngPPLuKE6udrubzQXsLPhKYvXc5v7zkBK709QXt+EZSgvfYXQYL2lS4GwyJAgAABAgT+V0DgbjUQIECAAAECBAgQmI9AE2IeSpd2Hbv1a7nv+2s5l4/Zvf7WlTPg//5KhQSkXfvRsftuW4BAs6O9NmjPmvxYynEBY9NFAgQIECBAgEAvAYF7Lz43EyBAgAABAgQIEBhEIKF3c2xMlwYTjN+G7LVtJDBN2L575QYvS62V3Ea9/NXF8Y31cq/QBO0J2x/94mcbgkZJgAABAgQIrF5A4L76KTZAAgQIECBAgACBGQt8XvqWIzn2HfrY7GRPmJkjY9peCdv/VkrC/peunPPepV9t+6H+/AXaBu0Z0TelHEsRtM9/fvWQAAECBAgQGFBA4D4gpqYIECBAgAABAgQIVAgk6E7QnjByV1H/vkpeYnoqJTva+1wJ2/evNJAwP30TlvYRXv69WR8fSnntlzIvjfC769q+LH/4RkCAAAECBAgQaC8gcG9v5g4CBAgQIECAAAECXQS6vGSyeU4C8FMp2c0+RJD5bWnn8MYgHCXTZYbXc8++DCXntOdj7ZW/iMiaGmJ91j5TPQIECBAgQIDA7AQE7rObEh0iQIAAAQIECBBYmcCujCfhZcLItldCzNO1tL33tfqPwvb35cbjUA/TzqIEspM9O9r3LXqdNZr1cm5xj6oECBAgQIAAgdUKCNxXO7UGRoAAAQIECBAg8GSBhJZtdwk3Xc6xHF3PZn9t2Nlh/9dS0q/Xrjz38GQ3j59eYHddq23mXtA+/Tx5IgECBAgQILAAAYH7AiZJFwkQIECAAAECBBYlkBdMJrjct+z1z6X+qZQE7UOfnZ6dywnbd2/0SdjecsJWUD3roe1fX2SdHq9rdQUEhkCAAAECBAgQGFZA4D6sp9YIECBAgAABAgS2KdDnRag/FbKE7KeR6L4o7eYYmfTxtSt9aPNizJG6qtmJBLIWErR/1eJ5gmpWyTgAACAASURBVPYWWKoSIECAAAEC2xUQuG937o2cAAECBAgQIECgv0CfF6GOfSTHrgwv53EncH/rSti+L2XoXfX9dbUwtECX9ZoX9uYXQsehO6M9AgQIECBAgMAaBQTua5xVYyJAgAABAgQIEBhbYFce0PYojqZPObol4eVlxE6+uz7jrV3tefynUg6lCNtHnIwZNN0naB/jiKMZkOgCAQIECBAgQGAcAYH7OK5aJUCAAAECBAgQWKfAvgyrOaO9zQibXcJjh5e70qkcH5N+Prq+KRXaHCnyqD3fn6dA7S9fmt5PtVbnqaVXBAgQIECAAIGeAgL3noBuJ0CAAAECBAgQ2IRAAuzsaM/HNlfOvW7OZx97F3n6d6zoXALVBO2nirqqLFcgvxjKeti1GMIUf33RojuqEiBAgAABAgSWJyBwX96c6TEBAgQIECBAgMB0As1u9n3LR479ItTb7qRv2dVeE6ymX4dSfmw5HtWXIyBoX85c6SkBAgQIECCwQgGB+won1ZAIECBAgAABAgR6C3QJLfPQsV+EejuwBOy1x8fkvvelHHvLaGCuAl3WbM7wz187XOY6KP0iQIAAAQIECCxNQOC+tBnTXwIECBAgQIAAgTEFuoSW6c+UR3HkBZg5Pqb2/PX8EiB17Wofc+U8r+39dT3kY+015S+GavukHgECBAgQIEBgFQIC91VMo0EQIECAAAECBAj0EEiA/Xkpx1J2LdrJWeinUnJG+6XFfX2q5hcCeV76/OhK/zKm1HetT2BfhtT2vQKC9vWtAyMiQIAAAQIEZiYgcJ/ZhOgOAQIECBAgQIDAZAIJrd+Vkt3fNQF207EE2QmxU8Z+EWrzzISrH0r5rFInweqhlEtlfdWWI5C1IGhfznzpKQECBAgQILAxAYH7xibccAkQIECAAAECBP47XO8StP9c7juWcprQMAF7gvaErDVX+phfIHxfU1mdRQlkDbQN2p+xZheFqrMECBAgQIAAgaEFBO5Di2qPAAECBAgQIEBgrgJLCtp313D1UInZ7Lo/VtZXbTkCgvblzJWeEiBAgAABAgR+I3C3CAgQIECAAAECBNYusKSgPX3NjvbaoD1zN+ULW9e+VuY0PkH7nGZDXwgQIECAAAEClQIC90oo1QgQIECAAAECBBYn0DVoz/nnOZ99ymNZuvTVCzAXtySrOrwrtXJ0zKGq9j8qOTqmBZaqBAgQIECAAIExBQTuY+pqmwABAgQIECBA4BkCXcLr9PNZAXbC1TYvbs3xMal/egauZ44msCsttw3an/EC39EANEyAAAECBAgQWIOAwH0Ns2gMBAgQIECAAAECjcCX5ZNjKQkva69nBe1t+ypcrZ3RZdXLWhW0L2vO9JYAAQIECBAg8KqAwN3iIECAAAECBAgQWINA2/A6Y15K0J6+vi8lx9z8sobJMob/FtiVImi3GAgQIECAAAECKxMQuK9sQg2HAAECBAgQILAxgbUH7V6Iur4FLWhf35waEQECBAgQIEDgfwQE7hYDAQIECBAgQIDAEgXWHrR/KpOSc9ovS5wcfX5R4LPy1XelHFr4OEaoBZaqBAgQIECAAIE5CAjc5zAL+kCAAAECBAgQIFArsC8VP5SS8LL2WtLRMc/qa62leu0FsmZzdEw+1l6C9lop9QgQIECAAAECMxMQuM9sQnSHAAECBAgQIEDgRYEuoeWzwusl7b633MYT6LJmBe3jzYeWCRAgQIAAAQKTCAjcJ2H2EAIECBAgQIAAgY4C2cmeHe0JL2uvn0rFHMdyrr1hoHqC9oEgF95M1qod7QufRN0nQIAAAQIECHQVELh3lXMfAQIECBAgQIDAmAK7a2h5aPGQn0vdYymnFvf0rfq70sDn1+emz7XXs3bf1/ZPvfYC+YVL1uu+xa12tLfAUpUAAQIECBAgsAQBgfsSZkkfCRAgQIAAAQLbEdiVoWZ3cILL2utZQXtegJmd9Anday9Be63Ucup1+csGQfty5ldPCRAgQIAAAQKtBATurbhUJkCAAAECBAgQGEkgoXXbAFvQPtJkaPahQNe/bBC0P6RVgQABAgQIECCwbAGB+7LnT+8JECBAgAABAksX6BK0J7Q8lvJxwsF36We6Z0f7hJM0waO6rgNB+wST4xEECBAgQIAAgTkICNznMAv6QIAAAQIECBDYpkDbozieEVp2DVgF7eta07synLZHHUXgGWt2XfJGQ4AAAQIECBBYmIDAfWETprsECBAgQIAAgRUI7MsYvi0lIWbt9b5UzI72X2pvGKBefiGQZzqjfQDMhTaRtdq8DLXNEJrjjr6feM226aO6BAgQIECAAAECIwgI3EdA1SQBAgQIECBAgMCLAgkvs0s4H2uv70rFYymX2hsGqNd2530eaUf7APAzaqIJ2dus1XT/Ge8VmBGbrhAgQIAAAQIECAjcrQECBAgQIECAAIGxBXblAW2P4xC0jz0r2r8XyF8yJGj/qpSs2TZXfuFyupY296lLgAABAgQIECCwMgGB+8om1HAIECBAgAABAjMSSID5oZRDiz49Y6f4/trPz2bezxbdU7WFwK7UfXddp22OD8ojnrFeWwxNVQIECBAgQIAAgakFBO5Ti3seAQIECBAgQGD9Al1eNPpTYcnO4vOEPPvyrLZH3AhYJ5ygkR+V+U/Q/kWH5zzjLzA6dNMtBAgQIECAAAECUwsI3KcW9zwCBAgQIECAwLoF2r5o9BlnXu/KFOSlrQlcay9Be63U/Os1x8a0+YuGjOrXUk6l5EW6l/kPUw8JECBAgAABAgSeISBwf4a6ZxIgQIAAAQIE1iewL0NKiL2rHFrCy+M1vKy8pXe19K3tWfLP2Hnfe6Aa+BeBzH0TtLc9Nia/FErIfirlF7YECBAgQIAAAQIE3hIQuFsfBAgQIECAAAECfQSySzjntO8rG0nQnvAyZarwMgFrgvYcWVN7PWPnfW3f1KsXyLpM0H6ov+V/anoRagc0txAgQIAAAQIEti4gcN/6CjB+AgQIECBAgEA3gV25re1u8anPve5ylrygvdt6mNtdXY+NyTiyTk+lnOc2KP0hQIAAAQIECBCYv4DAff5zpIcECBAgQIAAgTkJdAmxs1P4UMplwoHkZZjHUmqPD2l23uce1zIFdqXbXY+NcT77MudcrwkQIECAAAECsxMQuM9uSnSIAAECBAgQIDBbgbYvRH3Gi0bTx4TmCV9rrmcccVPTL3XqBfalatdjY5q/aPi+tDHVEUf1I1OTAAECBAgQIEBgcQIC98VNmQ4TIECAAAECBCYXSKDZ5oWozziWpW0fg/hNKUdB6+TraYgH5i8XPr/O365Dg/llUN4jkKDdRYAAAQIECBAgQGAwAYH7YJQaIkCAAAECBAisTqDrC1GPE0rsy7Nylnw+1l5TnyVf2y/1HgvsrvP9RflYe1xQ02r+miEBe9bn5fGj1CBAgAABAgQIECDQXkDg3t7MHQQIECBAgACBtQskyPxQyqHFQKfeLb679jHBa+31jLPka/um3tsC2c3+VSn7DlD5i4vsZj+V4tiYDoBuIUCAAAECBAgQqBcQuNdbqUmAAAECBAgQ2IJAdosn2KzdPfzpWv8yEc6uPCd9PLR43jPOkm/RPVVfEchcN2ez5/O2l2Nj2oqpT4AAAQIECBAg0FtA4N6bUAMECBAgQIAAgVUItH3Z6NQhdn4B8K6UYwvt7Gw+lHJucY+qzxfYly50fQmqY2OeP396QIAAAQIECBDYtIDAfdPTb/AECBAgQIAAgf8+oqPNGehTvxC1Cdrb7Lqfuo+WUX+Bvi9BbeY8Z7Q7Nqb/fGiBAAECBAgQIECgo4DAvSOc2wgQIECAAAECCxfYXYP2Q+U4snM452AfK+sPUS27nPPM2uNtntHHIca55TbyYt785UKXl6DGLS/APZVy3jKisRMgQIAAAQIECMxHQOA+n7nQEwIECBAgQIDAFAJddown1MwO86l2Drc93qYJ2hPOT9XHKeZqzc9ojozZdxhkdrMnZE+5dLjfLQQIECBAgAABAgRGExC4j0arYQIECBAgQIDA7ATaBtk5p/0wYai5L8/6UEp2PddeU/8yoLZf6v2rwK58KbvZs6Zq/2rhtpWsx9O18CVAgAABAgQIECAwSwGB+yynRacIECBAgAABAoMK7Etrbc9pTyh6HrQXrzfWtn9pKUH7sZTLRH30mO4CfXazNy9BzV8v/Ni9C+4kQIAAAQIECBAgMI2AwH0aZ08hQIAAAQIECDxDYFcemqD9UPnwhJvHUhJuTnFlJ3t2tO9bPCy7nHO8jfC1BdoTqmbtNUF7Pm97eQlqWzH1CRAgQIAAAQIEZiEgcJ/FNOgEAQIECBAgQGBQgS7ntH9TenAsZYoz0BPAtvlFQHAStKd/50GlNDa0wOelwUMpeQlql8tLULuouYcAAQIECBAgQGA2AgL32UyFjhAgQIAAAQIEBhFoe077p/LU7Bi/DPL0txvZlW+3Ddqz0zn9+36C/nlEN4HMa9/d7KfShpfedvN3FwECBAgQIECAwIwEBO4zmgxdIUCAAAECBAj0EGh7PMtP1yD73OOZtbdmx32C9gTntVdzpMip9gb1Jhfou5s9v+zJ/PplyuRT54EECBAgQIAAAQJjCQjcx5LVLgECBAgQIEBgGoGE2TkH/VD5uJzTnuA7QefYV5ejbaY+R35sg7W1vysDGmI3e9bfZW04xkOAAAECBAgQIEBA4G4NECBAgAABAgSWK9DsGk+wXXO9L5WmOLaja9Cevk3Rvxordf5ZoO9u9pzBf7oWtgQIECBAgAABAgRWKyBwX+3UGhgBAgQIECCwYoG8kDK72neVY0zYeSjlUlm/azVBe1e5ed6X+cxu9vxFRO1aux1J/lrhVEp+iTL22punoF4RIECAAAECBAhsTkDgvrkpN2ACBAgQIEBgwQIJPb8tZV85hpyDfijlXFm/T7UEswlWa3fb51nflXIs5dLnwe4dXCDrqzk2pkvjdrN3UXMPAQIECBAgQIDAKgQE7quYRoMgQIAAAQIEVi7Q9qWjU56DnmA2ofmuxRwI2ltgTVQ189fnbHa72SeaKI8hQIAAAQIECBCYt4DAfd7zo3cECBAgQIAAgbY7x7+5BuC/jEwnaB8ZeKLm+57N/lPpZ/6y4TRRfz2GAAECBAgQIECAwKwFBO6znh6dI0CAAAECBDYssC9jzzntn1UaTHVOe5egPX07lnKuHItq4wpkTTW72dscAdT0KrvZvy8lQfuP43ZV6wQIECBAgAABAgSWJSBwX9Z86S0BAgQIECCwfoFdGeLXpRwqh5pz2vNSywSgY16C9jF1x28766rZzV77S5z7XjW72bPWxv4LivFFPIEAAQIECBAgQIDACAIC9xFQNUmAAAECBAgQ6CiQoD3hec2u4+wyzg7jY8dn1d4maK+Vml+9rKOE7F9cS5ce2s3eRc09BAgQIECAAAECmxUQuG926g2cAAECBAgQmJFAAtEcH7Or7NMULx0VtFdOxgyr3YbsNb+8eWkIdrPPcGJ1iQABAgQIECBAYP4CAvf5z5EeEiBAgAABAusVSMD+bSn7yiFOcRa6oL1yMmZWre+57BlOdrOfrsXZ7DObYN0hQIAAAQIECBBYhoDAfRnzpJcECBAgQIDAugSy67g5PqZmZAlCc9RMwtAxrubokWNpfNfiATk/PveM1a8WXdlk1SZkz19ItJm3e6xP5Qs5l908bnIZGTQBAgQIECBAgMCQAgL3ITW1RYAAAQIECBB4LJAd5Dl7vfaoj/fX+mO8pDJ9eFdK7bnxzegE7Y/neawau9Jw35efpm+Zw6zDBO2XsTqrXQIECBAgQIAAAQJbExC4b23GjZcAAQIECBB4lsC+PDi72vOx5srxMYdSLjWVW9YRtLcEe3L1zFd+UZP1kF3tXS9HxnSVcx8BAgQIECBAgACBSgGBeyWUagQIECBAgACBjgIJS/NC1ISlNVd2HqfuuaZyyzq7Uj872tN+7Q77PMKO9pbQA1RvjvnJcTEpXa+E7NnF3pSu7biPAAECBAgQIECAAIEKAYF7BZIqBAgQIECAAIGOAs057TXhdoLRHPFx7Pist27blW+mL4eWbf907dOp5X2qdxdojovpE7Ln6c257AnaxziOqPsI3UmAAAECBAgQIEBgxQIC9xVPrqERIECAAAECTxPYlyd/W8qusgfflXo5R33oYDT9yI72tuFtjrM5lnKu7L9q/QQyTzkyJvNU88uZ156WX5CcrmXotdRvhO4mQIAAAQIECBAgsBEBgftGJtowCRAgQIAAgUkEduUpOT6mNuBOQJqg/Txw75rzvvct2xW0twTrUT1rpZmnfN71akJ2Lz/tKug+AgQIECBAgAABAgMKCNwHxNQUAQIECBAgsFmB5iWkx0qBHB+ToP1UWb+mWvNizbS7q7nhpo6gvSVYx+rNueyZoz4vP82Z+gnYs35+7NgXtxEgQIAAAQIECBAgMIKAwH0EVE0SIECAAAECmxLIbvbsat9VjvqbUu9YylBHfuS5XV6Emu7mKJucGy+0rZy8jtVyLnvWyaHj/bmtefmp+eqB6FYCBAgQIECAAAECYwsI3McW1j4BAgQIECCwVoFdGVjOad9XDjC7yLOzeahwO8/tcj57upug/VjKpbLvqrUXyProe2RME7JnN3uKiwABAgQIECBAgACBmQsI3Gc+QbpHgAABAgQIzE4gx4J8XUrC85orx3+k7lCBaULcLkeSJLzN7uhTKZeajqvTSaDr+fm3D/t0XS+ZKxcBAgQIECBAgAABAgsSELgvaLJ0lQABAgQIPFFgV579+xeen6+n3F+vff22XoLrPudYp63sFr89miWf3+4gv/3vBN+XnoYJUxNap++PribgTv2+x8fkec2xMS95v9WXjLsJ2vv249GYt/r9zEnXY30as7z8NPOUX8yYp62uJOMmQIAAAQIECBBYvIDAffFTaAAECBAgQOChwB9varwUcu/vWhgiCH/YqSdXuA3qz9e+NB8TfN4HnvnFQM5pv7d6bRjZoZxd6Jee49yV+7Ob/tChnRxhc7qWDre7pUIgZ7Nnbr6oqPtSleblpwna+66Vjl1wGwECBAgQIECAAAECQwoI3IfU1BYBAgQIEBhPIIHvb6/N3wfi+d7tjuv9eN3YVMsJQJsQtNY0AeqhlHNPqQS5Cexrn3v7uJzPfhqgDz2HsNrb87PWHOuz6zDK5lx2c9QBzy0ECBAgQIAAAQIE5i4gcJ/7DOkfAQIECKxR4DY8vw3Lbz/fwi7ztc1tgu5Dj0FlzhO0H0tpG+QmxE2Aa6d0jwl4cGvmJH9tkN3sNUcK3TfX/MWBI2PGmyMtEyBAgAABAgQIEHi6gMD96VOgAwQIECCwAoHbI1v2N+N57fMVDNkQXhHIUTQ5ruZ8LQlZH127UqHr+d/OZ3+k2//7ff7awC9C+vtrgQABAgQIECBAgMCiBATui5ounSVAgACBiQSye/UP12clDE3Jdfv5/TEuE3XNYxYocCp9zu73813f9+W/E7R3Of87QX7zgs0Fksy+y33+2iCDyxn+mffsZncRIECAAAECBAgQILAhAYH7hibbUAkQIEDgN81RLrfHteyKS0quPaNXBbJTNzu3769L+UJK7ddv6zW7wfuw3//i4/4ontv5vT3Kp88zu957Ljf+uZRmx3T60/ZKcJ+g/aW5aNuW+v8qkPXS9a8N7Ga3oggQIECAAAECBAgQ+I3A3SIgQIAAgTUINEe63IatTRDrLPTf/Ob+WJMEv7dXwtuE37fXfZ01rJPbMeyv/3EoH/MCzDlfCXITsqfcz9Oc+72kvmU9ZB1kPbS9frrOzantjeoTIECAAAECBAgQILA+AYH7+ubUiAgQILAmgSZI35VBpeTaXz/efm1NY35tLDmr+3LzzfPN5/eB+UsB+haM2owx6+dDKbXHuTS/tLg9bqjN87rUFeR2UWt3TxOyN/+utLk7f21wKuX2Z7HN/eoSIECAAAECBAgQILBCAYH7CifVkAgQILAQgSZMb3aiJwBN2cKO9Nvw/FLGnJLr/ogVQd44i/nr0uxX17X26AnZXZ66p7uKzXrdX9dt/vv25bmP2n3r+zn/O7vZzX8fxdfv7XM+e/PXBlkPzc/tOL3UKgECBAgQIECAAAECixQQuC9y2nSaAAECsxfYWpiencjNUR+3u8tf+3z2E7jSDu7LuL4tZVc5vm9KvePN3D66Le222TV/257zvx/p9v9+gvacz177y5bbJ/prg/7+WiBAgAABAgQIECCwCQGB+yam2SAJECAwqMBWwvTmCJHbXee3n1+Kaopr/gK70sU2QXjm/tBifvelbtfzv/PXDsdSvi/F+ezjrKXMf/6qIXPa9vLXBm3F1CdAgAABAgQIECCwcQGB+8YXgOETIEDgTqA5n7o51uX+49LBbo9yaXaf34bozj5f+gz/c/+bHc3HymFlfWT3c8LvR1efY0nSdkL9HBtT86xHffH9lwV25ctdgnZ/bWBFESBAgAABAgQIECDQWUDg3pnOjQQIEFikwFoD9dsjXc7XmbmUjym5mq8tctJ0upNAXoaaXe27yrvfl3oJwB/tMk97OZbkUEp+ntpe2TGdUL9Zm23vV/+xwL5USdCej22u/MIla+BUsQ7atKsuAQIECBAgQIAAAQIbEhC4b2iyDZUAgU0IrC1Qb4L0l3ah335tE5NrkFUCu1Ir57Tvq2r/Y6f5oZTLg/qfl+8nKK9t96XmsnM6/XsU6ld2XbU7gcxNl6Dd+eyWEgECBAgQIECAAAECgwkI3Aej1BABAgQmEVhToN6E6Qk6U24D9PMkmh6yJoExjo/ZFaDmbPZ83vfKLvpj30bc/y8C+/KVLkF7ftmS+fDvjUVFgAABAgQIECBAgMBgAgL3wSg1RIAAgcEEmlB9V1pM+ayUfC2h0lIuYfpSZmod/WxzfEx2mefYkOMbQ8/PWo6NSbtDXTmuJD/PruEEMk9dgvbvrvN/Ga4rWiJAgAABAgQIECBAgMA/BATuVgIBAgSeI5Dg7fel3IbpzQtKn9Oj+qcK0+ut1BxXID9HbY6Peev89Pz8ZTd7jo1Ju0Nf/14azEt5Xf0F9qWJtkG7F6H2d9cCAQIECBAgQIAAAQIVAgL3CiRVCBAg0FEgYfpvS0k41ITpSwjVm0D9fB33/ceOHG4jMJhAl+NjDuXpzVq+7Uh+PptjY7p0MCH+H0rZvXHzf5TvZVe9q59A5qpL0B77mhfi9uuduwkQIECAAAECBAgQIFAEBO6WAQECBPoJ/PF6e4KgJkzflc9T5no1gXp22zbnpt9+nGu/9YtABBKOJzzNz9uj67XjY/Lz2eds9qbd70s7OXrm8EZHcnzJW99/NAbf/8e/p23+kiFmzRwJ2q0gAgQIECBAgAABAgQmFRC4T8rtYQQILFQgYU9z/Es+z8715iiYOQ5JoD7HWdGnvgL5mftQyr6yofvjYxLQf17KoUUb94/KSzZP15L2/nb9t+C1LuVnMf3NL7Rc7QXy7212tGfOaq+clX8sJb8M4V6rph4BAgQIECBAgAABAoMJCNwHo9QQAQIrEMhu9WaX+u3Z6nMbmkB9bjOiP2MK5GcyoWvOVq+5ErgeSjlfK+/Lx+xm/+L6813Txm2d7JROeHss5XL9Rv59SNj+1i57YXtb6f+t3/bIoNzZBO2n7o91JwECBAgQIECAAAECBPoLCNz7G2qBAIFlCSTIyXnLt4H6rvx3ypyu7KS9P+7lUr6W4iKwFYG2x8ccC0yOEMnPc58jY+KbwDxt3e+UTvif57x1Cdu7r9Ac0RPfmiOD8hRBe3drdxIgQIAAAQIECBAgMIKAwH0EVE0SIDALgdtgfVd6lIB9P4ue/W8nbkP1S/lyyo+lOAZhZhOlO5MLtD0+JuekH0vJX6lkJ3tKl6vZzZ6gPT+Lt1f+Hak5Rzx9yW58P8ftZiD/Psc3zjXXa+fz19yrDgECBAgQIECAAAECBEYTELiPRqthAgQmFEg4l13rCWoS2uRjbWgzZjcTCCW0u1xLE6afx3yotgksWKDt8THZSd4c7XLoMe7XdrM3TSbATxj8aNf1N6VO7dE3Pbq7qlvzb3XNLzKaQXsZ6qqm32AIECBAgAABAgQIrE9A4L6+OTUiAmsWSDCTl5fuS0nInv/Ox2deOc7gUsp9mH5+Zqc8m8ACBdocH9MML7vIH4Xgr1HkZzfHxWQ3e36GX7rSdsLgmh3zfyn1Tgt0f1aXY9scH1Pbh/fX+fLXA7Vi6hEgQIAAAQIECBAgMLmAwH1ycg8kQKBSIEdD3Ibq+bxrsFb5yDer5fiXy7U0u9bvj5wY4jnaILA1gbbHx/T1yZEvCdpT3rpqfwGQ4D6BvH8P6mdmX6q2OT6mOTIo/wa7CBAgQIAAAQIECBAgMGsBgfusp0fnCGxGoDkSJiFMPn/WrvXb3eoJdm6Pg9nMZBgogYkE2h4f06dbj46MuW17V/6j9oiTT6XuoRQ7rutmJ3P+4WpWc0d+0Xks5VxTWR0CBAgQIECAAAECBAjMQUDgPodZ0AcC2xJowvUmWN8/YfgJ3y6lJFC/PwrmCd3xSAKbE6jdPd4HJmd9n66lZvd52yNO/qO0neNoXHUC+SuAmnPw01p++flVKY/+CqHuyWoRIECAAAECBAgQIEBgQgGB+4TYHkVggwLPDtfvg/Vmx/oGp8KQCcxCYOzjYxKyN8fFtAlr8wuAYym7CqX8u3IopSbEr2huE1XilbD90dW8EDVz4SJAgAABAgQIECBAgMAiBQTui5w2nSYwS4HsDs256/tSEqrl41RXQpqEX+dSLteSz10ECMxDYOzjY3K0SwL2U8vh5t+pr1v8e5WXdh5bPmPr1Q8FoCZszxxmV3v+DXcRIECAAAECBAgQIEBgsQIC98VOnY4TeLrA7bnrCa12E/WoeXlpcxxMcyTMRI/3GAIEWgqMdXxME7InaG973uQL5wAAIABJREFUhnr+vUrQfqgci13tlVB31eL7KGx3fEw3W3cRIECAAAECBAgQIDBTAYH7TCdGtwjMUOB+93p2rI553e5ab46CcYTDmOLaJjCswL4012b3eM3T8wu3UyldQva03/acdkec1MzKy3XyS9m/Xc1fa+Wb8o1jKW1/YdK9V+4kQIAAAQIECBAgQIDAyAIC95GBNU9goQK70u8/lLK/lgQnY1734bqz1sfU1jaBcQTy70Z+MZeXY+bfjqF+KZeQvTmX/dKx603QniNLavvliJOO2Nfb/l4+vva/Hfk3P+vk3O8R7iZAgAABAgQIECBAgMD8BATu85sTPSLwDIEEUJ9fQ7IEZbsROyFcHxFX0wQmFBjrWKn8G5EgtgnZ++5+bvNC1PDliJPDtQ8Tcq7qUR/LaN69MqLMb/53xl8srWrKDYYAAQIECBAgQIAAgUZA4G4tENiuwG3APtYOduH6dteXka9PYMxjpfJvRROw5+MQV9ugPX04lpKw2NVdYF9uzVEyL10xzv/eXLo3704CBAgQIECAAAECBAjMW0DgPu/50TsCQwrsSmPNcQ/5U/4xrrxYMLsWz9ciVBlDWZsExhfIX73k34uEo/trGfqp2UmecP10/XdjqPbT3w/Xvte2+b5UTNDedzd97fPWXC9he+bgpevP1zlf8/iNjQABAgQIECBAgACBjQsI3De+AAx/9QK7MsLsZD+UMsYu9pytfC6lCdmFVatfUga4UoH8W3G7g32Mfy9uj4rJvxuXgS33pb22L2n9rtxzHKEvAw9tMc3lf2u+faW3ORN/rF/2LgZIRwkQIECAAAECBAgQWL+AwH39c2yE2xNozmNPsDFkuNGEZQnKmoB9e7pGTGAdAvfh+m7EYSXUzu7xsc7s3pe22wbt+WXhsZT8e+YaTuA/S1MvraX870e+7peyw1lriQABAgQIECBAgACBmQoI3Gc6MbpFoINAwoyETgnZE7r3vXI8zLmUJly/9G3Q/QQIPEUgu9Wb42Hy+Ri7118aWP4N+er678gYA99f/83Lx9pL0F4r1b5e/rfnr6/c9pfy9VP7Jt1BgAABAgQIECBAgACB5QkI3Jc3Z3pM4F4gYdO7UvruZs95yudrybnKdiJaawSWJ5Aw/Q+lNMF6/n2Y+hr75aMZU9sd7fn37VjKaWqMDT0v/7uRI8zur9jvNuRgqAQIECBAgAABAgQIbFxA4L7xBWD4ixZIgJHQ6dBxFLdHxJxLG2Md99Cxe24jQOCBQP4NaML1ffk8IfsQf93SBz7Hx2RX+xi/sMsYBe19Zmfce//rlebtbh/XXesECBAgQIAAAQIECMxMQOA+swnRHQKVAodS70OHcC0he3YhNqXycaoRIPBkgWbn+q70Y1/KHML1W5Ixj4/JeAXtT16ADx7/1nEy/m/Nec+d3hEgQIAAAQIECBAgMLCA/ydoYFDNEZhA4NvyjEOL5wjZW2CpSuDJAtmhnl3rCZl3pUx95vq5PPP3pdQeUTXm8TExaBu0pz95QWvKGLvsn7w8Zvv443Wu7juYM/Mzjy4CBAgQIECAAAECBAhsRkDgvpmpNtCVCLwWarw0vBztYCf7SibeMFYpkDA94XY+JpScctd6ztXOMVIp52vZlY/5hV76UnONdXxMni9or5mB+dR57X+b3pcu5nsuAgQIECBAgAABAgQIbEZA4L6ZqTbQFQgkjPt7xTi+uQYcdndWYKlCYAKBP5Zn7K4lP8f5PB+nurLruwnWm4+3/z5kV31evHys7NBYx8fkhZs5/31f2Y9Us6O9BdaIVbN28kuS+0vgPiK6pgkQIECAAAECBAgQmKeAwH2e86JXBF4SeC3QeKR1fqFCQrf7QP6lr+U4ABcBAo8FdqVKs1s9nzdHwSTMnvrKz+3t7vXLGx3I0TF5H0T6/Oga6/iYL8uD8+9bTR+aPgraH83WtN/P/AncpzX3NAIECBAgQIAAAQIEZiogcJ/pxOgWgRcEXgs0psY63z0wwX3CvdvrUv4j5fbKERb3X5u6755HoI/ArtycUD0fU5ojYPZ9Gu15b3ab3+5ev/9ZfK359P/Zx8cI2ntO/oxuP5a+CNxnNCG6QoAAAQIECBAgQIDA8wQE7s+z92QCbQUSkCVM+23bG2dc/1L6lnJ71X6tOSZjxsPTtYUJ5GfsNlDPf9+WZw7n9liY/Iw0O9jb9mkOx8cI2tvO2vzrH0sXBe7znyc9JECAAAECBAgQIEBgAgGB+wTIHkFgQIHsqM2LUBMKul4WOL/w5Uv5Wsr99VLd1HGUzvpW1+7m56bZmZ6v3Za5jDq71rNeb3euD/FOhmcfH9MlaM9fxnws5VTKEAZzmeO19eNYBiRwX9usGg8BAgQIECBAgAABAp0EBO6d2NxE4OkCzYsF85JB1zQCLx2d0zz5/EoXLuXrKS9dCVUFiP3mLru1/3BtYlc+puRqAvV8P5/P9Wp2rTe71bNWXltLfcYQlzbHx3wq9Q8Drc9mR33+zWpznn2C9mMppz4Dd+9kApkrgftk3B5EgAABAgQIECBAgMCcBQTuc54dfSPwWKAJFPelahMy5uOajp15rLDOGucHw3r0/dz+1i8J3mp+6B3+u/Kwmr/KyDq+vZo13Xwt7aQs7WreX5A5a+YkIfvYv3Bpe3xM+nkopWZtPZoDQfsjoXV9/1iGI3Bf15waDQECBAgQIECAAAECHQUE7h3h3EZgQQL7F/pa+7U/Lmicukrg2QL5RcXlWhKo5/N8fMbV9viYHNtyHKCjgvYBEBfYRNaOwH2BE6fLBAgQIECAAAECBAgMLyBwH95UiwTWLPDSER27MuCU2+ulr9l5v+aVsZ2xNbv/z2XIzW71S/k8ZQ5XfvbaHh+T41769r9r0J6jlRL2n+aApw+dBY7lToF7Zz43EiBAgAABAgQIECCwJgGB+5pm01gILE/g/siQjKD2awkWa44pWZ6KHj9T4DZQTz/O1840H5/Zt0fPTuBZe1b6UMfHdA3a43y88X00Nt+ft0DmUuA+7znSOwIECBAgQIAAAQIEJhIQuE8E7TEECEwmsH/hSbvytZT766W6CRCbF3FO1mkPGl2geUFpHnS5lnx+vj65+Th6R0Z4QNZxdrW/tMbvHxeHoY6PeVfaOpbS5mWogvYRFsAMmsw6ELjPYCJ0gQABAgQIECBAgACB5wsI3J8/B3pAgMAyBF46Tic9f+3r+V4C0JSXLkfsDDPvzY702xfEXkrTKbnOwzxmlq1kbX0oJee111yfSqUhjo/5srRzfGNtv9QXQXvNDC23TtaDwH2586fnBAgQIECAAAECBAgMKCBwHxBTUwQIEBhQYP9GW2+F/Le31da7f9TQL8vN8SWXCpvzXZ28cDRBenPdhuoVza26yjOOjxG0r3pJ9RrcsdwtcO9F6GYCBAgQIECAAAECBNYiIHBfy0waBwECBAhsQWBfBjn18TGC9i2srH5jFLj383M3AQIECBAgQIAAAQIrEhC4r2gyDYUAAQIEViuwKyOb+vgYQftql9PgAxO4D06qQQIECBAgQIAAAQIEliogcF/qzOk3AQIECGxFoO3xMTmn/fuOODmGKEF72kjIX3s5o71Wap31jmVYjpRZ59waFQECBAgQIECAAAECLQUE7i3BVCdAgAABAhMJ7Mtzao+PSZfel/KxlNtz72u7uisVm6A9oXvtJWivlVp3vWMZnsB93XNsdAQIECBAgAABAgQIVAoI3CuhVCNAgAABAhMJJPDO8TGHyucl9E7dS2X922q78h8JSmuf1dybF+EeSzl1eKZb1ieQtSBwX9+8GhEBAgQIECBAgAABAh0EBO4d0NxCgAABAgRGEnh3DbJrdpkn9O56fMzn13v3LcchaG8JtpHqAveNTLRhEiBAgAABAgQIECDwWEDg/thIDQIECBAgMLZAgu/sav+s8kFdjo/pej57uvRTKTmu5lTZP9W2JXAsw7XDfVtzbrQECBAgQIAAAQIECLwiIHC3NAgQIECAwPMEpjg+ZncNQ78oH2t2zt9qOKP9eWtjSU8WuC9ptvSVAAECBAgQIECAAIFRBQTuo/JqnAABAgQIvCow9vExeQnqoZR9hzn4VO7JjvZzh3vdsj2BYxmyHe7bm3cjJkCAAAECBAgQIEDgBQGBu2VBgAABAgSmFUgAPtbxMbvSdhO05/O213flhoSnl7Y3qr9pgawZgfuml4DBEyBAgAABAgQIECDQCAjcrQUCBAgQIDCNQJfjY/JS1B8rupeXoB5KybExba9fyw3ZzZ7yS9ub1SdQBI6lCNwtBQIECBAgQIAAAQIECBQBgbtlQIAAAQIExhdoc3xMAvAE7acH3dqV7/fZze5FqOPP+1aeIHDfykwbJwECBAgQIECAAAECDwUE7g+JVCBAgAABAp0FPit3fltKPtZc35RKCS/f2mneZzd7+pBjY06lnGs6pA6BCoGsWTvcK6BUIUCAAAECBAgQIEBg/QIC9/XPsRESIECAwPQCOT4mAWR2qtdcP1zrvnZ8zK58P7vkD6Wk7bbXz+WG07Vc2t6sPoEHAsfrer+v9r58Id9zESBAgAABAgQIECBAYDMCAvfNTLWBEiBAgMBEAjnmJeeh1wTjbx0fk/uzmz2hfe0O+fshJsg/XctEw/eYDQocy5jtcN/gxBsyAQIECBAgQIAAAQL/KiBwtyoIECBAgMAwAgnFP5Syr2zuteNjcn9C+7wAtSa0v39cQvxTKQn9L5V9UY1AH4FDuTlHJ91fn67ruE/b7iVAgAABAgQIECBAgMCiBATui5ounSVAgACBGQoMcXzMroyrzwtQw2I3+wwXx0a6tC/j/NsLY82azPdcBAgQIECAAAECBAgQ2IyAwH0zU22gBAgQIDCCQJ/jY4Y4MsZu9hEmVZOtBV4L3C+lpX9r3ZobCBAgQIAAAQIECBAgsGABgfuCJ0/XCRAgQOBpAm2Pj/mu9DRnsf9SSs5lz3Exhx69z1Ed35dy6tGGWwkMKfBfrzTm/9YcUllbBAgQIECAAAECBAjMXsD/EzT7KdJBAgQIEJiRQNvjY34qfU/QfinlXSkJ2ncdx/Nzue90LWnPRWBOAq8F7v+3dDK/aHIRIECAAAECBAgQIEBgEwIC901Ms0ESIECAwAACbY+PyUtL/7OUBO7ZEd/1yu74Uynnrg24j8AEAlmff3zhOX+ydifQ9wgCBAgQIECAAAECBGYjIHCfzVToCAECBAjMVGBX+vVtKfvK/mU3748t6r/UbHbGJ7DPsTF2B1fCq/ZUgXN5+kuB+1/K109P7ZmHEyBAgAABAgQIECBAYEIBgfuE2B5FgAABAosSyPExOQbmOFGvc2RMAvYE7ZeJnukxBIYSyM/J1y809n7Cn6GhxqIdAgQIECBAgAABAgQIdBYQuHemcyMBAgQIrFggZ61/KGU38hh/Le03Lz89j/wszRMYU+BYGn8pcM+RSIcxH6xtAgQIECBAgAABAgQIzElA4D6n2dAXAgQIEHi2wK50oM3xMV37+0O58VSKI2O6CrpvbgL70qG/vdCprPV8z0WAAAECBAgQIECAAIFNCAjcNzHNBkmAAAECFQLZnZsXnOYomTGuHBlzupbLGA/QJoEnCuzLs18K3PM+g39/Yr88mgABAgQIECBAgAABApMKCNwn5fYwAgQIEJihQILC7GrfjdA3R8aMgKrJ2Qr81ys9839vznbKdIwAAQIECBAgQIAAgaEF/D9AQ4tqjwABAgSWIpCd7Dmn/TBChx0ZMwKqJmcvIHCf/RTpIAECBAgQIECAAAECYwsI3McW1j4BAgQIzFHgXenUsZQhj49xZMwcZ1qfphS4lIf9/oUH/ql87TxlRzyLAAECBAgQIECAAAECzxIQuD9L3nMJECBA4BkCn5WHZlf7fsCHf1faystPU1wEtixwLoP/4wsAAvctrwpjJ0CAAAECBAgQILAxAYH7xibccAkQILBRgexkb3a1D0GQ3ewfSzmV8ssQDWqDwAoEBO4rmERDIECAAAECBAgQIECgn4DAvZ+fuwkQIEBg/gL70sWhXoqa3ewJ2RMsuggQ+GeB/FzY4W5VECBAgAABAgQIECCwaQGB+6an3+AJECCwaoHsak/Q/kXPUdrN3hPQ7ZsRyF995C9J7q//KF/I91wECBAgQIAAAQIECBBYvYDAffVTbIAECBDYpMAQL0W1m32TS8egewgcy71fv3D/+/K1fM9FgAABAgQIECBAgACB1QsI3Fc/xQZIgACBTQn0fSnqr0WrOZv9sik5gyXQXyChusC9v6MWCBAgQIAAAQIECBBYsIDAfcGTp+sECBAg8N8COTrm81K+KiWBe5frp3JTE7R3ud89BAj8Yxe7wN1KIECAAAECBAgQIEBg0wIC901Pv8ETIEBg0QIJ2XM++6HHKHJsTIL2H3u04VYCbQV25YbfX2/KL4nyS6Nct5+/9N9tn/Oo/rlUSPk00M/AsbQjcH+k7vsECBAgQIAAAQIECKxaQOC+6uk1OAIECKxOYFdG9GUph1LyeZfLS1C7qLmnjcAfr5X3r3xs09ZUdU/lQTlr/dLjgcdyr8C9B6BbCRAgQIAAAQIECBBYvoDAfflzaAQECBDYgkBC9uxmT+ly5Wz270uxm72LnnteEkionp3p2ZW+u5b7HepLlDuWTn9Tyi8dOp97Be4d4NxCgAABAgQIECBAgMB6BATu65lLIyFAgMDaBBJivivlUEpz5EbbMf5QbjiVkrC9S4DY9nnqr0sg6+4PpTRB+r58nnWZsubrUgb3l1LOLQd5LPUF7i3RVCdAgAABAgQIECBAYF0CAvd1zafRECBAYA0COZv9UErX3ewxyJnUeYnqZQ0gxjCJQHas70pJuN6Urr/omaTDEzwk7zY4XX+ean6WjqWuwH2CifEIAgQIECBAgAABAgTmKyBwn+/c6BkBAgS2JJBgM8fGJCTf9Rh4zmc/lHLu0YZb1y2Q9ZUXlu5LaY6DyUfX2wIJ3/OXIvnZyhFN+e/bvwCIYUxf+vnN2fBHwAQIECBAgAABAgQIENiCgMB9C7NsjAQIEJivQAK7HBuToL3vbuKcO51Qz9Ex853vqXuW8Lc5EmZfPp/LGetNYB2Py7Xcf57/Tqg91nrOz9vh+jPz25EnRuA+MrDmCRAgQIAAAQIECBCYj4DAfT5zoScECBDYmkCOnhgiaP/pGhwmnHRtVyBhehOuP/tImKzJBOVNYN58vJSvpczpSvD+sZT8hclY159Kw+exGtcuAQIECBAgQIAAAQIE5iQgcJ/TbOgLAQIEtiGQYO9Yyq7ncLNLOO0kLHRtS+A+XN8/Yfg5vuhSSsL024/5fIlXDE+l5LidIa/88sGRPUOKaosAAQIECBAgQIAAgVkLCNxnPT06R4AAgVUJ7Mpovi0lwV7f64fSwKGUS9+G3D97gbzMtNmxnjU0xPppM+gExllnCdabnernNg0srG5+ro6lDBG8+zld2OTrLgECBAgQIECAAAEC/QUE7v0NtUCAAAECjwW+KFUStvc9pz272hMI5uWNrnUJ7K4h7758TMCe/55yZ3SzY/1cnnu7a31dyvWjaV6Cmp+3HNXT5vp0/Rk9tblJXQIECBAgQIAAAQIECKxBQOC+hlk0BgIECMxbIGe1HwfoopeiDoA4gybyS5fmrPVd+bwJdqfsWnatNzvWb3euT9mHJT0r85RfmjXzlY/NDvjsYm/Oqz9fXcd60euSzPSVAAECBAgQIECAAIGNCgjcNzrxhk2AAIGJBPJS1A89n5Wdx4dSEua5liOwK11NKHu7Wz2f9/0rh7YCCYTvw/W2bahPgAABAgQIECBAgAABAgSqBATuVUwqESBAgEAHgX25528d7ru95X35j2PPNtw+nkAC9N+WkrnOdf9xvCe/3LJwfWpxzyNAgAABAgQIECBAgACBfxIQuFsQBAgQIDCWwP8rDXfdzexli2PNSl27eVFprsxfc4767e70fV0zo9XKWf7ZtX6+fmzOXB/tgRomQIAAAQIECBAgQIAAAQI1AgL3GiV1CBAgQKCtQALZLrvbE6QeS/nY9oHqPxRodqOnYhOe3wbqu/L1lLld9y8zFa7PbYb0hwABAgQIECBAgAABAgT+R0DgbjEQIECAwBgCx9JoXpba9kqY2ryAsXnx4qV8LSVXE762bXct9ZsXjjbjuT8TfX8z0F35PGVJV/6yIXN9e+a6F3AuaQb1lQABAgQIECBAgAABAhsXELhvfAEYPgECBEYSyA71dyO1fdtswtmU5rr/73z9pa/l60OE97e7xmuGu3+lUtuv1zxrznV+us5LE6xnjvK5iwABAgQIECBAgAABAgQILFpA4L7o6dN5AgQIzE4gO7C/LeWL2fVMh54h0OxYbwJ1wfozZsEzCRAgQIAAAQIECBAgQGAyAYH7ZNQeRIAAgdULZEf7sZSuL0pdPdAKB9j8lUCC9NvSHA20wiEbEgECBAgQIECAAAECBAgQeF1A4G51ECBAgEBfgV1pILva930bcv9sBHLkS3N2+vnaq0v5mJJLoD6bqdIRAgQIECBAgAABAgQIEJiTgMB9TrOhLwQIEFieQJtd7Z/K8E6l5Nzz3bW0PQN9eULz6fFtiH4p3UrJdb5+bF5WO58e6wkBAgQIECBAgAABAgQIEFiYgMB9YROmuwQIEJiJwK7046+lJDB/dOXYka9K+f6NijmG5rat/U3dfL05pmbrAf2vxeL25aKX8t8pzXW++VyA/mhl+j4BAgQIECBAgAABAgQIEBhYQOA+MKjmCBAgsAGBQxnjh1Jqzmp/X+p9LKU5nmRontswPm3f/3e+truW+2fn67/v2aHbXeM1TZ1fqdT26zXPUocAAQIECBAgQIAAAQIECBCYWEDgPjG4xxEgQGDBAgnYc1b7FxVj+KHUya72293YFbepQoAAAQIECBAgQIAAAQIECBBYroDAfblzp+cECBCYUiA7xxO2PzpCJkeeHEvJrnYXAQIECBAgQIAAAQIECBAgQGBTAgL3TU23wRIgQKCTQHa0J2x/dIRMdrUfSrl0eoqbCBAgQIAAAQIECBAgQIAAAQILFxC4L3wCdZ8AAQIjCyRAT9j+1mVX+8iToHkCBAgQIECAAAECBAgQIEBgGQIC92XMk14SIEDgGQI1YXteGpp6zmp/xgx5JgECBAgQIECAAAECBAgQIDArAYH7rKZDZwgQIDAbgZzV/rdS3jpG5pvy/bwY1UWAAAECBAgQIECAAAECBAgQIFAEBO6WAQECBAjcCyRk/3spu1docoRMgvYTOgIECBAgQIAAAQIECBAgQIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/overview/styles.css b/vue-options-api-demos/inputs/signature/overview/styles.css new file mode 100644 index 00000000..37703aeb --- /dev/null +++ b/vue-options-api-demos/inputs/signature/overview/styles.css @@ -0,0 +1,59 @@ +.content-wrapper, +.content-wrapper img { + width: 750px; + height: 250px; +} + +.example { + display: flex; + justify-content: center; +} + +.toolbar-tool { + display: flex; + gap: 8px; + align-items: center; +} + +.k-signature, +.notes, .placeholder { + border-color: rgba(0, 0, 0, 0.08); + border-width: 0 1px; + border-radius: 0; +} + +.k-upload .k-dropzone { + padding: 0; +} + +.signature-wrapper { + height: 270px; +} + +.signature-wrapper .k-signature { + width: 100%; + height: 100%; +} + +.signature-wrapper img { + user-select: none; +} + +.placeholder { + height: 100%; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + border-width: 1px; + border-bottom-width: 0; + border-style: solid; +} + +.notes { + font-style: italic; + border-width: 1px; + border-bottom-width: 0; + border-style: solid; + padding: 1em; +} diff --git a/vue-options-api-demos/inputs/signature/popup/disabled/main.js b/vue-options-api-demos/inputs/signature/popup/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/popup/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/popup/disabled/main.vue b/vue-options-api-demos/inputs/signature/popup/disabled/main.vue new file mode 100644 index 00000000..730561f0 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/popup/disabled/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/inputs/signature/popup/disabled/sample-signature.js b/vue-options-api-demos/inputs/signature/popup/disabled/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/popup/disabled/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/popup/scale/main.js b/vue-options-api-demos/inputs/signature/popup/scale/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/popup/scale/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/popup/scale/main.vue b/vue-options-api-demos/inputs/signature/popup/scale/main.vue new file mode 100644 index 00000000..bc8c6010 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/popup/scale/main.vue @@ -0,0 +1,23 @@ + + diff --git a/vue-options-api-demos/inputs/signature/popup/scale/sample-signature.js b/vue-options-api-demos/inputs/signature/popup/scale/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/popup/scale/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/readonly/main.js b/vue-options-api-demos/inputs/signature/readonly/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/readonly/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/readonly/main.vue b/vue-options-api-demos/inputs/signature/readonly/main.vue new file mode 100644 index 00000000..1d1fa068 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/readonly/main.vue @@ -0,0 +1,18 @@ + + diff --git a/vue-options-api-demos/inputs/signature/readonly/sample-signature.js b/vue-options-api-demos/inputs/signature/readonly/sample-signature.js new file mode 100644 index 00000000..82d3e903 --- /dev/null +++ b/vue-options-api-demos/inputs/signature/readonly/sample-signature.js @@ -0,0 +1,2 @@ +export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg=='; + diff --git a/vue-options-api-demos/inputs/signature/smooth/main.js b/vue-options-api-demos/inputs/signature/smooth/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/signature/smooth/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/signature/smooth/main.vue b/vue-options-api-demos/inputs/signature/smooth/main.vue new file mode 100644 index 00000000..4604112a --- /dev/null +++ b/vue-options-api-demos/inputs/signature/smooth/main.vue @@ -0,0 +1,12 @@ + + diff --git a/vue-options-api-demos/inputs/slider/buttons/main.js b/vue-options-api-demos/inputs/slider/buttons/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/slider/buttons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/slider/buttons/main.vue b/vue-options-api-demos/inputs/slider/buttons/main.vue new file mode 100644 index 00000000..dc04c9d1 --- /dev/null +++ b/vue-options-api-demos/inputs/slider/buttons/main.vue @@ -0,0 +1,28 @@ + + diff --git a/vue-options-api-demos/inputs/slider/controlled/main.js b/vue-options-api-demos/inputs/slider/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/slider/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/slider/controlled/main.vue b/vue-options-api-demos/inputs/slider/controlled/main.vue new file mode 100644 index 00000000..43292676 --- /dev/null +++ b/vue-options-api-demos/inputs/slider/controlled/main.vue @@ -0,0 +1,43 @@ + + diff --git a/vue-options-api-demos/inputs/slider/labels/main.js b/vue-options-api-demos/inputs/slider/labels/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/slider/labels/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/slider/labels/main.vue b/vue-options-api-demos/inputs/slider/labels/main.vue new file mode 100644 index 00000000..d28eb004 --- /dev/null +++ b/vue-options-api-demos/inputs/slider/labels/main.vue @@ -0,0 +1,28 @@ + + diff --git a/vue-options-api-demos/inputs/slider/orientation/main.js b/vue-options-api-demos/inputs/slider/orientation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/slider/orientation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/slider/orientation/main.vue b/vue-options-api-demos/inputs/slider/orientation/main.vue new file mode 100644 index 00000000..c4bbf169 --- /dev/null +++ b/vue-options-api-demos/inputs/slider/orientation/main.vue @@ -0,0 +1,29 @@ + + diff --git a/vue-options-api-demos/inputs/slider/overview/main.js b/vue-options-api-demos/inputs/slider/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/slider/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/slider/overview/main.vue b/vue-options-api-demos/inputs/slider/overview/main.vue new file mode 100644 index 00000000..dc04c9d1 --- /dev/null +++ b/vue-options-api-demos/inputs/slider/overview/main.vue @@ -0,0 +1,28 @@ + + diff --git a/vue-options-api-demos/inputs/switch/appearance/configurator/SwitchStyleConfigurator.vue b/vue-options-api-demos/inputs/switch/appearance/configurator/SwitchStyleConfigurator.vue new file mode 100644 index 00000000..c5b405da --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/configurator/SwitchStyleConfigurator.vue @@ -0,0 +1,101 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/appearance/configurator/main.js b/vue-options-api-demos/inputs/switch/appearance/configurator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/configurator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/appearance/configurator/main.vue b/vue-options-api-demos/inputs/switch/appearance/configurator/main.vue new file mode 100644 index 00000000..9fb854c9 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/configurator/main.vue @@ -0,0 +1,47 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/appearance/size/main.js b/vue-options-api-demos/inputs/switch/appearance/size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/appearance/size/main.vue b/vue-options-api-demos/inputs/switch/appearance/size/main.vue new file mode 100644 index 00000000..ac8d4b9c --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/size/main.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.js b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.vue b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.vue new file mode 100644 index 00000000..f9915a31 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.js b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.vue b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.vue new file mode 100644 index 00000000..58787569 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/vue-options-api-demos/inputs/switch/controlled/manual/main.js b/vue-options-api-demos/inputs/switch/controlled/manual/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/controlled/manual/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/controlled/manual/main.vue b/vue-options-api-demos/inputs/switch/controlled/manual/main.vue new file mode 100644 index 00000000..2e61b799 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/controlled/manual/main.vue @@ -0,0 +1,35 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/controlled/overview/main.js b/vue-options-api-demos/inputs/switch/controlled/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/controlled/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/controlled/overview/main.vue b/vue-options-api-demos/inputs/switch/controlled/overview/main.vue new file mode 100644 index 00000000..19b930bc --- /dev/null +++ b/vue-options-api-demos/inputs/switch/controlled/overview/main.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/controlled/readonly/main.js b/vue-options-api-demos/inputs/switch/controlled/readonly/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/controlled/readonly/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/controlled/readonly/main.vue b/vue-options-api-demos/inputs/switch/controlled/readonly/main.vue new file mode 100644 index 00000000..4d16e0ca --- /dev/null +++ b/vue-options-api-demos/inputs/switch/controlled/readonly/main.vue @@ -0,0 +1,15 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/default/main.js b/vue-options-api-demos/inputs/switch/default/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/default/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/default/main.vue b/vue-options-api-demos/inputs/switch/default/main.vue new file mode 100644 index 00000000..928f2791 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/default/main.vue @@ -0,0 +1,15 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/disabled/main.js b/vue-options-api-demos/inputs/switch/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/disabled/main.vue b/vue-options-api-demos/inputs/switch/disabled/main.vue new file mode 100644 index 00000000..f6354653 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/disabled/main.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/events/Logger.vue b/vue-options-api-demos/inputs/switch/events/Logger.vue new file mode 100644 index 00000000..aa04a80b --- /dev/null +++ b/vue-options-api-demos/inputs/switch/events/Logger.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/switch/events/main.js b/vue-options-api-demos/inputs/switch/events/main.js new file mode 100644 index 00000000..1f1c6c86 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') + diff --git a/vue-options-api-demos/inputs/switch/events/main.vue b/vue-options-api-demos/inputs/switch/events/main.vue new file mode 100644 index 00000000..5fe3e347 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/events/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormContent.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormContent.vue new file mode 100644 index 00000000..edf52a4f --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormContent.vue @@ -0,0 +1,176 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormInput.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormInput.vue new file mode 100644 index 00000000..2171ad3a --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormInput.vue @@ -0,0 +1,98 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormSwitch.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormSwitch.vue new file mode 100644 index 00000000..f341b3d2 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormSwitch.vue @@ -0,0 +1,102 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.js b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.vue new file mode 100644 index 00000000..7361dbf5 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.vue @@ -0,0 +1,22 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/FormContent.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormContent.vue new file mode 100644 index 00000000..6f3e5603 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormContent.vue @@ -0,0 +1,96 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/FormInput.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormInput.vue new file mode 100644 index 00000000..b69c4a21 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormInput.vue @@ -0,0 +1,85 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/FormSwitch.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormSwitch.vue new file mode 100644 index 00000000..76da195a --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormSwitch.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/main.js b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/main.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.vue new file mode 100644 index 00000000..c82b3f5c --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.vue @@ -0,0 +1,23 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/FormContent.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/FormContent.vue new file mode 100644 index 00000000..0b0b19c8 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/overview/FormContent.vue @@ -0,0 +1,110 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/FormInput.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/FormInput.vue new file mode 100644 index 00000000..b69c4a21 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/overview/FormInput.vue @@ -0,0 +1,85 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/FormSwitch.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/FormSwitch.vue new file mode 100644 index 00000000..76da195a --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/overview/FormSwitch.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/main.js b/vue-options-api-demos/inputs/switch/forms-support/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/main.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/main.vue new file mode 100644 index 00000000..7361dbf5 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/forms-support/overview/main.vue @@ -0,0 +1,22 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/keyboard/main.js b/vue-options-api-demos/inputs/switch/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/keyboard/main.vue b/vue-options-api-demos/inputs/switch/keyboard/main.vue new file mode 100644 index 00000000..c47beba6 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/keyboard/main.vue @@ -0,0 +1,18 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/labels/main.js b/vue-options-api-demos/inputs/switch/labels/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/labels/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/labels/main.vue b/vue-options-api-demos/inputs/switch/labels/main.vue new file mode 100644 index 00000000..eb85e646 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/labels/main.vue @@ -0,0 +1,15 @@ + + + diff --git a/vue-options-api-demos/inputs/switch/overview/main.js b/vue-options-api-demos/inputs/switch/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/switch/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/switch/overview/main.vue b/vue-options-api-demos/inputs/switch/overview/main.vue new file mode 100644 index 00000000..c743a127 --- /dev/null +++ b/vue-options-api-demos/inputs/switch/overview/main.vue @@ -0,0 +1,15 @@ + + + diff --git a/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.js b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.vue b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.vue new file mode 100644 index 00000000..79544c2f --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.js b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.vue b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.vue new file mode 100644 index 00000000..3866e249 --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.vue @@ -0,0 +1,31 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.js b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.vue b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.vue new file mode 100644 index 00000000..cba7bc3c --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.vue @@ -0,0 +1,15 @@ + + diff --git a/vue-options-api-demos/inputs/textarea/adornments/separator/main.js b/vue-options-api-demos/inputs/textarea/adornments/separator/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/separator/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/textarea/adornments/separator/main.vue b/vue-options-api-demos/inputs/textarea/adornments/separator/main.vue new file mode 100644 index 00000000..49c0db0f --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/separator/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/inputs/textarea/adornments/suffix/InputIcons.vue b/vue-options-api-demos/inputs/textarea/adornments/suffix/InputIcons.vue new file mode 100644 index 00000000..da2d068c --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/suffix/InputIcons.vue @@ -0,0 +1,23 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/inputs/textarea/adornments/suffix/main.js b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/textarea/adornments/suffix/main.vue b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.vue new file mode 100644 index 00000000..8cee2e6c --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.js b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.vue b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.vue new file mode 100644 index 00000000..33f28c36 --- /dev/null +++ b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormUpload.vue b/vue-options-api-demos/layout/wizard/validation/step/FormUpload.vue new file mode 100644 index 00000000..f8f1645b --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/step/FormUpload.vue @@ -0,0 +1,90 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/step/PaymentDetails.vue b/vue-options-api-demos/layout/wizard/validation/step/PaymentDetails.vue new file mode 100644 index 00000000..de3c965f --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/step/PaymentDetails.vue @@ -0,0 +1,152 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/step/PersonalDetails.vue b/vue-options-api-demos/layout/wizard/validation/step/PersonalDetails.vue new file mode 100644 index 00000000..3a418c5b --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/step/PersonalDetails.vue @@ -0,0 +1,182 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/step/main.js b/vue-options-api-demos/layout/wizard/validation/step/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/step/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/layout/wizard/validation/step/main.vue b/vue-options-api-demos/layout/wizard/validation/step/main.vue new file mode 100644 index 00000000..7cb1469a --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/step/main.vue @@ -0,0 +1,167 @@ + + + diff --git a/vue-options-api-demos/layout/wizard/validation/step/validators.js b/vue-options-api-demos/layout/wizard/validation/step/validators.js new file mode 100644 index 00000000..b1fa8aa6 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/step/validators.js @@ -0,0 +1,83 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = (value) => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = (value) => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = (value) => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = (value) => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = (value) => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = (value) => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = (value) => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = (value) => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = (value) => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = (value) => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = (value) => (value ? '' : 'Color is required.'); +export const requiredValidator = (value) => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = (value) => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = (value) => + value ? '' : 'Address is required.'; + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = (values) => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.', + }; +}; diff --git a/vue-options-api-demos/layout/wizard/validation/submit/AccountDetails.vue b/vue-options-api-demos/layout/wizard/validation/submit/AccountDetails.vue new file mode 100644 index 00000000..c2621bfc --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/AccountDetails.vue @@ -0,0 +1,111 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/CardSelector.vue b/vue-options-api-demos/layout/wizard/validation/submit/CardSelector.vue new file mode 100644 index 00000000..3c933c91 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/CardSelector.vue @@ -0,0 +1,201 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/ErrorSummary.vue b/vue-options-api-demos/layout/wizard/validation/submit/ErrorSummary.vue new file mode 100644 index 00000000..d2d081b5 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/ErrorSummary.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormAutoComplete.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormAutoComplete.vue new file mode 100644 index 00000000..39526b0c --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormAutoComplete.vue @@ -0,0 +1,79 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormCheckbox.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormCheckbox.vue new file mode 100644 index 00000000..d3438819 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormCheckbox.vue @@ -0,0 +1,89 @@ + + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormDateInput.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormDateInput.vue new file mode 100644 index 00000000..67b4a198 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormDateInput.vue @@ -0,0 +1,77 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormDatePicker.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormDatePicker.vue new file mode 100644 index 00000000..6f6dfddc --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormDatePicker.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormInput.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormInput.vue new file mode 100644 index 00000000..e9551d6f --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormInput.vue @@ -0,0 +1,90 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormMaskedTextBox.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormMaskedTextBox.vue new file mode 100644 index 00000000..8f991820 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormMaskedTextBox.vue @@ -0,0 +1,83 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormNumericTextBox.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormNumericTextBox.vue new file mode 100644 index 00000000..f46568cc --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormNumericTextBox.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormRadioGroup.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormRadioGroup.vue new file mode 100644 index 00000000..1ab866bc --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormRadioGroup.vue @@ -0,0 +1,106 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormTextArea.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormTextArea.vue new file mode 100644 index 00000000..011196b5 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormTextArea.vue @@ -0,0 +1,80 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormUpload.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormUpload.vue new file mode 100644 index 00000000..3e2c664d --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/FormUpload.vue @@ -0,0 +1,90 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/PaymentDetails.vue b/vue-options-api-demos/layout/wizard/validation/submit/PaymentDetails.vue new file mode 100644 index 00000000..922b898b --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/PaymentDetails.vue @@ -0,0 +1,136 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/PersonalDetails.vue b/vue-options-api-demos/layout/wizard/validation/submit/PersonalDetails.vue new file mode 100644 index 00000000..1fe82fac --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/PersonalDetails.vue @@ -0,0 +1,167 @@ + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/main.js b/vue-options-api-demos/layout/wizard/validation/submit/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/layout/wizard/validation/submit/main.vue b/vue-options-api-demos/layout/wizard/validation/submit/main.vue new file mode 100644 index 00000000..4eff8af9 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/main.vue @@ -0,0 +1,138 @@ + + + diff --git a/vue-options-api-demos/layout/wizard/validation/submit/validators.js b/vue-options-api-demos/layout/wizard/validation/submit/validators.js new file mode 100644 index 00000000..b1fa8aa6 --- /dev/null +++ b/vue-options-api-demos/layout/wizard/validation/submit/validators.js @@ -0,0 +1,83 @@ +import { getter } from '@progress/kendo-vue-common'; + +const emailRegex = new RegExp(/\S+@\S+\.\S+/); +const phoneRegex = new RegExp(/^[0-9 ()+-]+$/); +const ccardRegex = new RegExp(/^[0-9-]+$/); +const cvcRegex = new RegExp(/^[0-9]+$/); + +export const termsValidator = (value) => + value ? '' : "It's required to agree with Terms and Conditions."; +export const emailValidator = (value) => + !value + ? 'Email field is required.' + : emailRegex.test(value) + ? '' + : 'Email is not in a valid format.'; +export const nameValidator = (value) => + !value + ? 'Full Name is required' + : value.length < 7 + ? 'Full Name should be at least 7 characters long.' + : ''; +export const userNameValidator = (value) => + !value + ? 'User Name is required' + : value.length < 5 + ? 'User name should be at least 5 characters long.' + : ''; +export const phoneValidator = (value) => + !value + ? 'Phone number is required.' + : phoneRegex.test(value) + ? '' + : 'Not a valid phone number.'; +export const cardValidator = (value) => + !value + ? 'Credit card number is required. ' + : ccardRegex.test(value) + ? '' + : 'Not a valid credit card number format.'; +export const cvcValidator = (value) => + !value + ? 'CVC code is required,' + : cvcRegex.test(value) || value.length !== 3 + ? '' + : 'Not a valid CVC code format.'; +export const guestsValidator = (value) => + !value + ? 'Number of guests is required' + : value <= 5 + ? '' + : 'Maximum 5 guests'; +export const nightsValidator = (value) => + value ? '' : 'Number of Nights is required.'; +export const arrivalDateValidator = (value) => + value ? '' : 'Arrival Date is required.'; +export const colorValidator = (value) => (value ? '' : 'Color is required.'); +export const requiredValidator = (value) => + value ? '' : 'Error: This field is required.'; +export const passwordValidator = (value) => + value && value.length > 8 ? '' : 'Password must be at least 8 symbols.'; +export const addressValidator = (value) => + value ? '' : 'Address is required.'; + +const userNameGetter = getter('username'); +const emailGetter = getter('email'); + +export const formValidator = (values) => { + const userName = userNameGetter(values); + const emailValue = emailGetter(values); + + if (userName && emailValue && emailRegex.test(emailValue)) { + return {}; + } + + return { + VALIDATION_SUMMARY: 'Please fill in the following fields.', + ['username']: !userName ? 'User Name is required.' : '', + ['email']: + emailValue && emailRegex.test(emailValue) + ? '' + : 'Email is required and should be in a valid format.', + }; +}; diff --git a/vue-options-api-demos/listbox/customization/main.js b/vue-options-api-demos/listbox/customization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/customization/main.vue b/vue-options-api-demos/listbox/customization/main.vue new file mode 100644 index 00000000..bedf3c19 --- /dev/null +++ b/vue-options-api-demos/listbox/customization/main.vue @@ -0,0 +1,130 @@ + + diff --git a/vue-options-api-demos/listbox/customization/products.json b/vue-options-api-demos/listbox/customization/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/listbox/customization/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listbox/drag-and-drop/main.js b/vue-options-api-demos/listbox/drag-and-drop/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/drag-and-drop/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/drag-and-drop/main.vue b/vue-options-api-demos/listbox/drag-and-drop/main.vue new file mode 100644 index 00000000..807f980d --- /dev/null +++ b/vue-options-api-demos/listbox/drag-and-drop/main.vue @@ -0,0 +1,94 @@ + + + + diff --git a/vue-options-api-demos/listbox/drag-and-drop/products.json b/vue-options-api-demos/listbox/drag-and-drop/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/listbox/drag-and-drop/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listbox/get-started/data.js b/vue-options-api-demos/listbox/get-started/data.js new file mode 100644 index 00000000..d5d92bba --- /dev/null +++ b/vue-options-api-demos/listbox/get-started/data.js @@ -0,0 +1,30 @@ +export const data = [ + { + name: 'Steven White', + selected: true + }, + { + name: 'Nancy King', + selected: false + }, + { + name: 'Nancy Davolio', + selected: false + }, + { + name: 'Robert Davolio', + selected: false + }, + { + name: 'Michael Leverling', + selected: false + }, + { + name: 'Andrew Callahan', + selected: false + }, + { + name: 'Michael Suyama', + selected: false + } + ]; diff --git a/vue-options-api-demos/listbox/get-started/main.js b/vue-options-api-demos/listbox/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/get-started/main.vue b/vue-options-api-demos/listbox/get-started/main.vue new file mode 100644 index 00000000..dace38e6 --- /dev/null +++ b/vue-options-api-demos/listbox/get-started/main.vue @@ -0,0 +1,101 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/listbox/messages/data.js b/vue-options-api-demos/listbox/messages/data.js new file mode 100644 index 00000000..d5d92bba --- /dev/null +++ b/vue-options-api-demos/listbox/messages/data.js @@ -0,0 +1,30 @@ +export const data = [ + { + name: 'Steven White', + selected: true + }, + { + name: 'Nancy King', + selected: false + }, + { + name: 'Nancy Davolio', + selected: false + }, + { + name: 'Robert Davolio', + selected: false + }, + { + name: 'Michael Leverling', + selected: false + }, + { + name: 'Andrew Callahan', + selected: false + }, + { + name: 'Michael Suyama', + selected: false + } + ]; diff --git a/vue-options-api-demos/listbox/messages/es.json b/vue-options-api-demos/listbox/messages/es.json new file mode 100644 index 00000000..5ea0b181 --- /dev/null +++ b/vue-options-api-demos/listbox/messages/es.json @@ -0,0 +1,11 @@ +{ + "listbox": { + "moveUp": "Ascender", + "moveDown": "Мove hacia abajo", + "transferTo": "Transferir a", + "transferFrom": "Transferido de", + "transferAllTo": "Transferir todo a", + "transferAllFrom": "Transferir todo desde", + "remove": "Eliminar" + } +} \ No newline at end of file diff --git a/vue-options-api-demos/listbox/messages/main.js b/vue-options-api-demos/listbox/messages/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/messages/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/messages/main.vue b/vue-options-api-demos/listbox/messages/main.vue new file mode 100644 index 00000000..7507ce60 --- /dev/null +++ b/vue-options-api-demos/listbox/messages/main.vue @@ -0,0 +1,108 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/listbox/multiple-lists/main.js b/vue-options-api-demos/listbox/multiple-lists/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/multiple-lists/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/multiple-lists/main.vue b/vue-options-api-demos/listbox/multiple-lists/main.vue new file mode 100644 index 00000000..a08c6ad7 --- /dev/null +++ b/vue-options-api-demos/listbox/multiple-lists/main.vue @@ -0,0 +1,151 @@ + + diff --git a/vue-options-api-demos/listbox/overview/data.js b/vue-options-api-demos/listbox/overview/data.js new file mode 100644 index 00000000..d5d92bba --- /dev/null +++ b/vue-options-api-demos/listbox/overview/data.js @@ -0,0 +1,30 @@ +export const data = [ + { + name: 'Steven White', + selected: true + }, + { + name: 'Nancy King', + selected: false + }, + { + name: 'Nancy Davolio', + selected: false + }, + { + name: 'Robert Davolio', + selected: false + }, + { + name: 'Michael Leverling', + selected: false + }, + { + name: 'Andrew Callahan', + selected: false + }, + { + name: 'Michael Suyama', + selected: false + } + ]; diff --git a/vue-options-api-demos/listbox/overview/main.js b/vue-options-api-demos/listbox/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/overview/main.vue b/vue-options-api-demos/listbox/overview/main.vue new file mode 100644 index 00000000..dace38e6 --- /dev/null +++ b/vue-options-api-demos/listbox/overview/main.vue @@ -0,0 +1,101 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/listbox/rtl/data.js b/vue-options-api-demos/listbox/rtl/data.js new file mode 100644 index 00000000..d5d92bba --- /dev/null +++ b/vue-options-api-demos/listbox/rtl/data.js @@ -0,0 +1,30 @@ +export const data = [ + { + name: 'Steven White', + selected: true + }, + { + name: 'Nancy King', + selected: false + }, + { + name: 'Nancy Davolio', + selected: false + }, + { + name: 'Robert Davolio', + selected: false + }, + { + name: 'Michael Leverling', + selected: false + }, + { + name: 'Andrew Callahan', + selected: false + }, + { + name: 'Michael Suyama', + selected: false + } + ]; diff --git a/vue-options-api-demos/listbox/rtl/main.js b/vue-options-api-demos/listbox/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/rtl/main.vue b/vue-options-api-demos/listbox/rtl/main.vue new file mode 100644 index 00000000..33801b0a --- /dev/null +++ b/vue-options-api-demos/listbox/rtl/main.vue @@ -0,0 +1,103 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/listbox/selection/data.js b/vue-options-api-demos/listbox/selection/data.js new file mode 100644 index 00000000..d5d92bba --- /dev/null +++ b/vue-options-api-demos/listbox/selection/data.js @@ -0,0 +1,30 @@ +export const data = [ + { + name: 'Steven White', + selected: true + }, + { + name: 'Nancy King', + selected: false + }, + { + name: 'Nancy Davolio', + selected: false + }, + { + name: 'Robert Davolio', + selected: false + }, + { + name: 'Michael Leverling', + selected: false + }, + { + name: 'Andrew Callahan', + selected: false + }, + { + name: 'Michael Suyama', + selected: false + } + ]; diff --git a/vue-options-api-demos/listbox/selection/main.js b/vue-options-api-demos/listbox/selection/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listbox/selection/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listbox/selection/main.vue b/vue-options-api-demos/listbox/selection/main.vue new file mode 100644 index 00000000..247049ff --- /dev/null +++ b/vue-options-api-demos/listbox/selection/main.vue @@ -0,0 +1,100 @@ + + diff --git a/vue-options-api-demos/listbox/shared/data.js b/vue-options-api-demos/listbox/shared/data.js new file mode 100644 index 00000000..d5d92bba --- /dev/null +++ b/vue-options-api-demos/listbox/shared/data.js @@ -0,0 +1,30 @@ +export const data = [ + { + name: 'Steven White', + selected: true + }, + { + name: 'Nancy King', + selected: false + }, + { + name: 'Nancy Davolio', + selected: false + }, + { + name: 'Robert Davolio', + selected: false + }, + { + name: 'Michael Leverling', + selected: false + }, + { + name: 'Andrew Callahan', + selected: false + }, + { + name: 'Michael Suyama', + selected: false + } + ]; diff --git a/vue-options-api-demos/listbox/shared/es.json b/vue-options-api-demos/listbox/shared/es.json new file mode 100644 index 00000000..5ea0b181 --- /dev/null +++ b/vue-options-api-demos/listbox/shared/es.json @@ -0,0 +1,11 @@ +{ + "listbox": { + "moveUp": "Ascender", + "moveDown": "Мove hacia abajo", + "transferTo": "Transferir a", + "transferFrom": "Transferido de", + "transferAllTo": "Transferir todo a", + "transferAllFrom": "Transferir todo desde", + "remove": "Eliminar" + } +} \ No newline at end of file diff --git a/vue-options-api-demos/listbox/shared/products.json b/vue-options-api-demos/listbox/shared/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/listbox/shared/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/default-scrolling/employees.js b/vue-options-api-demos/listview/default-scrolling/employees.js new file mode 100644 index 00000000..88c947bb --- /dev/null +++ b/vue-options-api-demos/listview/default-scrolling/employees.js @@ -0,0 +1,1402 @@ +export const employees = [ + { + id: '848e6002-8a92-447d-951b-1ffd5e695578', + full_name: 'Sig Jeannel', + job_title: 'Human Resources Assistant III', + country: 'US', + is_online: true, + rating: 3, + target: 100, + budget: 47601, + phone: '(936) 9429601', + address: '138 Buhler Avenue', + img_id: 1, + gender: 'M', + }, + { + id: '19d18d40-0e64-4837-9420-92130a0ed253', + full_name: 'Shelden Greyes', + job_title: 'Operator', + country: 'GB', + is_online: true, + rating: 5, + target: 40, + budget: 12253, + phone: '(343) 6656271', + address: '2 Waxwing Point', + img_id: 2, + gender: 'M', + }, + { + id: 'bebdc6eb-9179-484a-917d-2e16a23bfdfe', + full_name: 'Megen Cody', + job_title: 'Operator', + country: 'BR', + is_online: true, + rating: 1, + target: 66, + budget: 96183, + phone: '(178) 2336256', + address: '4082 Stephen Court', + img_id: 6, + gender: 'F', + }, + { + id: '38b08b88-e482-46fc-8976-83590c02ec23', + full_name: 'Clevey Thursfield', + job_title: 'VP Quality Control', + country: 'BR', + is_online: true, + rating: 2, + target: 58, + budget: 54936, + phone: '(277) 7415010', + address: '1563 Glacier Hill Parkway', + img_id: 5, + gender: 'M', + }, + { + id: '2aac53f8-b72d-4629-9082-6d8239a8fecf', + full_name: 'Ruthi Baldini', + job_title: 'Data Coordiator', + country: 'BR', + is_online: true, + rating: 3, + target: 37, + budget: 46572, + phone: '(766) 5691615', + address: '6 Laurel Avenue', + img_id: 8, + gender: 'F', + }, + { + id: '1aa789e5-de01-406e-a2ee-cc5ce20f7e34', + full_name: 'Annecorinne Morter', + job_title: 'Professor', + country: 'FR', + is_online: false, + rating: 2, + target: 35, + budget: 37198, + phone: '(807) 2524830', + address: '106 Green Street', + img_id: 3, + gender: 'F', + }, + { + id: 'd2ff1b02-3808-44aa-9056-3b5df34bf865', + full_name: 'Gracia Punyer', + job_title: 'Assistant Manager', + country: 'ES', + is_online: true, + rating: 4, + target: 64, + budget: 84752, + phone: '(515) 9749536', + address: '69 Brentwood Alley', + img_id: 2, + gender: 'F', + }, + { + id: '26b2b760-27e8-47a6-81c2-07870d1b2b30', + full_name: 'Duky Hurring', + job_title: 'Account Executive', + country: 'BR', + is_online: false, + rating: 3, + target: 61, + budget: -1266, + phone: '(897) 7202034', + address: '39 Morning Circle', + img_id: 3, + gender: 'M', + }, + { + id: '91c6b652-4206-4a0c-bac6-dc21283a72d7', + full_name: 'Briana Shemelt', + job_title: 'Professor', + country: 'US', + is_online: false, + rating: 3, + target: 63, + budget: -9308, + phone: '(205) 2560799', + address: '11 Walton Court', + img_id: 2, + gender: 'F', + }, + { + id: '1e8289dc-2ef3-4045-ad6b-786d00368427', + full_name: 'Lexis Mostin', + job_title: 'Analyst Programmer', + country: 'FR', + is_online: true, + rating: 4, + target: 81, + budget: 38153, + phone: '(903) 8388089', + address: '38547 Westend Way', + img_id: 4, + gender: 'F', + }, + { + id: '797387bd-c247-48b3-97b6-5e75791f8809', + full_name: 'Felizio Gooda', + job_title: 'GIS Technical Architect', + country: 'DE', + is_online: true, + rating: 3, + target: 89, + budget: 81585, + phone: '(372) 2389397', + address: '9 Summer Ridge Circle', + img_id: 2, + gender: 'M', + }, + { + id: '24c541b0-4978-4072-84d0-abe94fcd0756', + full_name: 'Aubry Oxberry', + job_title: 'Financial Advisor', + country: 'BR', + is_online: false, + rating: 2, + target: 3, + budget: -6095, + phone: '(665) 4176083', + address: '06 Lerdahl Point', + img_id: 10, + gender: 'F', + }, + { + id: 'd3416440-7411-42cc-a913-7dd319ca8311', + full_name: 'Orly Glasbey', + job_title: 'Environmental Tech', + country: 'BR', + is_online: true, + rating: 5, + target: 63, + budget: 63945, + phone: '(449) 8482879', + address: '4035 Porter Parkway', + img_id: 6, + gender: 'F', + }, + { + id: '139066b5-60c5-4cf5-9afe-fb4e5558b087', + full_name: 'Stephanus Culp', + job_title: 'Cost Accountant', + country: 'BR', + is_online: false, + rating: 2, + target: 60, + budget: 10613, + phone: '(148) 3124030', + address: '57028 Moland Terrace', + img_id: 8, + gender: 'M', + }, + { + id: 'eb844971-b97d-4f79-bd5a-a266fcfaaf70', + full_name: 'Roseanna Janecek', + job_title: 'Database Administrator IV', + country: 'FR', + is_online: false, + rating: 4, + target: 97, + budget: 77351, + phone: '(125) 4421623', + address: '21973 Beilfuss Alley', + img_id: 4, + gender: 'F', + }, + { + id: '5cb391fe-4855-445c-a8b8-617c04d1d999', + full_name: 'Weidar McCombe', + job_title: 'Civil Engineer', + country: 'FR', + is_online: true, + rating: 1, + target: 77, + budget: 35924, + phone: '(488) 7911627', + address: '7 Dahle Terrace', + img_id: 1, + gender: 'M', + }, + { + id: '4ba9ad7e-d8b7-40e7-b8cd-67a8e743a249', + full_name: 'Evelin Spirritt', + job_title: 'Analyst Programmer', + country: 'BR', + is_online: false, + rating: 2, + target: 18, + budget: 58552, + phone: '(821) 9538078', + address: '89418 Knutson Pass', + img_id: 1, + gender: 'M', + }, + { + id: 'e4a31407-39d1-4ab7-aad1-4e026a8c42fa', + full_name: 'Andria Helbeck', + job_title: 'Nurse Practicioner', + country: 'BR', + is_online: true, + rating: 4, + target: 53, + budget: 72526, + phone: '(387) 9614638', + address: '8589 Vernon Drive', + img_id: 8, + gender: 'F', + }, + { + id: 'cd050499-dbf1-4a43-86ab-54feaacef401', + full_name: 'Mariellen Ravelus', + job_title: 'Systems Administrator I', + country: 'DE', + is_online: true, + rating: 2, + target: 22, + budget: -6659, + phone: '(300) 6741661', + address: '707 Gale Hill', + img_id: 9, + gender: 'F', + }, + { + id: 'fda1c419-c0b8-4278-94b0-2ebef6bda164', + full_name: 'Corri Pergens', + job_title: 'Help Desk Operator', + country: 'BR', + is_online: true, + rating: 2, + target: 74, + budget: 12376, + phone: '(769) 7145603', + address: '856 Forest Crossing', + img_id: 3, + gender: 'F', + }, + { + id: '4a962db9-136e-4fcc-a683-2f961e27fb6e', + full_name: 'Friedrick Macknish', + job_title: 'Human Resources Assistant II', + country: 'FR', + is_online: true, + rating: 2, + target: 38, + budget: 97848, + phone: '(196) 4156385', + address: '157 Talisman Trail', + img_id: 9, + gender: 'M', + }, + { + id: 'fa47e456-83c4-4fdc-b57b-07effb279967', + full_name: 'Georgette Trevorrow', + job_title: 'VP Accounting', + country: 'FR', + is_online: true, + rating: 3, + target: 3, + budget: 17327, + phone: '(319) 1412549', + address: '07 Marquette Point', + img_id: 3, + gender: 'F', + }, + { + id: '67656444-fbcd-4813-84e7-1bdcd82f803e', + full_name: 'Vanya Goalby', + job_title: 'Senior Cost Accountant', + country: 'FR', + is_online: false, + rating: 2, + target: 77, + budget: 33584, + phone: '(496) 7538982', + address: '2192 Iowa Lane', + img_id: 6, + gender: 'F', + }, + { + id: '05c098c2-9617-4e66-928a-e29b97297138', + full_name: 'Abel Ansell', + job_title: 'Actuary', + country: 'US', + is_online: false, + rating: 4, + target: 52, + budget: 12312, + phone: '(571) 9908377', + address: '4355 Iowa Parkway', + img_id: 4, + gender: 'M', + }, + { + id: '3b263e99-51bf-4461-bb20-d4303d326cd9', + full_name: 'Odille Barus', + job_title: 'Speech Pathologist', + country: 'FR', + is_online: true, + rating: 4, + target: 60, + budget: 46911, + phone: '(974) 1137672', + address: '496 Lotheville Avenue', + img_id: 8, + gender: 'F', + }, + { + id: 'c09ddfaf-569e-4a75-8e53-1be27cf25927', + full_name: 'Rudolf Consadine', + job_title: 'Structural Analysis Engineer', + country: 'FR', + is_online: true, + rating: 4, + target: 20, + budget: 94258, + phone: '(450) 7612220', + address: '93 Thierer Park', + img_id: 6, + gender: 'M', + }, + { + id: 'a48abbc9-6143-4f77-a720-0b76ad862a9a', + full_name: 'Christabel Bick', + job_title: 'Engineer III', + country: 'FR', + is_online: true, + rating: 5, + target: 0, + budget: 65359, + phone: '(361) 5159566', + address: '191 Bunting Pass', + img_id: 5, + gender: 'F', + }, + { + id: 'd8816aee-4230-4392-a045-0a9c297451f7', + full_name: 'Lancelot Tanzer', + job_title: 'Senior Developer', + country: 'US', + is_online: true, + rating: 5, + target: 80, + budget: 13246, + phone: '(502) 3949900', + address: '4287 Corben Plaza', + img_id: 8, + gender: 'M', + }, + { + id: '9f5af32c-fb0d-4449-a658-f2c7f182b63a', + full_name: 'Bink Byk', + job_title: 'Software Engineer I', + country: 'FR', + is_online: false, + rating: 3, + target: 17, + budget: 56472, + phone: '(475) 9070061', + address: '075 Eggendart Avenue', + img_id: 9, + gender: 'M', + }, + { + id: 'dbd7f48a-6540-4560-bb7c-cd60456b55b8', + full_name: 'Rhys Pheazey', + job_title: 'Speech Pathologist', + country: 'BR', + is_online: false, + rating: 5, + target: 98, + budget: 62483, + phone: '(365) 8904529', + address: '987 Carioca Lane', + img_id: 9, + gender: 'M', + }, + { + id: '844189fe-d36e-4e06-9761-932259701fc8', + full_name: 'Lyndell Howieson', + job_title: 'Speech Pathologist', + country: 'DE', + is_online: true, + rating: 2, + target: 82, + budget: 16694, + phone: '(461) 3130038', + address: '9 Pennsylvania Crossing', + img_id: 8, + gender: 'F', + }, + { + id: '5544d9d5-40ea-4e5a-8fb8-f5016b313b8f', + full_name: 'Cassey Fitchell', + job_title: 'Software Engineer III', + country: 'FR', + is_online: true, + rating: 2, + target: 10, + budget: 91253, + phone: '(985) 5060547', + address: '652 Merry Place', + img_id: 9, + gender: 'F', + }, + { + id: '1c669764-3cff-424a-b7e4-e7711d6c7d6c', + full_name: 'Coralyn Steljes', + job_title: 'Accounting Assistant III', + country: 'FR', + is_online: false, + rating: 2, + target: 81, + budget: -9871, + phone: '(760) 5696853', + address: '4 Norway Maple Pass', + img_id: 9, + gender: 'F', + }, + { + id: '4cc649dc-7f85-40ab-bc59-950f37268a65', + full_name: 'Bruis Creavin', + job_title: 'Nuclear Power Engineer', + country: 'BR', + is_online: false, + rating: 1, + target: 59, + budget: -5798, + phone: '(570) 8801169', + address: '71 Carioca Park', + img_id: 6, + gender: 'M', + }, + { + id: '8c9505f1-e8f8-4ba6-8c9a-5a1d089c6f09', + full_name: 'Adrianne Peery', + job_title: 'Chief Design Engineer', + country: 'FR', + is_online: false, + rating: 2, + target: 2, + budget: 56575, + phone: '(793) 1143493', + address: '3 2nd Drive', + img_id: 7, + gender: 'F', + }, + { + id: 'ced0905e-44ac-4317-a203-76994e53a751', + full_name: 'Port Gerauld', + job_title: 'Senior Cost Accountant', + country: 'FR', + is_online: true, + rating: 2, + target: 27, + budget: 97919, + phone: '(155) 5488067', + address: '9 High Crossing Center', + img_id: 5, + gender: 'M', + }, + { + id: 'f0bcc7cd-999e-4611-a04f-7bdc16bc6160', + full_name: 'Boy Antoszewski', + job_title: 'VP Accounting', + country: 'GB', + is_online: true, + rating: 2, + target: 11, + budget: 74779, + phone: '(715) 9192627', + address: '3773 Hazelcrest Road', + img_id: 6, + gender: 'M', + }, + { + id: '322540e3-b72e-4b7d-ae4a-d927911340b7', + full_name: 'Gib Yakebowitch', + job_title: 'Marketing Assistant', + country: 'BR', + is_online: false, + rating: 5, + target: 57, + budget: 89028, + phone: '(923) 6953600', + address: '7 Mariners Cove Point', + img_id: 8, + gender: 'M', + }, + { + id: 'b1ed798d-6177-4a27-9571-2e02be932214', + full_name: 'Minerva Gilders', + job_title: 'Administrative Officer', + country: 'BR', + is_online: false, + rating: 3, + target: 54, + budget: 32267, + phone: '(773) 8863232', + address: '82 Annamark Way', + img_id: 4, + gender: 'F', + }, + { + id: 'd26bcf84-a8b4-471c-a582-2de64d7e7715', + full_name: 'Wait Peperell', + job_title: 'Web Designer III', + country: 'US', + is_online: true, + rating: 4, + target: 94, + budget: 72251, + phone: '(419) 5806752', + address: '0355 Petterle Avenue', + img_id: 8, + gender: 'M', + }, + { + id: 'da813d45-bd3b-4bfa-abdd-e12050a5da14', + full_name: 'Ailsun Esmead', + job_title: 'Software Test Engineer III', + country: 'FR', + is_online: true, + rating: 1, + target: 12, + budget: 69596, + phone: '(852) 7039628', + address: '0 Lunder Crossing', + img_id: 8, + gender: 'F', + }, + { + id: '944d8752-ef63-47bc-8db0-f40808d50b15', + full_name: 'Vallie Van der Velde', + job_title: 'Nurse', + country: 'GB', + is_online: true, + rating: 3, + target: 89, + budget: 19530, + phone: '(331) 7690832', + address: '2 Almo Lane', + img_id: 4, + gender: 'F', + }, + { + id: '3d2f991c-58ef-436d-912e-49496fd2065c', + full_name: 'Dov Amber', + job_title: 'Sales Representative', + country: 'FR', + is_online: false, + rating: 4, + target: 55, + budget: 61106, + phone: '(793) 4768356', + address: '4 Rockefeller Street', + img_id: 3, + gender: 'M', + }, + { + id: '29b406e9-ca20-45cb-8630-6df3a632276a', + full_name: 'Tedie Alu', + job_title: 'Business Systems Analyst', + country: 'FR', + is_online: false, + rating: 1, + target: 76, + budget: 3114, + phone: '(602) 5831373', + address: '28 Claremont Plaza', + img_id: 5, + gender: 'M', + }, + { + id: '767de27a-421c-4147-a552-26ac56390339', + full_name: 'Tally Rizzi', + job_title: 'Civil Engineer', + country: 'US', + is_online: false, + rating: 1, + target: 5, + budget: 78575, + phone: '(302) 6856300', + address: '1 Roth Park', + img_id: 10, + gender: 'M', + }, + { + id: '2b6e6902-11b5-4ca7-8a59-c32b3f57533b', + full_name: 'Ilise Lewnden', + job_title: 'Database Administrator I', + country: 'BR', + is_online: false, + rating: 4, + target: 33, + budget: -1059, + phone: '(659) 8660881', + address: '19 Stuart Alley', + img_id: 2, + gender: 'F', + }, + { + id: 'c891e87f-b19b-4cb5-8902-b19c59e37494', + full_name: 'Farr Penwright', + job_title: 'Senior Editor', + country: 'US', + is_online: true, + rating: 3, + target: 82, + budget: 30505, + phone: '(505) 3900066', + address: '9200 Karstens Crossing', + img_id: 6, + gender: 'M', + }, + { + id: '65821428-adc7-4743-9dd8-cf62400e62f2', + full_name: 'Chantal Bidgod', + job_title: 'VP Sales', + country: 'BR', + is_online: false, + rating: 3, + target: 62, + budget: 25742, + phone: '(746) 3962702', + address: '8807 Kinsman Drive', + img_id: 2, + gender: 'F', + }, + { + id: 'f42907e0-d92c-4fb0-b886-2e84331ffe28', + full_name: 'Johanna Bergin', + job_title: 'Electrical Engineer', + country: 'BR', + is_online: false, + rating: 2, + target: 54, + budget: 25864, + phone: '(720) 6442547', + address: '93166 Spohn Court', + img_id: 3, + gender: 'F', + }, + { + id: '4531be30-eec7-477f-bdc5-88acb8d902af', + full_name: 'Padriac Syphas', + job_title: 'Marketing Assistant', + country: 'BR', + is_online: true, + rating: 1, + target: 50, + budget: 20879, + phone: '(606) 9062546', + address: '50465 Buena Vista Plaza', + img_id: 5, + gender: 'M', + }, + { + id: '4f0ab8f6-7a36-4a5c-a513-d5495223a9cd', + full_name: 'Garey De Maria', + job_title: 'Operator', + country: 'US', + is_online: true, + rating: 2, + target: 54, + budget: 94251, + phone: '(972) 1133958', + address: '24 Maple Wood Terrace', + img_id: 9, + gender: 'M', + }, + { + id: '13556e73-d43a-485d-8603-cbf1769bd0ac', + full_name: 'Glenn Thorwarth', + job_title: 'Developer IV', + country: 'BR', + is_online: false, + rating: 5, + target: 39, + budget: 33511, + phone: '(394) 3115946', + address: '8 Dryden Park', + img_id: 1, + gender: 'M', + }, + { + id: 'c8389213-a2cd-4bb8-ba99-9c29e9b70881', + full_name: 'Bron Crosson', + job_title: 'GIS Technical Architect', + country: 'FR', + is_online: true, + rating: 2, + target: 80, + budget: 62081, + phone: '(686) 7934926', + address: '974 Mayfield Place', + img_id: 9, + gender: 'M', + }, + { + id: 'cd233a4e-0315-496d-8f5f-4c8787b0f1ba', + full_name: 'Garey Malecky', + job_title: 'Account Executive', + country: 'BR', + is_online: false, + rating: 5, + target: 51, + budget: 76354, + phone: '(304) 6324519', + address: '3 Paget Court', + img_id: 9, + gender: 'M', + }, + { + id: '339838eb-99dc-4fc0-8e18-060dbcf6bf78', + full_name: 'Elisabet Kimblin', + job_title: 'Automation Specialist I', + country: 'US', + is_online: true, + rating: 3, + target: 35, + budget: 26755, + phone: '(904) 3334563', + address: '75 Buell Court', + img_id: 1, + gender: 'F', + }, + { + id: '90a03a5a-1f16-4721-8c56-af4bb89a1f57', + full_name: 'Berk Uttley', + job_title: 'Health Coach IV', + country: 'FR', + is_online: false, + rating: 4, + target: 58, + budget: 82064, + phone: '(200) 2124940', + address: '4 Mockingbird Trail', + img_id: 8, + gender: 'M', + }, + { + id: 'ce5ba778-43eb-4658-a6bd-56f04e6f125f', + full_name: 'Kenny Clackers', + job_title: 'Assistant Manager', + country: 'FR', + is_online: true, + rating: 4, + target: 37, + budget: 47477, + phone: '(926) 3235464', + address: '53315 Bashford Lane', + img_id: 2, + gender: 'M', + }, + { + id: 'df3dffe4-6fb4-4a9c-8512-71f7cb508180', + full_name: 'Rickard Pingston', + job_title: 'Environmental Specialist', + country: 'BR', + is_online: true, + rating: 5, + target: 72, + budget: 94173, + phone: '(902) 4658383', + address: '8 Mesta Court', + img_id: 2, + gender: 'M', + }, + { + id: '2757a92d-5eed-4215-818f-fdf15b6b27d0', + full_name: 'Hobard Clabburn', + job_title: 'Systems Administrator I', + country: 'BR', + is_online: true, + rating: 2, + target: 37, + budget: 66166, + phone: '(711) 6587550', + address: '29796 Mcbride Court', + img_id: 2, + gender: 'M', + }, + { + id: '71ebd82a-f9f2-48ea-ada4-ce8db424df64', + full_name: 'Uri Champken', + job_title: 'Software Test Engineer IV', + country: 'BR', + is_online: false, + rating: 1, + target: 39, + budget: 65176, + phone: '(514) 1953919', + address: '78 Rowland Alley', + img_id: 6, + gender: 'M', + }, + { + id: 'b7a77c35-1f9f-45c5-ba44-7622d279b377', + full_name: 'Obidiah Fold', + job_title: 'Budget/Accounting Analyst I', + country: 'FR', + is_online: false, + rating: 5, + target: 66, + budget: 74529, + phone: '(747) 8711780', + address: '58 Lakeland Court', + img_id: 9, + gender: 'M', + }, + { + id: '9c0fbca6-b793-4fdc-8dcf-5136cb5d049c', + full_name: 'Angelia Marconi', + job_title: 'Associate Professor', + country: 'FR', + is_online: false, + rating: 4, + target: 91, + budget: 38996, + phone: '(530) 7506861', + address: '7 Ohio Parkway', + img_id: 2, + gender: 'F', + }, + { + id: '9083010c-4f59-49e7-96c6-894cbf24ed75', + full_name: 'Ronda Lock', + job_title: 'Quality Engineer', + country: 'US', + is_online: false, + rating: 5, + target: 36, + budget: 69903, + phone: '(916) 6819628', + address: '802 American Ash Street', + img_id: 6, + gender: 'F', + }, + { + id: '4225013e-fd75-46f6-b678-b25675e131bc', + full_name: 'Rachele Fantham', + job_title: 'Business Systems Analyst', + country: 'FR', + is_online: true, + rating: 2, + target: 100, + budget: 79333, + phone: '(652) 3112938', + address: '62 Grim Center', + img_id: 4, + gender: 'F', + }, + { + id: 'b75a42e9-db84-479c-96b0-d88109abfebb', + full_name: 'Emanuel Deery', + job_title: 'Electrical Engineer', + country: 'BR', + is_online: false, + rating: 3, + target: 93, + budget: 77477, + phone: '(860) 8318923', + address: '850 Mifflin Junction', + img_id: 8, + gender: 'M', + }, + { + id: 'b2e28f42-7a35-4e23-b2e4-40fe3ed909ca', + full_name: 'Clay Ellins', + job_title: 'Design Engineer', + country: 'US', + is_online: true, + rating: 4, + target: 98, + budget: 4120, + phone: '(682) 4688237', + address: '458 Scoville Lane', + img_id: 5, + gender: 'M', + }, + { + id: '4239103e-80bc-4f09-8655-c2165b063027', + full_name: 'Bettina Menlove', + job_title: 'Senior Financial Analyst', + country: 'FR', + is_online: false, + rating: 5, + target: 78, + budget: 80574, + phone: '(293) 8801412', + address: '29 Onsgard Junction', + img_id: 8, + gender: 'F', + }, + { + id: '8442ff74-6f05-43f7-90de-b948a5c2c895', + full_name: 'Claiborne Willoughey', + job_title: 'Food Chemist', + country: 'US', + is_online: true, + rating: 5, + target: 44, + budget: 44673, + phone: '(707) 3380798', + address: '39114 Killdeer Terrace', + img_id: 6, + gender: 'M', + }, + { + id: '1701041a-2ede-4c1d-a51b-8fe4b3ec1c35', + full_name: 'Desmond Gritskov', + job_title: 'Pharmacist', + country: 'BR', + is_online: false, + rating: 4, + target: 66, + budget: 45319, + phone: '(412) 1336481', + address: '6912 Farwell Street', + img_id: 6, + gender: 'M', + }, + { + id: '609fd74e-e6c3-41ae-a227-d3d9caba0582', + full_name: 'Codee Maybery', + job_title: 'Clinical Specialist', + country: 'US', + is_online: true, + rating: 2, + target: 26, + budget: 43462, + phone: '(682) 7969803', + address: '4 Tennessee Plaza', + img_id: 3, + gender: 'F', + }, + { + id: 'f535ef7f-c79d-4936-af40-d062d2b2d5c0', + full_name: 'Denys Beynke', + job_title: 'Occupational Therapist', + country: 'BR', + is_online: true, + rating: 4, + target: 60, + budget: 32402, + phone: '(110) 4341370', + address: '99 Trailsway Park', + img_id: 4, + gender: 'M', + }, + { + id: 'ae126e65-b6ab-4388-ba5c-f6f5d54fc435', + full_name: 'Guthry Limpricht', + job_title: 'Geologist II', + country: 'DE', + is_online: true, + rating: 3, + target: 65, + budget: 68462, + phone: '(100) 8946768', + address: '3117 Commercial Crossing', + img_id: 2, + gender: 'M', + }, + { + id: '9b1efdfc-4cce-4350-9516-028884fb1725', + full_name: 'Cammie Knoble', + job_title: 'Community Outreach Specialist', + country: 'GB', + is_online: false, + rating: 2, + target: 1, + budget: 70198, + phone: '(352) 1663192', + address: '55 Longview Place', + img_id: 4, + gender: 'F', + }, + { + id: 'a44c41e2-3adc-4d52-acb3-06f90e0214c9', + full_name: 'Kiri Espinal', + job_title: 'Accounting Assistant I', + country: 'FR', + is_online: false, + rating: 3, + target: 47, + budget: 3712, + phone: '(946) 6686147', + address: '90480 Chinook Drive', + img_id: 4, + gender: 'F', + }, + { + id: '9d6d3063-7be8-49fe-be31-64d0d5949f02', + full_name: 'Joy Tiddy', + job_title: 'Engineer III', + country: 'FR', + is_online: true, + rating: 5, + target: 80, + budget: 61355, + phone: '(849) 1097790', + address: '76 Summerview Hill', + img_id: 9, + gender: 'F', + }, + { + id: '44def3bb-7c65-45d3-aef6-bf8b49f934b3', + full_name: 'Arlene Karlsson', + job_title: 'Civil Engineer', + country: 'BR', + is_online: true, + rating: 4, + target: 98, + budget: 14267, + phone: '(699) 4713080', + address: '90 Dorton Point', + img_id: 5, + gender: 'F', + }, + { + id: '7b991e13-bef7-4f19-bd18-d5aa9d263cba', + full_name: 'Melony Millwater', + job_title: 'Chief Design Engineer', + country: 'US', + is_online: true, + rating: 2, + target: 27, + budget: 67126, + phone: '(352) 5197697', + address: '65242 Derek Place', + img_id: 1, + gender: 'F', + }, + { + id: 'ab6704b8-20ed-4881-ab28-96e3d55f7792', + full_name: 'Mab Ballham', + job_title: 'Programmer Analyst II', + country: 'FR', + is_online: false, + rating: 1, + target: 34, + budget: 65648, + phone: '(699) 9285470', + address: '2579 Messerschmidt Crossing', + img_id: 8, + gender: 'F', + }, + { + id: '03f0f5a0-8b7c-486e-ae4b-c9e5858bbde8', + full_name: 'Nixie MacAskie', + job_title: 'Structural Analysis Engineer', + country: 'BR', + is_online: true, + rating: 2, + target: 13, + budget: -5312, + phone: '(434) 6153212', + address: '59672 Village Court', + img_id: 4, + gender: 'F', + }, + { + id: '6b63462d-b181-4055-813d-983002ea57b8', + full_name: 'Gianni Crafts', + job_title: 'Tax Accountant', + country: 'FR', + is_online: false, + rating: 3, + target: 54, + budget: 85744, + phone: '(428) 3135618', + address: '53766 Buhler Parkway', + img_id: 8, + gender: 'M', + }, + { + id: 'dcafac96-c436-4232-8d0e-eda10d029e1d', + full_name: 'Moyra Summerlie', + job_title: 'Business Systems Analyst', + country: 'FR', + is_online: true, + rating: 5, + target: 3, + budget: 19109, + phone: '(960) 7792763', + address: '127 Spohn Crossing', + img_id: 6, + gender: 'F', + }, + { + id: 'a765924f-8ffb-4186-8991-6000a6ce2652', + full_name: 'Hagan Trevers', + job_title: 'Mechanical Systems Engineer', + country: 'FR', + is_online: false, + rating: 2, + target: 93, + budget: 28290, + phone: '(749) 8913157', + address: '516 Clove Road', + img_id: 7, + gender: 'M', + }, + { + id: '2c3423dd-81d0-4e41-987e-1c39956c9ba8', + full_name: 'Sela Westmacott', + job_title: 'Account Executive', + country: 'BR', + is_online: false, + rating: 3, + target: 29, + budget: 58239, + phone: '(130) 9778509', + address: '81 Maple Point', + img_id: 2, + gender: 'F', + }, + { + id: 'e8bce62e-3bf4-4232-801c-bbcc8dab2e74', + full_name: 'Lilia Wiz', + job_title: 'VP Product Management', + country: 'FR', + is_online: false, + rating: 1, + target: 65, + budget: 1438, + phone: '(418) 5940094', + address: '905 Hauk Point', + img_id: 1, + gender: 'F', + }, + { + id: '5b9b9235-e0f2-4102-b5f1-d512774e7191', + full_name: 'Orlan MacAlpin', + job_title: 'Statistician I', + country: 'US', + is_online: false, + rating: 1, + target: 1, + budget: 9094, + phone: '(512) 7106617', + address: '6055 Truax Way', + img_id: 2, + gender: 'M', + }, + { + id: '1124d1b2-6ac3-4f2f-ba35-1da116844b0e', + full_name: 'Ty Nutton', + job_title: 'Speech Pathologist', + country: 'FR', + is_online: false, + rating: 5, + target: 88, + budget: 76684, + phone: '(250) 2530424', + address: '37247 Merry Plaza', + img_id: 1, + gender: 'M', + }, + { + id: '01e7f525-ab3f-48b7-941f-c6ad601ea69f', + full_name: 'Mirelle Jandl', + job_title: 'Civil Engineer', + country: 'DE', + is_online: true, + rating: 3, + target: 19, + budget: 94486, + phone: '(871) 7917453', + address: '31 Anderson Hill', + img_id: 10, + gender: 'F', + }, + { + id: '078b38d3-79a5-4df1-bd97-f83e300224a4', + full_name: 'Diann Bertram', + job_title: 'Structural Engineer', + country: 'BR', + is_online: true, + rating: 2, + target: 38, + budget: 2769, + phone: '(716) 9445650', + address: '958 Swallow Drive', + img_id: 4, + gender: 'F', + }, + { + id: '7ca6af51-11bc-44f3-b92f-7af02923d040', + full_name: 'Cindra Slobom', + job_title: 'Web Designer III', + country: 'BR', + is_online: true, + rating: 5, + target: 48, + budget: 81624, + phone: '(409) 9223432', + address: '82525 Northridge Junction', + img_id: 1, + gender: 'F', + }, + { + id: '86a585e1-b76d-43b5-982d-e74b5b4b616b', + full_name: 'Tymon Mattheissen', + job_title: 'Dental Hygienist', + country: 'FR', + is_online: false, + rating: 2, + target: 51, + budget: 42972, + phone: '(724) 3234885', + address: '64363 Anzinger Plaza', + img_id: 3, + gender: 'M', + }, + { + id: '37e366fb-9371-4df5-980c-e9678ec9cde2', + full_name: 'Fancie Heighton', + job_title: 'Paralegal', + country: 'FR', + is_online: true, + rating: 5, + target: 52, + budget: 67403, + phone: '(738) 9982239', + address: '4353 Hermina Junction', + img_id: 1, + gender: 'F', + }, + { + id: 'b7df7c2a-4d40-4c03-bfb6-ab6d6930340c', + full_name: 'Kit Utteridge', + job_title: 'Office Assistant I', + country: 'FR', + is_online: true, + rating: 4, + target: 93, + budget: 36268, + phone: '(710) 2371400', + address: '46806 Moland Center', + img_id: 7, + gender: 'F', + }, + { + id: '7d740468-fad9-4687-895b-cee07aa3bc3d', + full_name: 'Lea Willey', + job_title: 'VP Quality Control', + country: 'US', + is_online: false, + rating: 3, + target: 19, + budget: 54614, + phone: '(304) 3327700', + address: '1 Moland Crossing', + img_id: 6, + gender: 'F', + }, + { + id: '88df162f-24fa-495d-a65c-b948607193b8', + full_name: 'Arri Halton', + job_title: 'Staff Accountant II', + country: 'GB', + is_online: true, + rating: 5, + target: 73, + budget: 32500, + phone: '(743) 8449571', + address: '3 Starling Trail', + img_id: 3, + gender: 'M', + }, + { + id: 'cb93d087-2f15-43cd-9bc3-89716e39a724', + full_name: 'Malva Pierpoint', + job_title: 'Operator', + country: 'US', + is_online: true, + rating: 4, + target: 98, + budget: 20312, + phone: '(423) 8195288', + address: '57584 Algoma Plaza', + img_id: 1, + gender: 'F', + }, + { + id: 'b76e54a1-1c46-49aa-9464-7dd9aa738b65', + full_name: 'Dalston Sabben', + job_title: 'Social Worker', + country: 'BR', + is_online: true, + rating: 4, + target: 85, + budget: 99048, + phone: '(388) 2523908', + address: '53578 Clove Lane', + img_id: 4, + gender: 'M', + }, + { + id: '608f098b-16f8-4460-bb35-9599a8a74280', + full_name: 'Delinda Margrie', + job_title: 'Financial Advisor', + country: 'US', + is_online: false, + rating: 1, + target: 1, + budget: 8398, + phone: '(702) 6480692', + address: '9 Dapin Plaza', + img_id: 9, + gender: 'F', + }, + { + id: '23b426f8-76d5-4808-84cb-c42bde8362fd', + full_name: 'Meggi Westman', + job_title: 'Librarian', + country: 'US', + is_online: true, + rating: 3, + target: 64, + budget: 63413, + phone: '(682) 3495155', + address: '82 Duke Terrace', + img_id: 7, + gender: 'F', + }, + { + id: '7ecfb74e-64d9-43ee-a028-d2e3841acba9', + full_name: 'Bret Barnsdall', + job_title: 'Registered Nurse', + country: 'BR', + is_online: true, + rating: 3, + target: 52, + budget: 55153, + phone: '(222) 2089814', + address: '4 Corry Park', + img_id: 8, + gender: 'M', + }, + { + id: 'cf505561-d9e1-4d2a-93d5-4745d50595c2', + full_name: 'Matthus Shyres', + job_title: 'Marketing Manager', + country: 'FR', + is_online: false, + rating: 3, + target: 68, + budget: 33697, + phone: '(539) 9486139', + address: '460 Norway Maple Junction', + img_id: 1, + gender: 'M', + }, +]; diff --git a/vue-options-api-demos/listview/default-scrolling/images.js b/vue-options-api-demos/listview/default-scrolling/images.js new file mode 100644 index 00000000..1bb509bb --- /dev/null +++ b/vue-options-api-demos/listview/default-scrolling/images.js @@ -0,0 +1,55 @@ +export const images = { + '10F': + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAAEA8ADwAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/2wCEAAUFBQgFCAwHBwwMCQkJDA0MDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0BBQgICgcKDAcHDA0MCgwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/AABEIAG4AZAMBEQACEQEDEQH/2gAMAwEAAhEDEQA/APsugAoAOlAHP6v4ht9J+RsyTEcRpy31P90e5rCdWNPTr2NoU3PyXc831PxrqjgvAsdvEv8AESCMe7N8v5HrXA8RN/DodioxW+pkRfEu62+SzLKwOd8e3p6cH9QKft5paj9jBvQ29H+KAeYQ3sZVM48xQRjt8wPH8vXpVxxD2mtO6IlQX2Xr2Z69b3EdygliIZGGQRXoJpq62OBpxdnuTVQgoAKACgAoAKACgDlvEmsNYILe3IE8oJ3HpGg+9If5KO7enJHJWqci5Y6N/gv62OmlDm957Lp3f9bnmEk8Vr80mZZJeVQnLP8A9NJjx8vovT27V5LfV/16no26L+vJHI6taTas++dz5SHp0UeyqOM9MdT09QKhSa2L5UjnLu0ltseUoiiHqMscdyeQvp0c+r0+bvuNLsixav5aHdgh+OPXt2FVcpo9I8A+JHs2FtKT5ROAD2+nuP5V00anI7dGclWnzK63R7wrBhkdDXsHlbC0AFABQAUAFACMQoJPAHNLYPI8V1nUfNMt3LyJGyqnui5EKfQgGR/qfUV4FWfM2+7/AOG/zPahDlSS6L/hzhIZpLmVmJJdycsenH3jj+6g+VQO/wCBrkb6HRaxM92ckRgtsIVF/vOc5Y+45B9PmP8AEKd7DUeZ2NG18KvfETXhJJHCjgD2FUk/Q6LRjsW9S8MxW9uSi/d549qbvHVCspaHORSLFGt1GNpWTa49GHOf+BLn3OeapPqjncbaM+hPDOoC+tF/vJ8p+nY17dCfNG3Y8atHkl6nR11HMFABQAUAFAGRrc/kWrAcF/kH/AuP61zVpcsGu+hvSV5X7anh+vOZZfKTpEMn03Hp+gUfnXz83ZvyPagtkYojFpCWx8zfu1HsAC/1LMVT65rmTv8A10N2rfL82bfhnSGmfznHyJ092P3m/E8D/ZArohHmd+hb9xW6s9EWLbwK6bWMriyQb1KnpTa6AnY8zv8ATxamW2HAl+dfZwMj8MKV+rYrmXutxKmr2kjtfh7eFokDH7w2n6qSufxK/rXo4eVpW7nl146eh6wK9g8sKACgAoAKAOX12UFlQ9EBc/h0/WvNxErO3ZNndRjpfu7HkiJ9oZpCM7yx+oHT8wfzBrwJarzPZSszk/F+pw6EsZm3kcRqE++Xb5mI4POTuBwcFR6VpTg5y5Y9EDkormk7K/8AWhN4R8cJeOsVtJJ5OQpWdAecZwsqADdgEhWGTg+hx2uEqe6sgUo1L8ru18meyCcFfM/hxnNMjY841X4hpp12bVpLeNAdozvkf6lV2qPpuzTXM/hWnoN8q+JpPzdhup3630UV/BLFcRmRVygK43EY/iYEBsZ5BHTntyzVnfr2tY2SfLa2m6ad0dT4UjNrLsHBWRsD9f51vRfvL1OCqtPkeyKcjivoTw9haACgAoADxQB514hudiTzdziNR9f84NfP4iduaXdpI9qhH4Y9lc5e0tThd3f+QyWP/AjmvO8zu22OR1vQ49cvYkkGRGS+QSCrZ6gj0yRVUpOL93qbcicbyW2xt2Xge2syPKBVQ4kK54LgYBwABwOntkdCa9J3ktWcqah8K1O2urbFqIB6YpNWSsJbs87/AOFdwXFyl05IeFi0ZIVtuSWP3hz8xJ+bODVxk4qyCajLVrUk1bw7Bo1hIlvnAJlYnqW6luwHI6AAVx1ddTqpaK2ysdLok4eaOYHiTY34uAG/XNVSfvJ+aOCqvda9T2CE/IPoK+jjsjwnuyWqEFABQBHKdqk+1TLRMpbpHnGsxmZliHQMWP1PT+n4Zr5uvrJR6LU92jom++hTl/0eEsMAkYTPoB1/H+uelYNdO/5HbCN5KPTrY5zwztuMzuQ0uSH9AykhgPbOcUqUeVnbWiorljsdiJsNjoo5J9K7b/cec49ty7OwdVKkY4wT7/41pLbQzirXuJC4PHTFQmU0cT8R7k2Wg3kyfe8oqv1chB/6FRZNpPa42+WLtvYoeEJT9htC/wB75fyHP9a5qb10/m/UzqK3/gP6HvducopHoK+njsj556Nk9USFABQBXujtQ1lN2izSC1OIlTzHJ9Tj/H9P514EtW33f/D/ANeZ7cNFbt/SM6VBcmZ2O2O3UhfTO3JP0AI/WiEebmk+h2J+zUV1lq/S5414G1lbpSVb7/zfieT+tYNOErM72+eKaPQbnxZYaawgu96tJwP3bbWzx984Tqf71dMX5HOqUpe+mkl1d9PuTHya/Dax+dIkiW64IZkwoGMg56YI6YJp6rSzsV7OL2qQv5S/Tc3NK1e21dPNtWLL0ztYDj0JAB/AmkYTpypO0rfI8z+MWqollbaOh/fX9zFlR1EUbq7sfQZCr75PpVx0vL+VP77aHLN7R7tfcnqbemsLZII0GFQcD6Kp/rXmQlaz8zaavc7GDxHPYOHT95AfvL/d9x6D1r2YVnHbbqjyZ009Ho+jO/sdXhvUDqcZ7Zr1IzUtjz5R5TTDg9K1IH5oAztRfamPWuWs7ROiktTlXYIpbpgH9eT/ADrxmerHexVtyEds/cc9O2eh/StIe76HU9Urbo8D8T+C77wjezaxpS+bpsrmR4Ywd9vkAuwUfei3bjhRlB/DtBIucFNdmtn3Lp1OT0e67enkdZpdyniG0Q4DY5VhgkfgeCD0INcauvde6PQjP2T547PddCePwgsjjzNgTOcBAP0zitLM2eLitYw176fna5u6zr1h4MsPMkwu0YjjGN7t1wB7nknoOpq7dEeTObk3OR8xQaldeKdZOqXhy5YLGo+7GgJ2Ivtkkk9yGJoqvkhyr5nNBc0uZ/LyPop0Mctuo4Gxj+iCvKWlv66HU+pg2WpPECTyI5HjYewOR+akYrZScWmjGUU1qb1petZTrLGf3TgY54weufp29MjPHT1KMre8vmjy6sfs/cz0OC/kABDHHtXtJHkczRrJqjqMEZq7Bzl/VXwMegzXn130PSorqc27B4sHucH8QP8AGvLeqPQWjKMEyx/I3UcEe47/AI+opRlbQ691oX0m3jBHFdaaehi1bYpS6PbsTJEohkbksgC5PqQOG+p596mVNPVaMuFZx917djhtf1LUvD43sgniY4V04wT0DjqpPbqPfNYWcdGdLcWrrQ8J8Qwav4mmkvTFLMkakkqpKRoOSB6Ack/ma1jF72OSc4p2uvvF8BWomkDY6Mcfgdo/MsT9a5K/YdN2PoK4iCXSn+5CP1Lf4Vx2s16G19H6nnyZR53H3QVc/wC8DsP/AI6wz64BpatWW61E9H5PQ348vavt5EY3j8izD6MoP4n2rtpy0Ul8zhnGzcX8vI63w5eC5tlOc7cr7/Kcc+9e/QfNBeWn3Hh11yzfnZ/edOrjFdhxm1qs+Jtn049sV4teXv8AL/Wx9BSj7tzmppTCWPLRtzx1B/8A1dfwrzW7XXQ7Utn1OYu3+15EE21k5xtIcf7vT+YH4Vzv1/zN0+XoaOgXc+oO9u2FeMDBYgFh0JIGQDnqB613UFKponsYVaipK8l9x1i6fL/y1fHsg/qf8K9aNB/af3HlzxS+xH7yxJpttcJ5c6eYndWyQSD3Ax7GtlRgtbHM8VUacbpJ+QDTLaCCSC3jjhWRXU7EAzuU9cDnqetauKS0RzqTur9z5S8DRm3vXtiPmikcHt0cY/Pr+NfPV1Zn0VN6HtV3KPtUuP8AlnHGD+KMQPzYfnXny0k/Jf5nXH4V6nB3CPYxXM7ghJ5NgyORtb5mGf4Sqpj1Ymrjpr1t/wAH/gES10NLTJgmnTSHqkZXH6A/TBz9DWtPSTS23RjU1Svvsx3h27NpKEU5SQjI9G9fxHB/Cvbpfu7W2e/r3+Z4lX3733W3p2+R6lGg2jOa9NI81mxqmyWTeDgjjIPpXgYlLm54vyPo8O3blaOZud4JSJgGI4HQ/iCRke45A7V5jutvuO9W6nnfiGeaBGRZFeQKxPlkdQD3AJ4+uc1i7qSWm+pqrNM4CPxPc6IsF95jGTcNuTndnjbk9R1z+HqM+hRvGd49N/Q46qTjZ9dj6t0PUotcsYr6PpKgYj0OPmH4c19HF3R87JW0NErg/T/9R/xrQyIvY/5PINIaPma9ih8M+IpvN63Eg2j1DYOcdgOQScAAHGTwPBxCd2ux9BRd4o6S5uS9w+0/NcPGf+AJGCT/AN9BR+OK8aTv9y/M9KKsrdrnLa/rv2eL7MAJI5NzyKMD5Qw5GcY5GST7dFINbQi5aJ2tt6mcmoa2v/kS6LeQvbSJbsx3QlVVtpyQOMMpKk4AHPPFUnyTTl3JlHmg1HsL4Scz3xibKrF+8O7jAXOePQH9MCvdp++1FbJ3/wCAeFV/dpye9rf8E9sglMiBumfpXrHkl/V7XzsvC6r6A8YP14PP1+mK8uphoz1joz1qeJcNHqjznUdSvrJRDJCJATj75PqeCQTg446/WvHqUXT0f3PoerTqqeqXzR5reassE2JYzCpJDbRn5Txzk59yQen8NcnLzX5Xqdt7JXKF54U+12qqkkbxRj92c7TjOR1AwQfQkEd+K1jW5HfZ9TOVO6t06HtnwfWWzsXsZGVljclQCDgHr0JOPrj0FfQYeoqkbo8KvDklY9Zddp/z9P5EflXeec9CH/P9D+uKAR4Z8X9AaVI9StULTg+X8oyTv47c5A6emSa8zER05j1cPL7JzGmWjWVub3WpQhKAeWpy+0D7uQeCx5O32GRivnbXdoHu3stTjGnXXWTUFVYljmeOOIfwx7CVDeu/q3bkiuvk9n7nez+dzHm5lzdr/cXdLs1jfMHCtllH931XPohyAf7uCetZSu5cu729ew1pHm2W/p3Ox8P6ZvuZL6NtoBKn0cOSCPwHOeemK+jpU2mpdIqz83Y+arVE4yj3ldeSueqwzKiAdK7zz9juZo1x0xWUtE32OpLVJaHN6jaLtOABjnpzXDUoqpHV69Oy+R1wrezdktOvd/M8S8UeGm1mb7PC6wykZ3EHafxHIP4H6142kJXttv8A8A9mL5o26Pb59zNj0TUvDdruup0ZEBB8rduPpncFX6nbn61ElGT0VjRNxVjrPhPe+deSb9wkIORwVK5wCW4OeOm3HvXqYSyul0POxN9Gz3+QYP8An6f1/SvXR47K+D/n34/mAaZOxmaxaLfWskT91JHJGCB69R+FY1IqUWn2OinJxkmj5W1q981p4VA/dkwrkcbmB3N1JweBnlsZJycV844cjt89D6KMuZX+R5nYahcwq9mCFLy7gRnA7Y7HGOK62lpUXRHOm9aZ9A+GdH+zWQaRg7Fcnju3zdT25AxXVhqKb9u93dJdv+CediqzX7haJbvubllJ9mt5WUdHX9TivWWh47ZtW0h8sE8k81Qj/9k=', + + '10M': + 'data:image/jpeg;base64,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', + + '1F': 'data:image/jpeg;base64,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', + + '1M': 'data:image/jpeg;base64,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', + + '2F': 'data:image/jpeg;base64,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', + + '2M': 'data:image/jpeg;base64,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', + + '3F': 'data:image/jpeg;base64,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', + + '3M': 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAAEA8ADwAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/2wCEAAUFBQgFCAwHBwwMCQkJDA0MDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0BBQgICgcKDAcHDA0MCgwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/AABEIAG4AZAMBEQACEQEDEQH/2gAMAwEAAhEDEQA/APsugAoAKACgAoAQkKMngD9KAOQm8faBbzC2e+g8wuseA4YBm6AsMqBzyc4HcjBqOZdzTkl2Opgu4bkZhdJB6owbocHoT0PB96q/YizRPTEFABQAUAFABQAUAFABQBj6/rlr4bsZtSvWCQ26FzkgFiBwi56sxwqjuSKlvlV2Uld2R8HeM/i9q/jO6lGnNLbWpBiWGJ3GY88ebhtm49WIxwdpyAK5ZStrLTyOyMOkFc8nudO1K1jFxIjeW/RgeeBn6jp0/wAKSqQbsnqW6U4rma0Oh0jXfEHhh11C1eeAHA8xSwBBwcHqCDgZBGDgA9KFKLdovUHTmleSdvQ+3fhL8TB48tnW6KLeQ4LKoCblJPzKu5jgcAnu2eAMCumMr6Pc45R5dVsex1oZBQAUAFABQAUAFABQB8hftQau6/YtMVsKQ8zIN4zn5VJPCN0cBQSVxk4DisJ7pHTT0i/U8W8B2q/Y1LAZLE+/WvIxEveZ7eFiuVHt8Gjw3UPlyoroy4IYAjB69a5EnutD17LZrQsXeiwvB5O0BdpXGO2OlS7xd0DSas1ofP3h+/fwl4vha3yEhvEG1e6swLJwD94EqPlIGQQMivepu8Yye58pViozlBbH6XqdwBHQjNdp54tABQAUAFABQAUAFAHyl+0zoqTwWl3GHEv73ceCm1PL46ZDHdxtI+70J5HLUlyOK73/AAsd1GDlCT/la09b/wCR4rb20ljbQC3eaLESErBCJWLNgknd3yeg9+teVpKTTSevV2PYinGKcW1p0Vz2Hw5rJkQ2s4LzQDLtgLkeuASM/Q4qG+V2PRg+Za3v6W/AxrjxLPc3pt7aaHC4/cyxujEEkfLJ905IxycZoaTjzSTS7mDlLm5YtempxVl4QPiDxtFaoNkSzQyTs2CACFkZf988qg55xn5cmu6i7RjFvd2R5FeDcpyivhXM/L+rn6AQQpbxrFEAqRqFVR0AAwAPoK9Q8YkoAKACgAoAKACgAoA85+KfhqbxPocltaoJJ4mEqKSBnaCGAJ4ztJwDjOMVhVjzR03TudNGag2ns1b8j580xY7SI+eAvljGDyQQMY+vFfPvRu59bStyj/DbC7kmuVChTxjjP4+h9j0p20NotXZ11ra2xyQgDdSOOvr6fjS0asOSS1Nj4ZeH2l1i91aWMrGXHlEqRuaNfK3ZIwcfPjGegNelh4Xab2irr1Z4GJqckJxjZOckn3st/wAUj6Ar1TwQoAKACgAoAKACgAoACMjFAHxt4rsG0y/u7FjtYuXibqCATg+/B5HqCK+fqR5Js+poT5opejI/D9tCYjJK5WXHzIsQJLD0PmLwe2eaVlY9eNN2TUYu/Xmat6qzOltDIBmQAOxwqj0PC5z3wRkcgHPJ61z2u7IwqS5E7/1+R9MaTZ/YLSK37xoAf97q3/jxNfTQjyRUeyPiqkueUpd2aFWZhQAUAFABQAUAFABQBHNMtvG0shwiKWY+gAyf0o2GlfRHxL408SR6xqEl1BkwtIXhYjBCtglWAzxnnqcGvDnJSk/XQ96CdOMbdEiXTtZt41U5G/8AlWPJbbY9ONfTVam7Y6oPPW5dT5UJDt2yFO4jn1xUK0Gku6/Mzleabemj/I+rtM1CPVbWK9hyI541kUMMMAwBwR6jODX0id1c+Sa5XbsXqYgoAKACgAoAKACgCGe4S2XfIQoH+eBQBwmpeKIb7dZxIwUnDMePXjAzwSB1P4VL3saJW1Pl680MaVdS2Jw6KxaJhyDExLJj6D5T/tKccYrwK8HTm103Xoz6Og1UgvuOhsdOgCAsi9OuK4nJnoKKXQ2NH05Nduzp0AzGgH2hh0VW/hz/AH2APHZck9s9eGoutO8vhW/+Rx4muqEGo/E9j6Js549MiWHGIowFUAfdA4H4V9Na2x8q9dTcimSZdyEEH0qBElABQAUAFABQBj3mrxQbo4iHlXt2B98fyH6UvQpLuc5e3DyRkzHLBdze391QO2T/ACrVLlQeSOQXTnk3AfLlWyf9pgf1GRUqN3cbdlY5yPwsI08pgHjiGEBGHj5J+RhglTn7rZH0IzUVqMays9+j6o2o1pUHeO3VdH/Xc5PUtH1BrsWFspUYBaQj5URjjLY7+gGSevTJHhvCSU/Z7re/S3+fke59bi4c60e1ut/8vM9Eh8OTeGVEujM37j5nRjn7QxwGaX1JA+X+5xtAHX6OnShSjyRXz8z5upUlUlzP7jtFvk1LT/tKZTzI2JB6oy5DA+6sCPwqrWJuOt7uSzRZUO35ASOxOMnP51m0UdXZ6pHcABvkY9M9D9D/AEqLWA1KQgoAKAOX17UWjItYThiNz44O3pgfzPtilvoWtNTm7AbHV+vmO/8A3yinn/vrn8a0ihNk8IN5ln4QtuPvj7o+gHP1q2LYuFQXXHAOf64/lQIq3G4lVjAMjsEGenPXPsBkn2FAExso7BSR8zk8uepPTp2A6AdulUtNyfJFtY9kaoernJP8/wBKdwsZ91EkNpOkQ2qVkbHu2ST+JNIexHcnbFKeyIrf+Of4igCVICETccEIBj8Bkn8amw7m/pF+xbyJDn+4T147Z+nSoatsB0VQA12CAseABk+wFAHmF5cfaJvtP96Vh9F2YA/LBoXfzNHpoPGU3xpyyL5S/wC9L8x/75Ubj7H3rdaGZqRxiGMKeAuBigCeUhXjA4BYf+gtQAkMebhW/uHP4lWX+tAiO/f5QPV/5ZP88UxFx+HA6bRj8T/n9aBlCdMxyR/30fH5dP1oAq3aea3lj7rPErfRSxIP1xj3FVYkuM3mEkfdXv64/wA/nSGVjKYSsi8FSCPwqWtCkegowcBh0IyPxrADA8T3Zs7CQrwZMRj/AIF1/wDHc1L2LjucTCo/dgjKTRK2P9sLg49G4/GtktF6CfUk0GQSGSQncPNYAn2CoPxO0A1SJLvmmWR0P8Dkf4UeQFuR/miz1L4/JGP9KYiyCY32gZbaWPbqQB/I0bAUrwkyRr03OB/49uP6J+tMRbmmWLdI/Cg8mnYBZULSRsoJX5gfTDDPP5UWApXY2zAkcSLjjg7l5H5jirJHSuEjCLwW+UAdvX8hUFFacYGBQGx2+lyeZaxN/sAflx/SudlGF4xhM9jsHXdn8lala+hcdGchYObnTxj78IPHqOv/AOr0rSO1uwSWouggNZMwODJLMwI7ESE/zFWtiNiTTZjcTTTEYBIHsWAIJ/lSW49jSs3+03WByluDk/7bcAfguSf94U+pJbs5DNPOT0QpH+IBY/8AoYpiIpSJL2NR0jGfxP8A9b+dAEmrJtt3Xp0/mKsnYt20m5B7AfyoAivwWiZgMsg3D8Af/rU0BhwSAnI6DjP+H9agpIZezHAA4yaBneaD/wAeMX0b/wBCaudjG62geEA92I/NGpx3GjzrRP3SlexYqfwqloUxzAadZThOkU8jLj0fD4/8frTZEENpIbHTVk6s43H6nn+tTshm7o8f2a0D9Xl+Zj7t/wDWprQTE02TCuT1lmc/lhefyoTtoK34E0HzXjt/d2j9BVdRF3VxmLHqQP61aJIrJs8DgAUAN1GTyraVvRT+vFIDnrY7SEHcbjUGhHcNumx2UfzpsR6VoYxZRf7p/ma52M//2Q==', + + '4F': 'data:image/jpeg;base64,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', + + '4M': 'data:image/jpeg;base64,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', + + '5F': 'data:image/jpeg;base64,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', + + '5M': 'data:image/jpeg;base64,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', + + '6F': 'data:image/jpeg;base64,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', + + '6M': 'data:image/jpeg;base64,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', + + '7F': 'data:image/jpeg;base64,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', + + '7M': 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAAEASABIAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/2wCEAAUFBQgFCAwHBwwMCQkJDA0MDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0BBQgICgcKDAcHDA0MCgwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/AABEIAG4AZAMBEQACEQEDEQH/2gAMAwEAAhEDEQA/APsugAoAKAAnFAHA+M/H9j4Ot2lmO+UFVCAjgsR8xGQxVQwZtgJxgHBYVlOagrmsKbm7bHgT/tKXNkzvNZLcQk/u9u63cDnlwWuB83BUKeO571iqrbskjd0oxW7+4ntP2pLV5AJtPkCYy4SQFxzjIyACMEcHb9avnkuiM+SO12vke7+FPiPo3i+NHsLiPe4/1LMFlU+jI2D+IyD2JHNWpp6bPsyHTcdVqu6O9BrUyCgAoAKACgAoAKADpQB4N8RPi5Bpcdxpuhs02oxAKZVUGGJurqHOQ0irknAKp3O4EDirVlTVk9e/b/gnbRoOo7taLofIN5r8l9LJeXU5nm8pkCOSdpyBvYvgsdzFsKMBcgnaDXDZytdO17t3/qx3XULpNXtZJLRf15HHzreyIWffIxKhco20buSFBGMnIG1cnkgdMHrXKttF6nK+b5+glwWuYDmBIrqArvaFdg8o/wDPVR8u5XwAwAYlirbjtwLR6SvDW19dfJktWT0tLrbsS2WrS2iECRkI5BP3kPQ56cHsRwPQE5qZQu9F/Xl5mkZ2W9v66/5n018HviTPp8iWuq3LtbSfKDK25Rj7pUklkbPGc7JBgHDbTShNwlq/d2a/r+u5U6cZx0Xvbpn2Hb3Ed0gkhYOh6EdD2r0k76o8tpx0ZNTEFABQAUAFAHJeN7w2Wj3Do5iZ1ESsASQZiIsqq/MzAOWULySBis56Rf8AW+hpBXkv621PiNPEMcLG1EJeOeGZUfaFcyMhZ3bknKhs5zkHcxDEkn52Ueb3r6prfor2PoIvlslomvv0v+J58kbLqUaJCGnVJN4UAhT5bqDgEKGQfvXO48g8jbiu3T2b10ureeq/4ZHJtNaapP5b/wDDs2IY7u13LAwLTLGiy4wqSb+ig/e+Vdq7d3OXkwxyMnyuzeye3dW/z/yRslKOi3a37Nv/AC/zZhzWC2THzUZ43Y75FfcXDPlWB6OucA/N2VgR/Ftz83w2TWy2tbf0MnDl+JXvu999vUtSaQs6I0ELCIGRjk7XkHG4L97lccDcRnCgtnNQqjTalLXp2Vtv6sU6asnFO3Xzv/XcswhbQOixtI8W1Qp6r+9Vwz4yA/8ACSuAcksB/EXb7JP/AC6eXUajy7XbX+fl1Pun4ZeIJ9Z02PfCIjAqxvhht4yBt2gqSuMON2QRkgHAPoUJNxt20v3PPrxUZX2vrbsepV1nEFABQAUAFAHjPxk+0/YYvszPHtEjAqwUbwYypYck7QHx8o5YKGDMFbmrbLe1+h1UbJva/mfDtrqM9nepMzn7TDnO9MR42mNsqx+825dxwCTweckcMoLlemjfzvudkZO611X3WNuxvlurthgKk7O8rYPO45RA/PysWbkBWYZU7QrE88ouKv2skr/e7fI6YO75dr6t/l99z3nwJ4EstehW/u4gsCD5du9NzlQp2tkHYACeDjc/GAOeZczu3sjrk400opXk/wAF6fkb2ofCbSBg2ivEACuxiZEAOOgY5B4ABLEY5xu5Fq72umXG2l0tOhTg8BpEnkyNvUv5jYUAkjBAGc7BkBmC4DNk4Gc1Lg9+v3HVePZWMLxJ4bt9FtXureBSYWM5BzyQGOGIBOzJyQBnGTmiClzJPZ6GVRRUG47pHr3wgJGlASkfaHJlkQZCp5zuQoUn5RhR0AGScknge9RslZdD5ite93/X9XPYAMV0nILQAUAFABQBxXjeGzktN96yxIgcF237QrjaVbyyJMMdv+rZWBUHOAQYla2ppC99D8+7jS5o7iSQLuRy5CckEDlgS5VvlL54JK4DjjmvKnJR92+3U9enSc/fSdtbf8G5bsLOW1u4oBBkSsFKDcGwcZZSc8suRgAjJBC1zSkpRbvsdcIOE1G3XX/M+2bIp4e0aIoN6lN6hiRy53bemflztycYxzgdIj7kF1vqr+Y5L2taS2tpp2X9XOEtvG2sXbSPHawrbQXBgcuWEpZfvbEJQsB6gEcda3lGdOPM7en9M1pqnVk4x5lyrfVL8jsNbuLmxtBcIFLyKNgGcZYcZ4J/SkpSaV9L/qVDlk3GN/dv+B5PoranqqvLq4lkaSKcrbA7AkgDCNGIQKyy9OCxA6jkE7OMYSWt/v36GTc3CTceTybT06+nzPZvhdos2lWBa7LNcOxD7lVSuOcDYzKQSc5GBnsOc91GNk2+rPCryu1FbJHqR4rqOMBQAUAFABQByvjDTbjU9OkhswjSnjEm4qVPDAqD83HQEH1A3YNZVE3H3dzWm1GXvbHx34S0h9QurvRbpRFdBWNrLhgFkRgkkLZ3uGKxqACM7FbbzjPh1IX12a0a/E+owtZU/clrF6pq3ZrS/wAn8j1Sy8Fpm3a8RoLiCZIZtkhYNsXKPG4YNsYAfeCkNlcAAZ4XFr3X3s/mdU6iT5oWaceaPT5Pzv8Ahbue6G1S3gRIQFjiUKo9AOmM8/j1r1+WyXLsvwPn4yvKXPu3r5nOvpcUkpldQST6Y/E02tLnpKfKuVMj8Txq8ISIM3lnqBxx2/8A1VlNW92HQMLe7c7K/TqZFnYZmiVV2kupI6d+aajeUejujoqyUYTf91/kevQxLCoRAFAHAHFe0lbRHx7d9WSNTEA4oAWgAoAKACgD5o+NOim1vIdSt4m/frtklCnbG8ZUq2QDtkI5TpkgnNeViYNSU1s1r6nrYWaa5HutV6f8Odp8OL+TWNEtr64ZpZmDROztuYmGR4wxbuzABmPqTXnpPmu3fp6dV+Z1VJaci0tr/melAfLiu9bHn7MyLqNsEDgHg/jWLctkehTkt3ucZrOox2yCDzgrLgMd4YqACF4LfLjuQMk9cmsrtaLc9alSc7zUNHtpbfV9Nb/caXhZ3u50diHAG4MDkH3z3zW2HTdSz1tqefjGoU3FK3S2x6jXtnzIEUAFABQAUAFABQBUlNtdbraQxycfNG21uP8AaQ54+opuLtdp8r6taMSkr2i9V0T1RzFjo9j4e3WGngRIxafygchfMY8qP4ULK2AOBg149eKhK0dLq/zR6VOTmry6O1yxDqCsxjPysvVT1Hv7j3rjjVt7r0OmVFr3lt0Y2/hFzGBgMvcEZH4itZXkk47FUX7Nu+jPPNY0fzJQ6xqqr1woGR/QfSsffW2x9DSxDjFxc/xudx4MttsLykbRu2qPQAD/ABr0sJG0XN9WfNY+d5KF76XfzO3zXpHjhQAUAFABQAUAHSgDxnW7r7Y0rlobq2csrwzKRgZ2/I2ThcHqpORyVwTX1tKklGNNxcXZaqzTutpLZ+jXkmfIzqyc5TT5lzPTVNa6OPX5xfm0ePSaHeeD74eIfC0/nW5+S4sHk35XO5o0YnJIOWj7kfc6bK8XG5Y6qboq1SOqj0a7xvt5xez2ex7+DzCNO0a9/Zy0cuqfaXn2ktGt+p6RYeNtM8TBXgkENwBkxsQJY26MCpwevBBHPQivg6lNxk41IuMk7NPSzPvqSTgnTkpRavp1XTQ1H129tDiIo31yAePx/Ks4udN+69CnRhNar/gHP3Gq6pfSgymOOMEA7Cc4J9yB+Ndaleyd238h+z5E7WSSue+6dBFb28aW5DR7QVYEHcGGd2Rwd2c5HBzxxXvxioJKOx8jOTnJyluXQMVZmLQAUAFABQBHLKluhkkO1VGST2H+e3U1STk1GKu3siW1Fc0nZLqeXeIvHbAva6crghSWkKkYGM9Bynbn73PABFe/hsCtKldrfSP9b+mx49bEt3hRTStrLr8l09TwfV/F0+mO17esv2YBUk8pQsqhiBG/VkuI+0gcrMjHcGwcD2asfqyU4tOn1vf3Xe2i3S12WltUnsefCKrLka9/o+/XV9/X0ui4L9NRhNxC4lhuB/rBg45yolTJI6ZU5yOqOcFKuLvZ09HulfTXrF/n07pblJci5Z6rZvr8/wCvQxLiDTbOQyanFFLCVO8n/WqwG4tE64kZCg3YUnHGB0LebjsFHGR9o/cqRV1NR0dukl1tt37aXR62Dxbwr5F71NuzjfVX6xfS/bbvrqd3YeH7fUrVbnRtRuoo2QBUZlnWM4yA0cq71YZ5DMCRyc8GvzyrSdGXLUj1dmrpS9H2/LZn3FKv7Rc1KXRK2l4+q7/n0MPxBo+sW0blr+IWuwliluVnKgfMobzSilgDhtny5+6cVzw5U4p3u3a99NXva3T1OqcpyUnGyile1rvRbXv19ND0v4efEqynhg0q5eOEQxRwxFiFZdgCKkg6AAAL5nADDa3JBP21XCRUVPDO6sna99Lbrr6r7j4ONaXM411Z3etra32fRHuCOrqGQhlPIIOQR7EV5O2h2DqACgAoAOlAHC6/cvqLfZUyLclVZlOA2cFs4IOAGXGMdG57V7mGpqkvaP47NpdVva3no/wPAxVX2jVOPwXSv0b0vfy1X4nkeuWAt1e48sxTIwDOwlztdcDDo4wFZdvPQMAeMV9DSs2op3i1dap6p32a6p3+R5ilJptr3k7aaaWtt5NW+ZzZswWkiQI8bR+YocK/ylVYYbaCCFJByDnB5UgMOl2aXOuvK7d7taq+qv8An20LV1rF20vr95g6TpzWsskI22yuhOFA2DuSq+mcMyYPBLIWOatxjBK0dE9Lbf8AAb/P1KUnJ6vXrff/AIK/Qzru22grOAyxDdG5ywVGJ3CQjlkRmLLIckKcSEFQz1rTXL0e0uqaWifk0rX+/uCak7rTuv1Xn5fcZ/gXVG0jU40ifat2THLHJkEYX5QuCAcEjZkNxwpw3Hg5jhqc8NVcVZxjzxVldSWrt5PZ+R7uBqzhiKavpJ8rd9Gnor+j1R1nxX1s6bo7kHbJdOtunqN3Ln8EU/iRX5tQgp1FfZa/18z7nEz9lSaW8tF8/wDgXPLLq0lspLe3iGFjngaQhcSM6uB5jsP9YjFm2gk7CAowQd/6XSw/sqdNRX8jfd3advRX2+fc/PZ1eecm3/Nb8Vf10PYPDPivUfCzMlmcwj5mhbc8eB1YIWLL6lomXH8SkV1YjBQq6y+TVk/S+33r5mFOvKG33Pb+vQ+nfC/iSDxNaC6h+VhxImc7W9QcDcjdUbAyOCAwYD5CvQlhpcktnqn3X6NdV0Pap1FUV1v1XY6OuU2CgDM1SZootseA7kKM/UZ/nj8a6qEVKV5bLU48RNwhaNlJ6L9TlZIt8ZjX+IblA4+YZyv4/MP++a9dS5ZKT6Oz9Hs/lo/vPn3Hmi4Lqrr/ABLdfPVfcYEl1Ig80YkQfJKjcg8cE+zqMH0cZ6kV6KpxfufC/ig1uu6/7dev+F2OLnlH31rbSS7+f/by08pK5g3enQSsUhURtIoMEoA2nghVb0VgWicHhW57V0xlJK8teV2nHr0ba81pKPVrQpPklyp6SV4v12/+RfZnGXVmsrJaOGjMaElz1jIUs+OBkBw5567gvHBHem4pzVmm9ujTdl96a9LXNFaVraW/B9fxv95zFvdHTpDHcEbfmjVj91ZCN0WSf+WM5GxH42OXgfKgsc3Jq8JX5U079Unpr6fmr9ma2TXNHR2ene29v62+aOeOk2tzKJokfyw5IRPllQjkiM/89Iic+X918BkwXIbapCyvZab/AOf+F9Vt92rjN7Xt2f8AXXzOd+JbXup2dmtyfOjgmKidB8kqyKpjY4AAbGQwOGGQG+Ykn4bHYOnhp+3wllCaSlBbwld623Se3ZNaaNH1eHxU8RT9liG+aDbUn9pWXXq197T8md7eRJFIjkjajHDsgIUHGcjugP4gAspBJr7pQShotUkrem1uzX/APk1Jt2b0bJ51SRCsZ8i5gJ2nPykr1TcfmUg/cL9AcbnT5lzTfVXi9/8AO3Xzt62T0elraPR/1ubng/xFdaDcC6gTEb4FxDtwG5G/HdGUbmH8I+Y42g1y4nDwxNPkb95XcHfby809u+3U1p1XQldfC9GvI+s4ZVnRZYzuR1DKR0IIyD+INfAtOLcXo1oz6RO+q2JKQzhtZ1eJrho9w2W7rE5H8Eknl4zjoBvTcT0XJ7V7mHouNNStrNcyXeKv+Ls7LrofPYqrz1PZrSMFa/m7a+idr/McAcemT/3zJ3HsG7dun9009vu++Pf5f590c/mtNfun1Xo+ny7M5XVoDZubmM4hlyssbAlQzdenKZI3IegcEY7V6tCXtEqcvjjZxl1aX52Wj7p3OOpHlbqRXuyupLs3+V912loczKJ1XyCFdT89vIjZVt3BXnlQ/TnhJRjuTXemr+0V1b3Zxa1Vtn8vxizNRTXsm79YPbfdfP8ACSKEupmTbNKu50/dzKwwT/Dlh6SL8jekgycFhWigknTTsnrBrp10/wAL1X9126Fq8XzrfaS79PxWj89Tn9RsI2cQoqyRlG8styJI5CGVXzwdoDrg9CXHU4OkLP35aP4ZLou+nno79reZrJuNora90/y/rucrc2/9lQ/bLfizV0WdCSXix8qSBjyQgkHJyTEDuJ8lWZyfspJPtZ9uXv8AK2vk7+Rovfi7aO9169vnfTzLPiGwm1HS5hblSp2zGM/cEykbZBzgCQsjdMZLEY2sTy1aEJqdOy55QlGL/wDJl9zjr6LubU6soOMr+6pJtfg/wf5jbW7iv7aKY8wzrnI7B0XblfbIbHchgehrspT9pBVI7ySkl59V67ry0OaceSTh/K2v8v8AMnKkIqTgZjAjLDksmCFPo4KEhSe2MdTWkUrtx2etuz6+mu/mKT27oo6ROYfNsLkkBGCrKvJMbZ2OvTJjOGQ8HG6NuoAxcdXKHm0n36r0ez87NG91ZX/r/hvyPf8A4feNRcSLoV2AskUYEEueJAowY+f4hglSCcqMH5hz8rjsJyN4in8Ld5L+W70fo/z8j18NX5kqUtGtI+dunyPYa+fPTPBNNiabV9d08H5BdROC2Sd06ZI68qGXp/d+UV9epctLD1HvydO0f+Bt5nylaN5ziv5nf5y/4J2tncedAsjd1Ab34OD/ALy4OD3GAe+eSceWTS7try7r0d/60MovTXbZ+a6P1Vvn6XLM4+U7wHGfLkU/dcHPUe+Oe4IDDnNRHdKN1pzRfVf1f81saN8t29bPlkukv6tr52a1OA1rQkjIFs7wr/rFxyVD8EDkDqM7funGRtJOfcoVnJNzSb+F9m1r+Xz6a6HHUSg0vstKS7pP9b/fvocpqVzcWc+bgRyuN0c2MqJCmA7dON6EE8cSDcK7KUYzjaF4rRxvvG+qXyd1/h0NZaO/XZ+dt38/z1M0Xo82XTnDB7dWmjcEHC5UsueCMghuAcOODgk1drctRbT91r70n8np5r0GtYtdtV+q/rqUtQi3uMgeVdxuHTtvQgE4xjBVX9Mb8dBk2nsv5Xb5Si2l+V/S5K2fpdeqZmaLKyQNYOS32UGLd/ejG6RM99yxN5WfbPeojHlbX8srL0ai1911fu1cuTvaS05lf5pu/wB9n95R0e3+zvc2Tn5Ibpgm3gKrtHKoA4GE891UdAMDsMY0F7P2kFsptx8lOPPb/wACuaVHzckurik/WL5b/ckad1CWAiZmWNfLDbDh9rASAIxBCkYK5xnDEAjrXU1dNRbTd9V5Oz+/+tTKL6tXt+v+RasrRIojCoAe3lKlu7BmETkk5YnOx13E4O715z0i7raUb/NLmX4XT76FNtrXo/z0/wCG+ZW0/UPsGqWRjXiSbzmI+Vt1s2OCP7+4Fsg7uQccGs8RHmhKktLqS8rNL8r6djSi+V+06Ra0PsXTL9NUto7uIMqTLuAbAYD3wSPyNfnc4OnJ03unbTY+qjLmSktmf//Z', + + '8F': 'data:image/jpeg;base64,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', + + '8M': 'data:image/jpeg;base64,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', + + '9F': 'data:image/jpeg;base64,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', + + '9M': 'data:image/jpeg;base64,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', + + BR: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAtCAIAAACRYfoNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJGNTM2NzBBMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJGNTM2NzBCMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkY1MzY3MDgwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkY1MzY3MDkwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4SeXTsAAAKC0lEQVR42uxZ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', + + DE: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAmCAIAAAD7pgrOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjZFMUI5MDQ1MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjZFMUI5MDQ2MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NkUxQjkwNDMwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NkUxQjkwNDQwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6gw/inAAAAVklEQVR42uzWUQ2AMAxF0Y5MxCThDI1TMAXwCXjg74VzHZw0TVslSZL039qeDljhgH6FA7YCAAAAAABIvsR3OmAc4c/cM8MnUKclBgAAAAAAAPjaK8AAbScGyes+6bEAAAAASUVORK5CYII5OTg=', + + ES: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRGRTFGQzcyMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRGRTFGQzczMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REZFMUZDNzAwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REZFMUZDNzEwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5CGIEmAAAD1UlEQVR42uyYy28bRRzHfzOzD7/Wie3EdtIkdkwSkTRt0iRSlJKKJqhCnJBAiAM3JLhx4QQ3uCP+A269IIGQECFItEhBrVFJBQ1NaVqTuCHOy0lsK2t7nzPDxs0BboYgY4sdzUr7mFnNZ3+v76yQ9vdBKzcMLd5cABfABXABXIAzNYFqqLUBwjNaSwMgvtziLgTGWfBrnbViEKOTqZxBXsVAaq9B/5UF/v7SOce6JaiGvF8Rf9oOzQ/kFYF5RMvpzrPmBkBQNaStY6+qiUS3pLLu14Dl9PskFG4zvQJPRhyLsCYGwHBoeDJfIfEhOgoIeMOrTVd+vNVujVF6iKovku450YMN4E0YA46Li+C4e7ytIoWMrIEqPqM6bnFcKE0w1TIfW6S7s+yRTZBqIxuXRm/VtXpG0c1vBUzghWsWeGHpLlnelAUdhQ71ShsIfnZlmA8PQ7mAbtwQB1J09BIFu5lciAL/nVoEgWGg1et+lseeLGKbHM+/3HdpjCq7WpewVV732Ytrquk3YLS5YoCDgGBwcp5yG8P3W4v+LY9u9uo9m3Lb+UlPcgZ+Xs+pHeJoLKosnp97rVO8ByzTXDGAZAjHXpXJS1YVEQ8tDsv58YAaAIEgdlDyFagSVhAxWBUFg2/7lPGT4tBEFhBhY0nK3vsECE0Xg+YRqDy0pyu9PLu3komNjJjtomLTfMaf/05SfR9qfDt8jXSkGhEG9VmAwHGOkok3yOzrz1xVcZTF8uX+uyyT7PlI969++bU9mSj45M4hs+sCD7zy3rE8YZVYY6Q6+eDNOkYxCPXD3sP24jcPUjMbBwSJx/Y5c/uOPb31bF9sdWWwuKD/tiTt3/ZiNfMF67/4ZGg6h1jzuJAMa5/jQt6feCvaPXRz5VeK44BlcnUnnUxvTkWzzK6IVWA7fOgdabd3Kvtpti+Cuib4mZTivwlgQOoKpeFZRlVmAndyKkOUknhXKSEXZL93JxLpqFQ5WGBx+cLlgeByJJh2rprGAgyUGGi5jy2L4hSAjRwd6hzURhUpIWm52AZYDAsRZLPK0dq7/YHHUhCaqZARuL/bf/2Xy05JjirGyMXN2yVsMMWMTZl4xH50x6dlRKINzukL67MLj0bC3oH3lc/afZUG6Lp6C1lA1GZ795164AEtOUbb4vqBltwVO3aK2cT0uVjxSVfPvq+Dx9dLz/cdeYQydkK4IZKuPi30NN+SU1Fx8l2FU9c63ccINYehtZOnd2xoDIDgZJh/XjnIX235Z3NKjVKjD56LtvamvvCDt7UBiJe3NID7b9QFcAFcABfg/w3whwADALA9jy2I9PhSAAAAAElFTkSuQmCCMTg5Mw==', + + FR: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJENDg5REJDMEM3MDExRTZBM0QzODREQzFFNDczOURFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJENDg5REJEMEM3MDExRTZBM0QzODREQzFFNDczOURFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkQ0ODlEQkEwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkQ0ODlEQkIwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5eKs0eAAAAZUlEQVR42uzPMQ2AQBAAwXu610EwQxCAAnrE0GAAETR4IqGABg/XfTIrYJMp0W+R7vmOfZynIT14z+te1lJr+tBF4wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTVL8AAJaAJpU7NMCAAAAAASUVORK5CYIIxMDEz', + + GB: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFERTU2NTJEMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFERTU2NTJFMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MURFNTY1MkIwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MURFNTY1MkMwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4LW+oDAAAIsElEQVR42sxZ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', + + US: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAiCAIAAABgN0jYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFBOEQ0MUQxMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkFBOEQ0MUQyMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUE4RDQxQ0YwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUE4RDQxRDAwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6Xh7i9AAAGGElEQVR42uxX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', +}; diff --git a/vue-options-api-demos/listview/default-scrolling/main.js b/vue-options-api-demos/listview/default-scrolling/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/default-scrolling/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/default-scrolling/main.vue b/vue-options-api-demos/listview/default-scrolling/main.vue new file mode 100644 index 00000000..f056f684 --- /dev/null +++ b/vue-options-api-demos/listview/default-scrolling/main.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/listview/editing/ItemRender.vue b/vue-options-api-demos/listview/editing/ItemRender.vue new file mode 100644 index 00000000..1172f4aa --- /dev/null +++ b/vue-options-api-demos/listview/editing/ItemRender.vue @@ -0,0 +1,175 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/listview/editing/main.js b/vue-options-api-demos/listview/editing/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/editing/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/editing/main.vue b/vue-options-api-demos/listview/editing/main.vue new file mode 100644 index 00000000..b6e57acb --- /dev/null +++ b/vue-options-api-demos/listview/editing/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/listview/editing/products.json b/vue-options-api-demos/listview/editing/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/editing/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/endless-scrolling/destinations.json b/vue-options-api-demos/listview/endless-scrolling/destinations.json new file mode 100644 index 00000000..542eb216 --- /dev/null +++ b/vue-options-api-demos/listview/endless-scrolling/destinations.json @@ -0,0 +1,117 @@ +[ + { + "Destination": "BRUSSELS, BELGIUM", + "Text": "Chocolate, beer, music and surrealism.", + "Image": "brussels-180x150.png" + }, + { + "Destination": "PORTO, PORTUGAL", + "Text": "Taste it, drink it, eat it, love it. Bem-vindo ao Porto!", + "Image": "porto-180x150.png" + }, + { + "Destination": "MALAGA, SPAIN", + "Text": "Enjoy the perfect climat.", + "Image": "malaga-180x150.png" + }, + { + "Destination": "BUDAPEST, HUNGARY", + "Text": "One of the most exciting cities in the world.", + "Image": "budapest-180x150.png" + }, + { + "Destination": "BRATISLAVA, SLOVAKIA", + "Text": "A modern city on the Danube.", + "Image": "bratislava-180x150.png" + }, + { + "Destination": "FLORENCE, ITALY", + "Text": "Love and culture are everywhere!", + "Image": "florence-180x150.png" + }, + { + "Destination": "POZNAN, POLAND", + "Text": "A unique heritage with rich cultural offer.", + "Image": "poznan-180x150.png" + }, + { + "Destination": "ATHENS, GREECE", + "Text": "The biggest open-air museum in Europe.", + "Image": "athens-180x150.png" + }, + { + "Destination": "SOFIA, BULGARIA", + "Text": "One of Europe's oldest cities.", + "Image": "sofia-180x150.png" + }, + { + "Destination": "BORDEAUX, FRANCE", + "Text": "Discover exciting new facets of its character.", + "Image": "bordeaux-180x150.png" + }, + { + "Destination": "GENEVA, SWITZERLAND", + "Text": "One of the most welcoming cities in Europe.", + "Image": "geneva-180x150.png" + }, + { + "Destination": "RIGA, LATVIA", + "Text": "At the crossroads of various nations and cultures.", + "Image": "riga-180x150.png" + }, + { + "Destination": "SEVILLE, SPAIN", + "Text": "Seville. Any time of year…", + "Image": "seville-180x150.png" + }, + { + "Destination": "COLMAR, FRANCE", + "Text": "A condensed version of the Alsace region.", + "Image": "colmar-180x150.png" + }, + { + "Destination": "VIENNA, AUSTRIA", + "Text": "The Giant Ferris Wheel is awaiting you.", + "Image": "vienna-180x150.png" + }, + { + "Destination": "MONTPELLIER, FRANCE", + "Text": "Smart, Mediterranean, attractive, welcoming and festive.", + "Image": "montpellier-180x150.png" + }, + { + "Destination": "VALENCIA, SPAIN", + "Text": "Sun, culture, history and future. ", + "Image": "valencia-180x150.png" + }, + { + "Destination": "BARCELONA, SPAIN", + "Text": "Barcelona never sleeps.", + "Image": "barcelona-180x150.png" + }, + { + "Destination": "MILAN, ITALY", + "Text": "The hub of Italian culture", + "Image": "milan-180x150.png" + }, + { + "Destination": "GDANSK, POLAND", + "Text": "You'll be amazed by the beauty of Gdansk.", + "Image": "gdansk-180x150.png" + }, + { + "Destination": "ROME, ITALY", + "Text": "Treat yourself to a stay in the Eternal City.", + "Image": "rome-180x150.png" + }, + { + "Destination": "EDINBURGH, SCOTLAND", + "Text": "Shopping, dining & architectural splendour.", + "Image": "edinburgh-180x150.png" + }, + { + "Destination": "LISBON, PORTUGAL", + "Text": "The pure pleasure of being in one of the best cities in the world.", + "Image": "lisbon-180x150.png" + } +] diff --git a/vue-options-api-demos/listview/endless-scrolling/main.js b/vue-options-api-demos/listview/endless-scrolling/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/endless-scrolling/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/endless-scrolling/main.vue b/vue-options-api-demos/listview/endless-scrolling/main.vue new file mode 100644 index 00000000..542b027f --- /dev/null +++ b/vue-options-api-demos/listview/endless-scrolling/main.vue @@ -0,0 +1,102 @@ + + + diff --git a/vue-options-api-demos/listview/events/Logger.vue b/vue-options-api-demos/listview/events/Logger.vue new file mode 100644 index 00000000..7d9e1695 --- /dev/null +++ b/vue-options-api-demos/listview/events/Logger.vue @@ -0,0 +1,45 @@ + + + + diff --git a/vue-options-api-demos/listview/events/main.js b/vue-options-api-demos/listview/events/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/events/main.vue b/vue-options-api-demos/listview/events/main.vue new file mode 100644 index 00000000..0b3038a3 --- /dev/null +++ b/vue-options-api-demos/listview/events/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/listview/events/products.json b/vue-options-api-demos/listview/events/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/events/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/filtering/main.js b/vue-options-api-demos/listview/filtering/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/filtering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/filtering/main.vue b/vue-options-api-demos/listview/filtering/main.vue new file mode 100644 index 00000000..4a1e8b6e --- /dev/null +++ b/vue-options-api-demos/listview/filtering/main.vue @@ -0,0 +1,138 @@ + + + + diff --git a/vue-options-api-demos/listview/filtering/products.json b/vue-options-api-demos/listview/filtering/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/filtering/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/footer-template/main.js b/vue-options-api-demos/listview/footer-template/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/footer-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/footer-template/main.vue b/vue-options-api-demos/listview/footer-template/main.vue new file mode 100644 index 00000000..1d299021 --- /dev/null +++ b/vue-options-api-demos/listview/footer-template/main.vue @@ -0,0 +1,91 @@ + + + + diff --git a/vue-options-api-demos/listview/footer-template/products.json b/vue-options-api-demos/listview/footer-template/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/footer-template/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/get-started/main.js b/vue-options-api-demos/listview/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/get-started/main.vue b/vue-options-api-demos/listview/get-started/main.vue new file mode 100644 index 00000000..eaa9dab4 --- /dev/null +++ b/vue-options-api-demos/listview/get-started/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/listview/get-started/products.json b/vue-options-api-demos/listview/get-started/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/get-started/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/header-template/main.js b/vue-options-api-demos/listview/header-template/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/header-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/header-template/main.vue b/vue-options-api-demos/listview/header-template/main.vue new file mode 100644 index 00000000..eba8e02d --- /dev/null +++ b/vue-options-api-demos/listview/header-template/main.vue @@ -0,0 +1,121 @@ + + + + diff --git a/vue-options-api-demos/listview/header-template/products.json b/vue-options-api-demos/listview/header-template/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/header-template/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/item-template/main.js b/vue-options-api-demos/listview/item-template/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/item-template/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/item-template/main.vue b/vue-options-api-demos/listview/item-template/main.vue new file mode 100644 index 00000000..4e694995 --- /dev/null +++ b/vue-options-api-demos/listview/item-template/main.vue @@ -0,0 +1,66 @@ + + + + diff --git a/vue-options-api-demos/listview/item-template/products.json b/vue-options-api-demos/listview/item-template/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/item-template/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/listview/overview/contacts.json b/vue-options-api-demos/listview/overview/contacts.json new file mode 100644 index 00000000..3c97d01d --- /dev/null +++ b/vue-options-api-demos/listview/overview/contacts.json @@ -0,0 +1,45 @@ +[ + { + "id": 1, + "name": "Jenson Delaney", + "email": "jenson.delany@mail.com", + "messagesCount": 3 + }, + { + "id": 2, + "name": "Amaya Coffey", + "email": "amaya.coffey@mail.com", + "messagesCount": 1 + }, + { + "id": 3, + "name": "Habib Joyce", + "email": "habib.joyce@mail.com", + "messagesCount": 5 + }, + { + "id": 4, + "name": "Lilly-Ann Roche", + "email": "lilly-ann.roche@mail.com", + "messagesCount": 8 + }, + { + "id": 5, + "name": "Giulia Haworth", + "email": "giulia.haworth@mail.com", + "messagesCount": 3 + }, + { + "id": 6, + "name": "Dawson Humphrey", + "email": "dawson.humphrey@mail.com", + "messagesCount": 2 + }, + { + "id": 7, + "name": "Reilly McCullough", + "email": "reilly.mccullough@mail.com", + "messagesCount": 3 + } + ] + \ No newline at end of file diff --git a/vue-options-api-demos/listview/overview/main.js b/vue-options-api-demos/listview/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/overview/main.vue b/vue-options-api-demos/listview/overview/main.vue new file mode 100644 index 00000000..f8c839bf --- /dev/null +++ b/vue-options-api-demos/listview/overview/main.vue @@ -0,0 +1,96 @@ + + diff --git a/vue-options-api-demos/listview/paging/articles.json b/vue-options-api-demos/listview/paging/articles.json new file mode 100644 index 00000000..fc3e9449 --- /dev/null +++ b/vue-options-api-demos/listview/paging/articles.json @@ -0,0 +1,152 @@ +[ + { + "Title": "How to Make Games for Everyone", + "Subtitle": "Why the new player’s experience matters", + "Date": "Jan 21, 2020", + "Image": "1-220x140.png" + }, + { + "Title": "How to design with love?", + "Subtitle": "7 tips to fall in love with your job.", + "Date": "Feb 24, 2020", + "Image": "2-220x140.png" + }, + { + "Title": "A good designer is an Emotional Polymath — what?", + "Subtitle": "Polymaths describes a person whose expertise spans a significant number of realities. ", + "Date": "Jan 16, 2020", + "Image": "3-220x140.png" + }, + { + "Title": "Why Minimalist Logos Are the Best for Big Business", + "Subtitle": "Analyzing logos from giants like Netflix, Youtube, and Google", + "Date": "Feb 20, 2020", + "Image": "4-220x140.png" + }, + { + "Title": "Money, Likes, and Memes Are All the Same Thing", + "Subtitle": "How the token economy has replaced cash with Twitch emotes and Instagram likes", + "Date": "Feb 13, 2020", + "Image": "5-220x140.png" + }, + { + "Title": "From UX to UI development", + "Subtitle": "The transition between the stages of the digital design process", + "Date": "Jan 11, 2020", + "Image": "6-220x140.png" + }, + { + "Title": "7 Things Mentally Strong People Avoid Doing", + "Subtitle": "Become your own mental strength coach", + "Date": "Jan 17, 2020", + "Image": "7-220x140.png" + }, + { + "Title": "How to Solve Your 'Lack of Motivation' Problem", + "Subtitle": "Hint: Understand that lack of motivation is a lie.", + "Date": "Mar 5, 2020", + "Image": "8-220x140.png" + }, + { + "Title": "Make it a habit to externalize your design work", + "Subtitle": "Move faster by revealing the process through sketches, whiteboards and by printing your work out", + "Date": "Feb 12, 2020", + "Image": "9-220x140.png" + }, + { + "Title": "Morning Routines That Will Help You Feel More Energized", + "Subtitle": "Skip your cup of coffee and do these instead.", + "Date": "Feb 19, 2020", + "Image": "10-220x140.png" + }, + { + "Title": "What Color is Your Name? A New Synesthesia Tool Will Show You", + "Subtitle": "Here's your chance to see how people with synesthesia perceive letters and numbers", + "Date": "Feb 3, 2020", + "Image": "11-220x140.png" + }, + { + "Title": "When it comes to design, your eyes are way better than maths", + "Subtitle": "A quick look at how mathematics is not the ultimate source of design thruth", + "Date": "Feb 22, 2020", + "Image": "12-220x140.png" + }, + { + "Title": "Microinteractions: small details matter", + "Subtitle": "Microinteractions are the small details that exist inside features. ", + "Date": "Jan 7, 2020", + "Image": "13-220x140.png" + }, + { + "Title": "Key principles in animation", + "Subtitle": "Animated interfaces are full of life and emotions. Animations add life to static things.", + "Date": "Mar 24, 2020", + "Image": "14-220x140.png" + }, + { + "Title": "The 60-30-10 Rule of Time Management", + "Subtitle": "A simple framework for allocating your time.", + "Date": "Mar 13, 2020", + "Image": "15-220x140.png" + }, + { + "Title": "Real-time mobile UI/UX prototyping with Figma Mirror", + "Subtitle": "Today many design teams are transferring their design system from Sketch and Adobe XD to Figma.", + "Date": "Jan 30, 2020", + "Image": "16-220x140.png" + }, + { + "Title": "5 apps that will turn your mobile phone into a productivity machine", + "Subtitle": "Instead of letting your mobile device become detrimental to your productivity, here are tips to turn your phone into a productivity machine.", + "Date": "Jan 9, 2020", + "Image": "17-220x140.png" + }, + { + "Title": "Lessons I've Learned From Studying Money for 10 Years", + "Subtitle": "Master money, and you'll be able to do more work you enjoy and less work of the bill-paying variety.", + "Date": "Mar 14, 2020", + "Image": "18-220x140.png" + }, + { + "Title": "The 5-Year Rule: How to Create the Future You Want", + "Subtitle": "A proven process for building your dream life", + "Date": "Feb 11, 2020", + "Image": "19-220x140.png" + }, + { + "Title": "Creativity is only impressive when there's restrictions", + "Subtitle": "Why 'form follows function' is a valid design principle in today's web design landscape", + "Date": "Feb 18, 2020", + "Image": "20-220x140.png" + }, + { + "Title": "3 areas of focus to becoming a better Product Designer", + "Subtitle": "Close Sketch. Stop browsing Dribbble. Forget color for a second.", + "Date": "Jan 23, 2020", + "Image": "21-220x140.png" + }, + { + "Title": "The secret of usable design", + "Subtitle": "Improving usability through emotional, reflective and visceral design.", + "Date": "Feb 26, 2020", + "Image": "22-220x140.png" + }, + { + "Title": "When You Eat Is More Important Than What You Eat", + "Subtitle": "A practical guide to time-restricted eating", + "Date": "Mar 23, 2020", + "Image": "23-220x140.png" + }, + { + "Title": "Breaking into Design", + "Subtitle": "How to grow as a designer and land your first position in the field", + "Date": "Mar 4, 2020", + "Image": "24-220x140.png" + }, + { + "Title": "What's the Difference Between Brand and Brand Identity", + "Subtitle": "Semantics and the Quest for Truth", + "Date": "Feb 16, 2020", + "Image": "25-220x140.png" + } +] diff --git a/vue-options-api-demos/listview/paging/main.js b/vue-options-api-demos/listview/paging/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/listview/paging/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/listview/paging/main.vue b/vue-options-api-demos/listview/paging/main.vue new file mode 100644 index 00000000..f6075e6f --- /dev/null +++ b/vue-options-api-demos/listview/paging/main.vue @@ -0,0 +1,111 @@ + + + diff --git a/vue-options-api-demos/listview/shared/articles.json b/vue-options-api-demos/listview/shared/articles.json new file mode 100644 index 00000000..fc3e9449 --- /dev/null +++ b/vue-options-api-demos/listview/shared/articles.json @@ -0,0 +1,152 @@ +[ + { + "Title": "How to Make Games for Everyone", + "Subtitle": "Why the new player’s experience matters", + "Date": "Jan 21, 2020", + "Image": "1-220x140.png" + }, + { + "Title": "How to design with love?", + "Subtitle": "7 tips to fall in love with your job.", + "Date": "Feb 24, 2020", + "Image": "2-220x140.png" + }, + { + "Title": "A good designer is an Emotional Polymath — what?", + "Subtitle": "Polymaths describes a person whose expertise spans a significant number of realities. ", + "Date": "Jan 16, 2020", + "Image": "3-220x140.png" + }, + { + "Title": "Why Minimalist Logos Are the Best for Big Business", + "Subtitle": "Analyzing logos from giants like Netflix, Youtube, and Google", + "Date": "Feb 20, 2020", + "Image": "4-220x140.png" + }, + { + "Title": "Money, Likes, and Memes Are All the Same Thing", + "Subtitle": "How the token economy has replaced cash with Twitch emotes and Instagram likes", + "Date": "Feb 13, 2020", + "Image": "5-220x140.png" + }, + { + "Title": "From UX to UI development", + "Subtitle": "The transition between the stages of the digital design process", + "Date": "Jan 11, 2020", + "Image": "6-220x140.png" + }, + { + "Title": "7 Things Mentally Strong People Avoid Doing", + "Subtitle": "Become your own mental strength coach", + "Date": "Jan 17, 2020", + "Image": "7-220x140.png" + }, + { + "Title": "How to Solve Your 'Lack of Motivation' Problem", + "Subtitle": "Hint: Understand that lack of motivation is a lie.", + "Date": "Mar 5, 2020", + "Image": "8-220x140.png" + }, + { + "Title": "Make it a habit to externalize your design work", + "Subtitle": "Move faster by revealing the process through sketches, whiteboards and by printing your work out", + "Date": "Feb 12, 2020", + "Image": "9-220x140.png" + }, + { + "Title": "Morning Routines That Will Help You Feel More Energized", + "Subtitle": "Skip your cup of coffee and do these instead.", + "Date": "Feb 19, 2020", + "Image": "10-220x140.png" + }, + { + "Title": "What Color is Your Name? A New Synesthesia Tool Will Show You", + "Subtitle": "Here's your chance to see how people with synesthesia perceive letters and numbers", + "Date": "Feb 3, 2020", + "Image": "11-220x140.png" + }, + { + "Title": "When it comes to design, your eyes are way better than maths", + "Subtitle": "A quick look at how mathematics is not the ultimate source of design thruth", + "Date": "Feb 22, 2020", + "Image": "12-220x140.png" + }, + { + "Title": "Microinteractions: small details matter", + "Subtitle": "Microinteractions are the small details that exist inside features. ", + "Date": "Jan 7, 2020", + "Image": "13-220x140.png" + }, + { + "Title": "Key principles in animation", + "Subtitle": "Animated interfaces are full of life and emotions. Animations add life to static things.", + "Date": "Mar 24, 2020", + "Image": "14-220x140.png" + }, + { + "Title": "The 60-30-10 Rule of Time Management", + "Subtitle": "A simple framework for allocating your time.", + "Date": "Mar 13, 2020", + "Image": "15-220x140.png" + }, + { + "Title": "Real-time mobile UI/UX prototyping with Figma Mirror", + "Subtitle": "Today many design teams are transferring their design system from Sketch and Adobe XD to Figma.", + "Date": "Jan 30, 2020", + "Image": "16-220x140.png" + }, + { + "Title": "5 apps that will turn your mobile phone into a productivity machine", + "Subtitle": "Instead of letting your mobile device become detrimental to your productivity, here are tips to turn your phone into a productivity machine.", + "Date": "Jan 9, 2020", + "Image": "17-220x140.png" + }, + { + "Title": "Lessons I've Learned From Studying Money for 10 Years", + "Subtitle": "Master money, and you'll be able to do more work you enjoy and less work of the bill-paying variety.", + "Date": "Mar 14, 2020", + "Image": "18-220x140.png" + }, + { + "Title": "The 5-Year Rule: How to Create the Future You Want", + "Subtitle": "A proven process for building your dream life", + "Date": "Feb 11, 2020", + "Image": "19-220x140.png" + }, + { + "Title": "Creativity is only impressive when there's restrictions", + "Subtitle": "Why 'form follows function' is a valid design principle in today's web design landscape", + "Date": "Feb 18, 2020", + "Image": "20-220x140.png" + }, + { + "Title": "3 areas of focus to becoming a better Product Designer", + "Subtitle": "Close Sketch. Stop browsing Dribbble. Forget color for a second.", + "Date": "Jan 23, 2020", + "Image": "21-220x140.png" + }, + { + "Title": "The secret of usable design", + "Subtitle": "Improving usability through emotional, reflective and visceral design.", + "Date": "Feb 26, 2020", + "Image": "22-220x140.png" + }, + { + "Title": "When You Eat Is More Important Than What You Eat", + "Subtitle": "A practical guide to time-restricted eating", + "Date": "Mar 23, 2020", + "Image": "23-220x140.png" + }, + { + "Title": "Breaking into Design", + "Subtitle": "How to grow as a designer and land your first position in the field", + "Date": "Mar 4, 2020", + "Image": "24-220x140.png" + }, + { + "Title": "What's the Difference Between Brand and Brand Identity", + "Subtitle": "Semantics and the Quest for Truth", + "Date": "Feb 16, 2020", + "Image": "25-220x140.png" + } +] diff --git a/vue-options-api-demos/listview/shared/contacts.json b/vue-options-api-demos/listview/shared/contacts.json new file mode 100644 index 00000000..3c97d01d --- /dev/null +++ b/vue-options-api-demos/listview/shared/contacts.json @@ -0,0 +1,45 @@ +[ + { + "id": 1, + "name": "Jenson Delaney", + "email": "jenson.delany@mail.com", + "messagesCount": 3 + }, + { + "id": 2, + "name": "Amaya Coffey", + "email": "amaya.coffey@mail.com", + "messagesCount": 1 + }, + { + "id": 3, + "name": "Habib Joyce", + "email": "habib.joyce@mail.com", + "messagesCount": 5 + }, + { + "id": 4, + "name": "Lilly-Ann Roche", + "email": "lilly-ann.roche@mail.com", + "messagesCount": 8 + }, + { + "id": 5, + "name": "Giulia Haworth", + "email": "giulia.haworth@mail.com", + "messagesCount": 3 + }, + { + "id": 6, + "name": "Dawson Humphrey", + "email": "dawson.humphrey@mail.com", + "messagesCount": 2 + }, + { + "id": 7, + "name": "Reilly McCullough", + "email": "reilly.mccullough@mail.com", + "messagesCount": 3 + } + ] + \ No newline at end of file diff --git a/vue-options-api-demos/listview/shared/destinations.json b/vue-options-api-demos/listview/shared/destinations.json new file mode 100644 index 00000000..542eb216 --- /dev/null +++ b/vue-options-api-demos/listview/shared/destinations.json @@ -0,0 +1,117 @@ +[ + { + "Destination": "BRUSSELS, BELGIUM", + "Text": "Chocolate, beer, music and surrealism.", + "Image": "brussels-180x150.png" + }, + { + "Destination": "PORTO, PORTUGAL", + "Text": "Taste it, drink it, eat it, love it. Bem-vindo ao Porto!", + "Image": "porto-180x150.png" + }, + { + "Destination": "MALAGA, SPAIN", + "Text": "Enjoy the perfect climat.", + "Image": "malaga-180x150.png" + }, + { + "Destination": "BUDAPEST, HUNGARY", + "Text": "One of the most exciting cities in the world.", + "Image": "budapest-180x150.png" + }, + { + "Destination": "BRATISLAVA, SLOVAKIA", + "Text": "A modern city on the Danube.", + "Image": "bratislava-180x150.png" + }, + { + "Destination": "FLORENCE, ITALY", + "Text": "Love and culture are everywhere!", + "Image": "florence-180x150.png" + }, + { + "Destination": "POZNAN, POLAND", + "Text": "A unique heritage with rich cultural offer.", + "Image": "poznan-180x150.png" + }, + { + "Destination": "ATHENS, GREECE", + "Text": "The biggest open-air museum in Europe.", + "Image": "athens-180x150.png" + }, + { + "Destination": "SOFIA, BULGARIA", + "Text": "One of Europe's oldest cities.", + "Image": "sofia-180x150.png" + }, + { + "Destination": "BORDEAUX, FRANCE", + "Text": "Discover exciting new facets of its character.", + "Image": "bordeaux-180x150.png" + }, + { + "Destination": "GENEVA, SWITZERLAND", + "Text": "One of the most welcoming cities in Europe.", + "Image": "geneva-180x150.png" + }, + { + "Destination": "RIGA, LATVIA", + "Text": "At the crossroads of various nations and cultures.", + "Image": "riga-180x150.png" + }, + { + "Destination": "SEVILLE, SPAIN", + "Text": "Seville. Any time of year…", + "Image": "seville-180x150.png" + }, + { + "Destination": "COLMAR, FRANCE", + "Text": "A condensed version of the Alsace region.", + "Image": "colmar-180x150.png" + }, + { + "Destination": "VIENNA, AUSTRIA", + "Text": "The Giant Ferris Wheel is awaiting you.", + "Image": "vienna-180x150.png" + }, + { + "Destination": "MONTPELLIER, FRANCE", + "Text": "Smart, Mediterranean, attractive, welcoming and festive.", + "Image": "montpellier-180x150.png" + }, + { + "Destination": "VALENCIA, SPAIN", + "Text": "Sun, culture, history and future. ", + "Image": "valencia-180x150.png" + }, + { + "Destination": "BARCELONA, SPAIN", + "Text": "Barcelona never sleeps.", + "Image": "barcelona-180x150.png" + }, + { + "Destination": "MILAN, ITALY", + "Text": "The hub of Italian culture", + "Image": "milan-180x150.png" + }, + { + "Destination": "GDANSK, POLAND", + "Text": "You'll be amazed by the beauty of Gdansk.", + "Image": "gdansk-180x150.png" + }, + { + "Destination": "ROME, ITALY", + "Text": "Treat yourself to a stay in the Eternal City.", + "Image": "rome-180x150.png" + }, + { + "Destination": "EDINBURGH, SCOTLAND", + "Text": "Shopping, dining & architectural splendour.", + "Image": "edinburgh-180x150.png" + }, + { + "Destination": "LISBON, PORTUGAL", + "Text": "The pure pleasure of being in one of the best cities in the world.", + "Image": "lisbon-180x150.png" + } +] diff --git a/vue-options-api-demos/listview/shared/products.json b/vue-options-api-demos/listview/shared/products.json new file mode 100644 index 00000000..3da39edd --- /dev/null +++ b/vue-options-api-demos/listview/shared/products.json @@ -0,0 +1,1234 @@ + +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/notification/animation/main.js b/vue-options-api-demos/notification/animation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/notification/animation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/notification/animation/main.vue b/vue-options-api-demos/notification/animation/main.vue new file mode 100644 index 00000000..8e7d6c37 --- /dev/null +++ b/vue-options-api-demos/notification/animation/main.vue @@ -0,0 +1,149 @@ + + + diff --git a/vue-options-api-demos/notification/animation/styles.css b/vue-options-api-demos/notification/animation/styles.css new file mode 100644 index 00000000..8bb7204a --- /dev/null +++ b/vue-options-api-demos/notification/animation/styles.css @@ -0,0 +1,3 @@ +.k-notification-container { + margin: 6px; +} \ No newline at end of file diff --git a/vue-options-api-demos/notification/events/Logger.vue b/vue-options-api-demos/notification/events/Logger.vue new file mode 100644 index 00000000..7d9e1695 --- /dev/null +++ b/vue-options-api-demos/notification/events/Logger.vue @@ -0,0 +1,45 @@ + + + + diff --git a/vue-options-api-demos/notification/events/main.js b/vue-options-api-demos/notification/events/main.js new file mode 100644 index 00000000..1f1c6c86 --- /dev/null +++ b/vue-options-api-demos/notification/events/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') + diff --git a/vue-options-api-demos/notification/events/main.vue b/vue-options-api-demos/notification/events/main.vue new file mode 100644 index 00000000..057e5c67 --- /dev/null +++ b/vue-options-api-demos/notification/events/main.vue @@ -0,0 +1,139 @@ + + + diff --git a/vue-options-api-demos/notification/get-started/main.js b/vue-options-api-demos/notification/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/notification/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/notification/get-started/main.vue b/vue-options-api-demos/notification/get-started/main.vue new file mode 100644 index 00000000..e7da0ca7 --- /dev/null +++ b/vue-options-api-demos/notification/get-started/main.vue @@ -0,0 +1,56 @@ + + + diff --git a/vue-options-api-demos/notification/get-started/styles.css b/vue-options-api-demos/notification/get-started/styles.css new file mode 100644 index 00000000..8bb7204a --- /dev/null +++ b/vue-options-api-demos/notification/get-started/styles.css @@ -0,0 +1,3 @@ +.k-notification-container { + margin: 6px; +} \ No newline at end of file diff --git a/vue-options-api-demos/notification/overview/main.js b/vue-options-api-demos/notification/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/notification/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/notification/overview/main.vue b/vue-options-api-demos/notification/overview/main.vue new file mode 100644 index 00000000..398cf489 --- /dev/null +++ b/vue-options-api-demos/notification/overview/main.vue @@ -0,0 +1,135 @@ + + + diff --git a/vue-options-api-demos/notification/overview/styles.css b/vue-options-api-demos/notification/overview/styles.css new file mode 100644 index 00000000..8bb7204a --- /dev/null +++ b/vue-options-api-demos/notification/overview/styles.css @@ -0,0 +1,3 @@ +.k-notification-container { + margin: 6px; +} \ No newline at end of file diff --git a/vue-options-api-demos/notification/positions/Notifications.vue b/vue-options-api-demos/notification/positions/Notifications.vue new file mode 100644 index 00000000..e861174a --- /dev/null +++ b/vue-options-api-demos/notification/positions/Notifications.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/notification/positions/main.js b/vue-options-api-demos/notification/positions/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/notification/positions/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/notification/positions/main.vue b/vue-options-api-demos/notification/positions/main.vue new file mode 100644 index 00000000..6f0c4c9f --- /dev/null +++ b/vue-options-api-demos/notification/positions/main.vue @@ -0,0 +1,51 @@ + + + diff --git a/vue-options-api-demos/notification/types/main.js b/vue-options-api-demos/notification/types/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/notification/types/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/notification/types/main.vue b/vue-options-api-demos/notification/types/main.vue new file mode 100644 index 00000000..0a111ff8 --- /dev/null +++ b/vue-options-api-demos/notification/types/main.vue @@ -0,0 +1,124 @@ + + + diff --git a/vue-options-api-demos/pdf/base64/main.js b/vue-options-api-demos/pdf/base64/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/base64/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/base64/main.vue b/vue-options-api-demos/pdf/base64/main.vue new file mode 100644 index 00000000..e74b6af4 --- /dev/null +++ b/vue-options-api-demos/pdf/base64/main.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/content-scaling/main.js b/vue-options-api-demos/pdf/content-scaling/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/content-scaling/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/content-scaling/main.vue b/vue-options-api-demos/pdf/content-scaling/main.vue new file mode 100644 index 00000000..7ac33296 --- /dev/null +++ b/vue-options-api-demos/pdf/content-scaling/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/pdf/content-styling/class/main.js b/vue-options-api-demos/pdf/content-styling/class/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/content-styling/class/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/content-styling/class/main.vue b/vue-options-api-demos/pdf/content-styling/class/main.vue new file mode 100644 index 00000000..ec6c145e --- /dev/null +++ b/vue-options-api-demos/pdf/content-styling/class/main.vue @@ -0,0 +1,44 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/content-styling/class/styles.css b/vue-options-api-demos/pdf/content-styling/class/styles.css new file mode 100644 index 00000000..de240e87 --- /dev/null +++ b/vue-options-api-demos/pdf/content-styling/class/styles.css @@ -0,0 +1,4 @@ +.k-pdf-export p { + border: 2px dashed #aaa; + padding: 10px; +} diff --git a/vue-options-api-demos/pdf/content-styling/element/main.js b/vue-options-api-demos/pdf/content-styling/element/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/content-styling/element/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/content-styling/element/main.vue b/vue-options-api-demos/pdf/content-styling/element/main.vue new file mode 100644 index 00000000..ec6c145e --- /dev/null +++ b/vue-options-api-demos/pdf/content-styling/element/main.vue @@ -0,0 +1,44 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/content-styling/element/styles.css b/vue-options-api-demos/pdf/content-styling/element/styles.css new file mode 100644 index 00000000..65fd3b70 --- /dev/null +++ b/vue-options-api-demos/pdf/content-styling/element/styles.css @@ -0,0 +1,3 @@ +kendo-pdf-document p { + background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="); +} \ No newline at end of file diff --git a/vue-options-api-demos/pdf/embedded-image/main.js b/vue-options-api-demos/pdf/embedded-image/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/embedded-image/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/embedded-image/main.vue b/vue-options-api-demos/pdf/embedded-image/main.vue new file mode 100644 index 00000000..4b9171fb --- /dev/null +++ b/vue-options-api-demos/pdf/embedded-image/main.vue @@ -0,0 +1,39 @@ + + diff --git a/vue-options-api-demos/pdf/get-started/main.js b/vue-options-api-demos/pdf/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/get-started/main.vue b/vue-options-api-demos/pdf/get-started/main.vue new file mode 100644 index 00000000..6b93c30b --- /dev/null +++ b/vue-options-api-demos/pdf/get-started/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/pdf/get-started/products.json b/vue-options-api-demos/pdf/get-started/products.json new file mode 100644 index 00000000..d3ab4ee8 --- /dev/null +++ b/vue-options-api-demos/pdf/get-started/products.json @@ -0,0 +1,155 @@ +[ + { + "ProductID": 1, + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 2, + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } + }, + { + "ProductID": 3, + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 4, + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 5, + "ProductName": "Chef Anton's Gumbo Mix", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "36 boxes", + "UnitPrice": 21.3500, + "UnitsInStock": 0, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 6, + "ProductName": "Grandma's Boysenberry Spread", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 8 oz jars", + "UnitPrice": 25.0000, + "UnitsInStock": 120, + "UnitsOnOrder": 0, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 7, + "ProductName": "Uncle Bob's Organic Dried Pears", + "SupplierID": 3, + "CategoryID": 7, + "QuantityPerUnit": "12 - 1 lb pkgs.", + "UnitPrice": 30.0000, + "UnitsInStock": 15, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 7, + "CategoryName": "Produce", + "Description": "Dried fruit and bean curd" + } + }, + { + "ProductID": 8, + "ProductName": "Northwoods Cranberry Sauce", + "SupplierID": 3, + "CategoryID": 2, + "QuantityPerUnit": "12 - 12 oz jars", + "UnitPrice": 40.0000, + "UnitsInStock": 6, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } + }, + { + "ProductID": 9, + "ProductName": "Mishi Kobe Niku", + "SupplierID": 4, + "CategoryID": 6, + "QuantityPerUnit": "18 - 500 g pkgs.", + "UnitPrice": 97.0000, + "UnitsInStock": 29, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": true, + "Category": { + "CategoryID": 6, + "CategoryName": "Meat/Poultry", + "Description": "Prepared meats" + } + } +] diff --git a/vue-options-api-demos/pdf/hidden-content/main.js b/vue-options-api-demos/pdf/hidden-content/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/hidden-content/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/hidden-content/main.vue b/vue-options-api-demos/pdf/hidden-content/main.vue new file mode 100644 index 00000000..9186ba53 --- /dev/null +++ b/vue-options-api-demos/pdf/hidden-content/main.vue @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/hyperlinks/main.js b/vue-options-api-demos/pdf/hyperlinks/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/hyperlinks/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/hyperlinks/main.vue b/vue-options-api-demos/pdf/hyperlinks/main.vue new file mode 100644 index 00000000..f850e3ce --- /dev/null +++ b/vue-options-api-demos/pdf/hyperlinks/main.vue @@ -0,0 +1,29 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.js b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.vue b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.vue new file mode 100644 index 00000000..c8194d69 --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.vue @@ -0,0 +1,71 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.js b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.vue b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.vue new file mode 100644 index 00000000..db78c03e --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.vue @@ -0,0 +1,46 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/Content.vue b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/Content.vue new file mode 100644 index 00000000..40a12c26 --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/Content.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.js b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.vue b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.vue new file mode 100644 index 00000000..a3bb9af6 --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-options-api-demos/pdf/multipage-content/page-templates/Content.vue b/vue-options-api-demos/pdf/multipage-content/page-templates/Content.vue new file mode 100644 index 00000000..0cdbb373 --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/page-templates/Content.vue @@ -0,0 +1,56 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/pdf/multipage-content/page-templates/main.js b/vue-options-api-demos/pdf/multipage-content/page-templates/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/page-templates/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/multipage-content/page-templates/main.vue b/vue-options-api-demos/pdf/multipage-content/page-templates/main.vue new file mode 100644 index 00000000..2117261a --- /dev/null +++ b/vue-options-api-demos/pdf/multipage-content/page-templates/main.vue @@ -0,0 +1,47 @@ + + + diff --git a/vue-options-api-demos/pdf/overview/main.js b/vue-options-api-demos/pdf/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/overview/main.vue b/vue-options-api-demos/pdf/overview/main.vue new file mode 100644 index 00000000..b8d1089d --- /dev/null +++ b/vue-options-api-demos/pdf/overview/main.vue @@ -0,0 +1,136 @@ + + diff --git a/vue-options-api-demos/pdf/table-headers/main.js b/vue-options-api-demos/pdf/table-headers/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/pdf/table-headers/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/pdf/table-headers/main.vue b/vue-options-api-demos/pdf/table-headers/main.vue new file mode 100644 index 00000000..d70dd869 --- /dev/null +++ b/vue-options-api-demos/pdf/table-headers/main.vue @@ -0,0 +1,59 @@ + + diff --git a/vue-options-api-demos/pdf/table-headers/products.json b/vue-options-api-demos/pdf/table-headers/products.json new file mode 100644 index 00000000..54a01dab --- /dev/null +++ b/vue-options-api-demos/pdf/table-headers/products.json @@ -0,0 +1,1021 @@ +[{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +},{ + "ProductName": "Chai", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "10 boxes x 20 bags", + "UnitPrice": 18.0000, + "UnitsInStock": 39, + "UnitsOnOrder": 0, + "ReorderLevel": 10, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Chang", + "SupplierID": 1, + "CategoryID": 1, + "QuantityPerUnit": "24 - 12 oz bottles", + "UnitPrice": 19.0000, + "UnitsInStock": 17, + "UnitsOnOrder": 40, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 1, + "CategoryName": "Beverages", + "Description": "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductName": "Aniseed Syrup", + "SupplierID": 1, + "CategoryID": 2, + "QuantityPerUnit": "12 - 550 ml bottles", + "UnitPrice": 10.0000, + "UnitsInStock": 13, + "UnitsOnOrder": 70, + "ReorderLevel": 25, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductName": "Chef Anton's Cajun Seasoning", + "SupplierID": 2, + "CategoryID": 2, + "QuantityPerUnit": "48 - 6 oz jars", + "UnitPrice": 22.0000, + "UnitsInStock": 53, + "UnitsOnOrder": 0, + "ReorderLevel": 0, + "Discontinued": false, + "Category": { + "CategoryID": 2, + "CategoryName": "Condiments", + "Description": "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/popup/align/absolute/main.js b/vue-options-api-demos/popup/align/absolute/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/align/absolute/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/align/absolute/main.vue b/vue-options-api-demos/popup/align/absolute/main.vue new file mode 100644 index 00000000..b74097d4 --- /dev/null +++ b/vue-options-api-demos/popup/align/absolute/main.vue @@ -0,0 +1,25 @@ + + diff --git a/vue-options-api-demos/popup/align/absolute/styles.css b/vue-options-api-demos/popup/align/absolute/styles.css new file mode 100644 index 00000000..a22dd864 --- /dev/null +++ b/vue-options-api-demos/popup/align/absolute/styles.css @@ -0,0 +1,6 @@ +.popup-content { + padding: 30px; + color: #787878; + background-color: #fcf7f8; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/popup/align/basic/main.js b/vue-options-api-demos/popup/align/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/align/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/align/basic/main.vue b/vue-options-api-demos/popup/align/basic/main.vue new file mode 100644 index 00000000..f4e33d2f --- /dev/null +++ b/vue-options-api-demos/popup/align/basic/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/popup/align/basic/styles.css b/vue-options-api-demos/popup/align/basic/styles.css new file mode 100644 index 00000000..75c49538 --- /dev/null +++ b/vue-options-api-demos/popup/align/basic/styles.css @@ -0,0 +1,6 @@ +.popup-content { + padding: 30px; + color: #787878; + background-color: #fcf7f8; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/popup/align/positioning/main.js b/vue-options-api-demos/popup/align/positioning/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/align/positioning/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/align/positioning/main.vue b/vue-options-api-demos/popup/align/positioning/main.vue new file mode 100644 index 00000000..ba329f8d --- /dev/null +++ b/vue-options-api-demos/popup/align/positioning/main.vue @@ -0,0 +1,118 @@ + + diff --git a/vue-options-api-demos/popup/align/positioning/styles.css b/vue-options-api-demos/popup/align/positioning/styles.css new file mode 100644 index 00000000..49f911de --- /dev/null +++ b/vue-options-api-demos/popup/align/positioning/styles.css @@ -0,0 +1,23 @@ +.content { + padding: 30px; + color: #ffffff; + background-color: #999999; + border: 1px solid rgba(0,0,0,.05); +} + +.popup-inner-content { + width: 100px; + height: 50px; + margin: 0; + padding: 0; +} + +.content p { + margin: 0; +} + +.anchor { + display: block; + width: 120px; + margin: 100px auto; +} diff --git a/vue-options-api-demos/popup/animations/main.js b/vue-options-api-demos/popup/animations/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/animations/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/animations/main.vue b/vue-options-api-demos/popup/animations/main.vue new file mode 100644 index 00000000..5f6b5274 --- /dev/null +++ b/vue-options-api-demos/popup/animations/main.vue @@ -0,0 +1,78 @@ + + diff --git a/vue-options-api-demos/popup/animations/styles.css b/vue-options-api-demos/popup/animations/styles.css new file mode 100644 index 00000000..75c49538 --- /dev/null +++ b/vue-options-api-demos/popup/animations/styles.css @@ -0,0 +1,6 @@ +.popup-content { + padding: 30px; + color: #787878; + background-color: #fcf7f8; + border: 1px solid rgba(0,0,0,.05); + } diff --git a/vue-options-api-demos/popup/basic/main.js b/vue-options-api-demos/popup/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/basic/main.vue b/vue-options-api-demos/popup/basic/main.vue new file mode 100644 index 00000000..9712a92b --- /dev/null +++ b/vue-options-api-demos/popup/basic/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/popup/basic/styles.css b/vue-options-api-demos/popup/basic/styles.css new file mode 100644 index 00000000..5a41f98d --- /dev/null +++ b/vue-options-api-demos/popup/basic/styles.css @@ -0,0 +1,6 @@ +.popup-content { + padding: 30px; + color: #787878; + background-color: #fcf7f8; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/popup/hidden/main.js b/vue-options-api-demos/popup/hidden/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/hidden/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/hidden/main.vue b/vue-options-api-demos/popup/hidden/main.vue new file mode 100644 index 00000000..9712a92b --- /dev/null +++ b/vue-options-api-demos/popup/hidden/main.vue @@ -0,0 +1,48 @@ + + diff --git a/vue-options-api-demos/popup/hidden/styles.css b/vue-options-api-demos/popup/hidden/styles.css new file mode 100644 index 00000000..5a41f98d --- /dev/null +++ b/vue-options-api-demos/popup/hidden/styles.css @@ -0,0 +1,6 @@ +.popup-content { + padding: 30px; + color: #787878; + background-color: #fcf7f8; + border: 1px solid rgba(0,0,0,.05); +} diff --git a/vue-options-api-demos/popup/styling/main.js b/vue-options-api-demos/popup/styling/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/styling/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/styling/main.vue b/vue-options-api-demos/popup/styling/main.vue new file mode 100644 index 00000000..2d6b8958 --- /dev/null +++ b/vue-options-api-demos/popup/styling/main.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-options-api-demos/popup/styling/styles.css b/vue-options-api-demos/popup/styling/styles.css new file mode 100644 index 00000000..a43fd222 --- /dev/null +++ b/vue-options-api-demos/popup/styling/styles.css @@ -0,0 +1,9 @@ +.wrapper { + color: #ffffff; + background-color: #eeeeee; + } + + .inner-wrapper { + padding: 20px; + background-color: #fcfcfc; + } diff --git a/vue-options-api-demos/popup/viewport/main.js b/vue-options-api-demos/popup/viewport/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/popup/viewport/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/popup/viewport/main.vue b/vue-options-api-demos/popup/viewport/main.vue new file mode 100644 index 00000000..5197587e --- /dev/null +++ b/vue-options-api-demos/popup/viewport/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/popup/viewport/styles.css b/vue-options-api-demos/popup/viewport/styles.css new file mode 100644 index 00000000..d1a10bdf --- /dev/null +++ b/vue-options-api-demos/popup/viewport/styles.css @@ -0,0 +1,19 @@ +.popup-content { + color: #787878; + background-color: #fcf7f8; + border: 1px solid rgba(0,0,0,.05); + padding: 30px; +} + +.popup-inner-content { + width: 100px; + height: 50px; + margin: 0; + padding: 0; +} + +.anchor { + position: absolute; + top: 150px; + left: 50px; +} diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormContent.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormContent.vue new file mode 100644 index 00000000..d026470d --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormContent.vue @@ -0,0 +1,141 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormDropDownList.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormDropDownList.vue new file mode 100644 index 00000000..0c08d742 --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormDropDownList.vue @@ -0,0 +1,82 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormInput.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormInput.vue new file mode 100644 index 00000000..706d5702 --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormInput.vue @@ -0,0 +1,84 @@ + + + diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.vue new file mode 100644 index 00000000..38928a06 --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.vue @@ -0,0 +1,27 @@ + + + diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.vue new file mode 100644 index 00000000..d0dc86de --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.vue new file mode 100644 index 00000000..2bed3ecd --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.vue @@ -0,0 +1,54 @@ + + diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.vue new file mode 100644 index 00000000..f2c820f7 --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.vue @@ -0,0 +1,35 @@ + + diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.vue new file mode 100644 index 00000000..50cec5ba --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.vue new file mode 100644 index 00000000..7eebd7a0 --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.vue new file mode 100644 index 00000000..cd98b693 --- /dev/null +++ b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/progressbars/get-started/main.js b/vue-options-api-demos/progressbars/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/get-started/main.vue b/vue-options-api-demos/progressbars/get-started/main.vue new file mode 100644 index 00000000..4eba7f5d --- /dev/null +++ b/vue-options-api-demos/progressbars/get-started/main.vue @@ -0,0 +1,18 @@ + + + diff --git a/vue-options-api-demos/progressbars/globalization/main.js b/vue-options-api-demos/progressbars/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/globalization/main.vue b/vue-options-api-demos/progressbars/globalization/main.vue new file mode 100644 index 00000000..eb22fd3d --- /dev/null +++ b/vue-options-api-demos/progressbars/globalization/main.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-options-api-demos/progressbars/overview/main.js b/vue-options-api-demos/progressbars/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/overview/main.vue b/vue-options-api-demos/progressbars/overview/main.vue new file mode 100644 index 00000000..315d3348 --- /dev/null +++ b/vue-options-api-demos/progressbars/overview/main.vue @@ -0,0 +1,45 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/animation-2/main.js b/vue-options-api-demos/progressbars/progressbar/animation-2/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/animation-2/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/animation-2/main.vue b/vue-options-api-demos/progressbars/progressbar/animation-2/main.vue new file mode 100644 index 00000000..faa0e637 --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/animation-2/main.vue @@ -0,0 +1,53 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/animation/main.js b/vue-options-api-demos/progressbars/progressbar/animation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/animation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/animation/main.vue b/vue-options-api-demos/progressbars/progressbar/animation/main.vue new file mode 100644 index 00000000..faa0e637 --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/animation/main.vue @@ -0,0 +1,53 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/appearance/main.js b/vue-options-api-demos/progressbars/progressbar/appearance/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/appearance/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/appearance/main.vue b/vue-options-api-demos/progressbars/progressbar/appearance/main.vue new file mode 100644 index 00000000..517cf31e --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/appearance/main.vue @@ -0,0 +1,101 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/dimensions/main.js b/vue-options-api-demos/progressbars/progressbar/dimensions/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/dimensions/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/dimensions/main.vue b/vue-options-api-demos/progressbars/progressbar/dimensions/main.vue new file mode 100644 index 00000000..26dda03e --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/dimensions/main.vue @@ -0,0 +1,22 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/direction/main.js b/vue-options-api-demos/progressbars/progressbar/direction/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/direction/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/direction/main.vue b/vue-options-api-demos/progressbars/progressbar/direction/main.vue new file mode 100644 index 00000000..63bdc207 --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/direction/main.vue @@ -0,0 +1,44 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/disabled/main.js b/vue-options-api-demos/progressbars/progressbar/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/disabled/main.vue b/vue-options-api-demos/progressbars/progressbar/disabled/main.vue new file mode 100644 index 00000000..90b0522d --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/disabled/main.vue @@ -0,0 +1,41 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/label/custom/main.js b/vue-options-api-demos/progressbars/progressbar/label/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/label/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/label/custom/main.vue b/vue-options-api-demos/progressbars/progressbar/label/custom/main.vue new file mode 100644 index 00000000..2f1cd8c9 --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/label/custom/main.vue @@ -0,0 +1,53 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.js b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.vue b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.vue new file mode 100644 index 00000000..5ba307a0 --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.vue @@ -0,0 +1,67 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/orientation/main.js b/vue-options-api-demos/progressbars/progressbar/orientation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/orientation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/orientation/main.vue b/vue-options-api-demos/progressbars/progressbar/orientation/main.vue new file mode 100644 index 00000000..225327a0 --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/orientation/main.vue @@ -0,0 +1,23 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/overview/main.js b/vue-options-api-demos/progressbars/progressbar/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/overview/main.vue b/vue-options-api-demos/progressbars/progressbar/overview/main.vue new file mode 100644 index 00000000..468bd93f --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/overview/main.vue @@ -0,0 +1,49 @@ + + + diff --git a/vue-options-api-demos/progressbars/progressbar/value_ranges/main.js b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/progressbars/progressbar/value_ranges/main.vue b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.vue new file mode 100644 index 00000000..af2a258c --- /dev/null +++ b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.vue @@ -0,0 +1,73 @@ + + + diff --git a/vue-options-api-demos/scheduler/accessibility/summary/main.js b/vue-options-api-demos/scheduler/accessibility/summary/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/accessibility/summary/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/accessibility/summary/main.vue b/vue-options-api-demos/scheduler/accessibility/summary/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/accessibility/summary/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/events-utc.js b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.js b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.vue b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.vue new file mode 100644 index 00000000..ecb08a88 --- /dev/null +++ b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.vue @@ -0,0 +1,80 @@ + + diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/overview/events-utc.js b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.js b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.vue b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.vue new file mode 100644 index 00000000..5633c185 --- /dev/null +++ b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.vue @@ -0,0 +1,88 @@ + + diff --git a/vue-options-api-demos/scheduler/auto-item-height/constant/events-utc.js b/vue-options-api-demos/scheduler/auto-item-height/constant/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/auto-item-height/constant/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/auto-item-height/constant/main.js b/vue-options-api-demos/scheduler/auto-item-height/constant/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/auto-item-height/constant/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/auto-item-height/constant/main.vue b/vue-options-api-demos/scheduler/auto-item-height/constant/main.vue new file mode 100644 index 00000000..ebcc9ea2 --- /dev/null +++ b/vue-options-api-demos/scheduler/auto-item-height/constant/main.vue @@ -0,0 +1,82 @@ + + diff --git a/vue-options-api-demos/scheduler/auto-item-height/overview/events-utc.js b/vue-options-api-demos/scheduler/auto-item-height/overview/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/auto-item-height/overview/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/auto-item-height/overview/main.js b/vue-options-api-demos/scheduler/auto-item-height/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/auto-item-height/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/auto-item-height/overview/main.vue b/vue-options-api-demos/scheduler/auto-item-height/overview/main.vue new file mode 100644 index 00000000..0b24ab54 --- /dev/null +++ b/vue-options-api-demos/scheduler/auto-item-height/overview/main.vue @@ -0,0 +1,82 @@ + + diff --git a/vue-options-api-demos/scheduler/context/main.js b/vue-options-api-demos/scheduler/context/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/context/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/context/main.vue b/vue-options-api-demos/scheduler/context/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/context/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/custom-templates/agenda/task/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/agenda/task/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/agenda/task/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.js b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.vue b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.vue new file mode 100644 index 00000000..b6d8843c --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.vue @@ -0,0 +1,62 @@ + + + diff --git a/vue-options-api-demos/scheduler/custom-templates/events/color/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/events/color/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/color/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/custom-templates/events/color/main.js b/vue-options-api-demos/scheduler/custom-templates/events/color/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/color/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/events/color/main.vue b/vue-options-api-demos/scheduler/custom-templates/events/color/main.vue new file mode 100644 index 00000000..b7b7eb7b --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/color/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/scheduler/custom-templates/events/image/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/events/image/events-utc.js new file mode 100644 index 00000000..b7cf1630 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/image/events-utc.js @@ -0,0 +1,900 @@ +const baseData = [ + { + TaskID: 4, + OwnerID: 2, + Title: 'Bowling tournament', + Description: '', + StartTimezone: null, + Start: '2013-06-09T21:00:00.000Z', + End: '2013-06-10T00:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 5, + OwnerID: 2, + Title: 'Take the dog to the vet', + Description: '', + StartTimezone: null, + Start: '2013-06-10T07:00:00.000Z', + End: '2013-06-10T08:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 6, + OwnerID: 2, + Title: 'Call Charlie about the project', + Description: '', + StartTimezone: null, + Start: '2013-06-11T11:30:00.000Z', + End: '2013-06-11T13:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 7, + OwnerID: 3, + Title: 'Meeting with Alex', + Description: '', + StartTimezone: null, + Start: '2013-06-12T11:00:00.000Z', + End: '2013-06-12T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 9, + OwnerID: 2, + Title: "Alex's Birthday", + Description: '', + StartTimezone: null, + Start: '2013-06-14T02:00:00.000Z', + End: '2013-06-14T02:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 12, + OwnerID: 2, + Title: 'Car Service', + RoomID: 1, + Description: 'Might come to work later!', + StartTimezone: null, + Start: '2013-06-24T08:30:00.000Z', + End: '2013-06-24T10:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: + 'https://st3.depositphotos.com/1177973/12967/i/450/depositphotos_129673012-stock-photo-cubes-with-words-car-service.jpg', + }, + { + TaskID: 14, + OwnerID: 3, + RoomID: 2, + PersonID: 3, + Title: 'Replace the printer on the 1st floor', + Description: '', + StartTimezone: null, + Start: '2013-06-24T10:00:00.000Z', + End: '2013-06-24T11:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 15, + OwnerID: 1, + Title: 'Attending HR Conference', + Description: '', + StartTimezone: null, + Start: '2013-06-25T00:00:00.000Z', + End: '2013-06-26T00:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 16, + OwnerID: 1, + Title: 'Business Lunch with Gregory Watkins', + Description: '', + StartTimezone: null, + Start: '2013-06-25T12:00:00.000Z', + End: '2013-06-25T13:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 17, + OwnerID: 1, + Title: 'Breakfast with CFO and COO', + Description: '', + StartTimezone: null, + Start: '2013-06-27T08:30:00.000Z', + End: '2013-06-27T09:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 18, + OwnerID: 1, + Title: 'Job Interview - Mathew Stevens', + Description: 'Junior Researcher', + StartTimezone: null, + Start: '2013-06-27T10:00:00.000Z', + End: '2013-06-27T11:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 19, + OwnerID: 1, + Title: 'Review CVs with Tim', + Description: '', + StartTimezone: null, + Start: '2013-06-27T11:00:00.000Z', + End: '2013-06-27T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 20, + OwnerID: 1, + Title: 'Lunch with Monica', + Description: 'Discuss the Employee handbook', + StartTimezone: null, + Start: '2013-06-27T12:00:00.000Z', + End: '2013-06-27T13:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 21, + OwnerID: 1, + Title: 'Job Interview - John Stewart', + Description: 'Accountant', + StartTimezone: null, + Start: '2013-06-27T14:00:00.000Z', + End: '2013-06-27T15:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 22, + OwnerID: 1, + Title: 'Job Interview - Mary Smith', + Description: 'Accountant', + StartTimezone: null, + Start: '2013-06-27T15:30:00.000Z', + End: '2013-06-27T16:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 24, + OwnerID: 3, + Title: 'Register new Access Cards', + Description: '', + StartTimezone: null, + Start: '2013-06-24T12:00:00.000Z', + End: '2013-06-24T12:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 25, + OwnerID: 1, + Title: 'HR Lecture', + Description: '', + StartTimezone: null, + Start: '2013-06-04T19:00:00.000Z', + End: '2013-06-04T21:00:00.000Z', + EndTimezone: null, + RecurrenceRule: 'FREQ=WEEKLY;BYDAY=TU,TH', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 26, + OwnerID: 1, + Title: 'Dentist', + Description: '', + StartTimezone: null, + Start: '2013-06-28T08:00:00.000Z', + End: '2013-06-28T09:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 27, + OwnerID: 1, + Title: 'Job Interview - Laura Bailey', + Description: 'Helpdesk', + StartTimezone: null, + Start: '2013-06-28T09:30:00.000Z', + End: '2013-06-28T10:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 28, + OwnerID: 1, + Title: 'Job Interview - Jenny Baxter', + Description: 'Helpdesk', + StartTimezone: null, + Start: '2013-06-28T11:00:00.000Z', + End: '2013-06-28T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 31, + OwnerID: 1, + Title: 'Team building prep tasks', + Description: '', + StartTimezone: null, + Start: '2013-06-28T14:00:00.000Z', + End: '2013-06-28T17:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 32, + OwnerID: 2, + RoomID: 2, + Title: 'Job Interview - Bernard Atkins', + Description: 'Helpdesk', + StartTimezone: null, + Start: '2013-06-24T13:30:00.000Z', + End: '2013-06-24T14:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 34, + OwnerID: 1, + Title: 'Review Job Applications', + Description: '', + StartTimezone: null, + Start: '2013-06-24T15:00:00.000Z', + End: '2013-06-24T17:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 35, + OwnerID: 1, + Title: 'Grand Canyon tour', + Description: '', + StartTimezone: null, + Start: '2013-06-23T00:00:00.000Z', + End: '2013-06-23T00:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 40, + OwnerID: 3, + Title: 'Install new laptops in conference rooms', + Description: '', + StartTimezone: null, + Start: '2013-06-24T13:30:00.000Z', + End: '2013-06-24T15:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 66, + OwnerID: 3, + Title: "Bob's Birthday", + Description: '', + StartTimezone: null, + Start: '2013-06-29T08:00:00.000Z', + End: '2013-06-29T06:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 68, + OwnerID: 1, + RoomID: 2, + Title: 'Breakfast with Tom', + Description: 'Have to ask him about his holiday plans', + StartTimezone: null, + Start: '2013-06-24T09:45:00.000Z', + End: '2013-06-24T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: + 'https://st4.depositphotos.com/13349494/27821/i/450/depositphotos_278217016-stock-photo-top-view-tasty-breakfast-pancakes.jpg', + }, + { + TaskID: 69, + OwnerID: 2, + Title: 'Team planning meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-24T10:00:00.000Z', + End: '2013-06-24T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 70, + OwnerID: 2, + Title: 'Support Phone Call', + Description: '', + StartTimezone: null, + Start: '2013-06-24T16:00:00.000Z', + End: '2013-06-24T16:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 71, + OwnerID: 2, + Title: 'Business breakfast with Caroline', + Description: '', + StartTimezone: null, + Start: '2013-06-25T09:00:00.000Z', + End: '2013-06-25T10:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 72, + OwnerID: 2, + Title: "Discuss preojects' deadlines", + Description: '', + StartTimezone: null, + Start: '2013-06-25T11:00:00.000Z', + End: '2013-06-25T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 73, + OwnerID: 2, + Title: 'Support Meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-25T15:00:00.000Z', + End: '2013-06-25T16:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 74, + OwnerID: 2, + Title: 'Dine with Mathew', + Description: '', + StartTimezone: null, + Start: '2013-06-25T18:30:00.000Z', + End: '2013-06-25T20:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 79, + OwnerID: 2, + Title: 'Banking', + Description: '', + StartTimezone: null, + Start: '2013-06-26T09:00:00.000Z', + End: '2013-06-26T10:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 80, + OwnerID: 3, + Title: 'Software updates', + Description: '', + StartTimezone: null, + Start: '2013-06-25T10:00:00.000Z', + End: '2013-06-25T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 81, + OwnerID: 3, + Title: 'UPS maintenance', + Description: '', + StartTimezone: null, + Start: '2013-06-25T16:30:00.000Z', + End: '2013-06-25T18:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 82, + OwnerID: 2, + Title: 'Support Call', + Description: '', + StartTimezone: null, + Start: '2013-06-26T11:30:00.000Z', + End: '2013-06-26T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 83, + OwnerID: 3, + Title: 'Phone Sync with NY office ', + Description: '', + StartTimezone: null, + Start: '2013-06-26T13:30:00.000Z', + End: '2013-06-26T14:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 84, + OwnerID: 3, + Title: 'Phone Sync with Boston Office', + Description: '', + StartTimezone: null, + Start: '2013-06-26T15:00:00.000Z', + End: '2013-06-26T16:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 85, + OwnerID: 3, + Title: 'Server maintenance', + Description: '', + StartTimezone: null, + Start: '2013-06-26T18:30:00.000Z', + End: '2013-06-26T21:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 86, + OwnerID: 2, + Title: 'Status meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-28T13:30:00.000Z', + End: '2013-06-28T15:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 87, + OwnerID: 3, + Title: 'Helpdesk status meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-27T10:30:00.000Z', + End: '2013-06-27T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 88, + OwnerID: 2, + Title: 'Business Lunch', + Description: '', + StartTimezone: null, + Start: '2013-06-27T12:00:00.000Z', + End: '2013-06-27T13:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 89, + OwnerID: 3, + Title: 'Employee database update', + Description: '', + StartTimezone: null, + Start: '2013-06-27T14:00:00.000Z', + End: '2013-06-27T15:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 90, + OwnerID: 3, + Title: 'Website upload', + Description: '', + StartTimezone: null, + Start: '2013-06-27T07:30:00.000Z', + End: '2013-06-27T08:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 91, + OwnerID: 2, + Title: 'Meeting with marketing guys', + Description: '', + StartTimezone: null, + Start: '2013-06-27T17:00:00.000Z', + End: '2013-06-27T18:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 92, + OwnerID: 3, + Title: 'Meeting with Internet provider', + Description: '', + StartTimezone: null, + Start: '2013-06-28T10:30:00.000Z', + End: '2013-06-28T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 93, + OwnerID: 3, + Title: "Bob's Birthday Party", + Description: '', + StartTimezone: null, + Start: '2013-06-29T20:00:00.000Z', + End: '2013-06-29T23:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 95, + OwnerID: 2, + Title: 'Dance Practice', + Description: '', + StartTimezone: null, + Start: '2013-06-03T18:30:00.000Z', + End: '2013-06-03T20:00:00.000Z', + EndTimezone: null, + RecurrenceRule: 'FREQ=WEEKLY;BYDAY=MO,WE', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 114, + OwnerID: 3, + Title: 'Software updates', + Description: '', + StartTimezone: null, + Start: '2013-06-04T09:00:00.000Z', + End: '2013-06-04T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 115, + OwnerID: 1, + Title: 'Breakfast at Starbucks', + Description: '', + StartTimezone: null, + Start: '2013-06-04T08:00:00.000Z', + End: '2013-06-04T09:30:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 116, + OwnerID: 2, + Title: 'Performance review', + Description: '', + StartTimezone: null, + Start: '2013-06-04T14:00:00.000Z', + End: '2013-06-04T17:00:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 118, + OwnerID: 1, + Title: 'HR seminar preparation', + Description: '', + StartTimezone: null, + Start: '2013-06-05T10:00:00.000Z', + End: '2013-06-05T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 119, + OwnerID: 3, + Title: 'Helpdesk weekly meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-05T15:00:00.000Z', + End: '2013-06-05T16:00:00.000Z', + EndTimezone: null, + RecurrenceRule: 'FREQ=WEEKLY;BYDAY=WE', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 120, + OwnerID: 3, + Title: 'Website upload', + Description: '', + StartTimezone: null, + Start: '2013-06-07T07:00:00.000Z', + End: '2013-06-07T08:30:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException', +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => + Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map((dataItem) => ({ + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + image: dataItem.image, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID, +})); + +export const sampleDataWithResources = baseData.map((dataItem) => ({ + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2), +})); + +export const sampleDataWithCustomSchema = baseData.map((dataItem) => ({ + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2), +})); diff --git a/vue-options-api-demos/scheduler/custom-templates/events/image/main.js b/vue-options-api-demos/scheduler/custom-templates/events/image/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/image/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/events/image/main.vue b/vue-options-api-demos/scheduler/custom-templates/events/image/main.vue new file mode 100644 index 00000000..a7ffc02f --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/image/main.vue @@ -0,0 +1,51 @@ + + diff --git a/vue-options-api-demos/scheduler/custom-templates/events/resources/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/events/resources/events-utc.js new file mode 100644 index 00000000..b7cf1630 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/resources/events-utc.js @@ -0,0 +1,900 @@ +const baseData = [ + { + TaskID: 4, + OwnerID: 2, + Title: 'Bowling tournament', + Description: '', + StartTimezone: null, + Start: '2013-06-09T21:00:00.000Z', + End: '2013-06-10T00:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 5, + OwnerID: 2, + Title: 'Take the dog to the vet', + Description: '', + StartTimezone: null, + Start: '2013-06-10T07:00:00.000Z', + End: '2013-06-10T08:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 6, + OwnerID: 2, + Title: 'Call Charlie about the project', + Description: '', + StartTimezone: null, + Start: '2013-06-11T11:30:00.000Z', + End: '2013-06-11T13:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 7, + OwnerID: 3, + Title: 'Meeting with Alex', + Description: '', + StartTimezone: null, + Start: '2013-06-12T11:00:00.000Z', + End: '2013-06-12T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 9, + OwnerID: 2, + Title: "Alex's Birthday", + Description: '', + StartTimezone: null, + Start: '2013-06-14T02:00:00.000Z', + End: '2013-06-14T02:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 12, + OwnerID: 2, + Title: 'Car Service', + RoomID: 1, + Description: 'Might come to work later!', + StartTimezone: null, + Start: '2013-06-24T08:30:00.000Z', + End: '2013-06-24T10:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: + 'https://st3.depositphotos.com/1177973/12967/i/450/depositphotos_129673012-stock-photo-cubes-with-words-car-service.jpg', + }, + { + TaskID: 14, + OwnerID: 3, + RoomID: 2, + PersonID: 3, + Title: 'Replace the printer on the 1st floor', + Description: '', + StartTimezone: null, + Start: '2013-06-24T10:00:00.000Z', + End: '2013-06-24T11:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 15, + OwnerID: 1, + Title: 'Attending HR Conference', + Description: '', + StartTimezone: null, + Start: '2013-06-25T00:00:00.000Z', + End: '2013-06-26T00:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 16, + OwnerID: 1, + Title: 'Business Lunch with Gregory Watkins', + Description: '', + StartTimezone: null, + Start: '2013-06-25T12:00:00.000Z', + End: '2013-06-25T13:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 17, + OwnerID: 1, + Title: 'Breakfast with CFO and COO', + Description: '', + StartTimezone: null, + Start: '2013-06-27T08:30:00.000Z', + End: '2013-06-27T09:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 18, + OwnerID: 1, + Title: 'Job Interview - Mathew Stevens', + Description: 'Junior Researcher', + StartTimezone: null, + Start: '2013-06-27T10:00:00.000Z', + End: '2013-06-27T11:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 19, + OwnerID: 1, + Title: 'Review CVs with Tim', + Description: '', + StartTimezone: null, + Start: '2013-06-27T11:00:00.000Z', + End: '2013-06-27T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 20, + OwnerID: 1, + Title: 'Lunch with Monica', + Description: 'Discuss the Employee handbook', + StartTimezone: null, + Start: '2013-06-27T12:00:00.000Z', + End: '2013-06-27T13:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 21, + OwnerID: 1, + Title: 'Job Interview - John Stewart', + Description: 'Accountant', + StartTimezone: null, + Start: '2013-06-27T14:00:00.000Z', + End: '2013-06-27T15:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 22, + OwnerID: 1, + Title: 'Job Interview - Mary Smith', + Description: 'Accountant', + StartTimezone: null, + Start: '2013-06-27T15:30:00.000Z', + End: '2013-06-27T16:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 24, + OwnerID: 3, + Title: 'Register new Access Cards', + Description: '', + StartTimezone: null, + Start: '2013-06-24T12:00:00.000Z', + End: '2013-06-24T12:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 25, + OwnerID: 1, + Title: 'HR Lecture', + Description: '', + StartTimezone: null, + Start: '2013-06-04T19:00:00.000Z', + End: '2013-06-04T21:00:00.000Z', + EndTimezone: null, + RecurrenceRule: 'FREQ=WEEKLY;BYDAY=TU,TH', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 26, + OwnerID: 1, + Title: 'Dentist', + Description: '', + StartTimezone: null, + Start: '2013-06-28T08:00:00.000Z', + End: '2013-06-28T09:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 27, + OwnerID: 1, + Title: 'Job Interview - Laura Bailey', + Description: 'Helpdesk', + StartTimezone: null, + Start: '2013-06-28T09:30:00.000Z', + End: '2013-06-28T10:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 28, + OwnerID: 1, + Title: 'Job Interview - Jenny Baxter', + Description: 'Helpdesk', + StartTimezone: null, + Start: '2013-06-28T11:00:00.000Z', + End: '2013-06-28T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 31, + OwnerID: 1, + Title: 'Team building prep tasks', + Description: '', + StartTimezone: null, + Start: '2013-06-28T14:00:00.000Z', + End: '2013-06-28T17:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 32, + OwnerID: 2, + RoomID: 2, + Title: 'Job Interview - Bernard Atkins', + Description: 'Helpdesk', + StartTimezone: null, + Start: '2013-06-24T13:30:00.000Z', + End: '2013-06-24T14:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 34, + OwnerID: 1, + Title: 'Review Job Applications', + Description: '', + StartTimezone: null, + Start: '2013-06-24T15:00:00.000Z', + End: '2013-06-24T17:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 35, + OwnerID: 1, + Title: 'Grand Canyon tour', + Description: '', + StartTimezone: null, + Start: '2013-06-23T00:00:00.000Z', + End: '2013-06-23T00:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 40, + OwnerID: 3, + Title: 'Install new laptops in conference rooms', + Description: '', + StartTimezone: null, + Start: '2013-06-24T13:30:00.000Z', + End: '2013-06-24T15:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 66, + OwnerID: 3, + Title: "Bob's Birthday", + Description: '', + StartTimezone: null, + Start: '2013-06-29T08:00:00.000Z', + End: '2013-06-29T06:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 68, + OwnerID: 1, + RoomID: 2, + Title: 'Breakfast with Tom', + Description: 'Have to ask him about his holiday plans', + StartTimezone: null, + Start: '2013-06-24T09:45:00.000Z', + End: '2013-06-24T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: + 'https://st4.depositphotos.com/13349494/27821/i/450/depositphotos_278217016-stock-photo-top-view-tasty-breakfast-pancakes.jpg', + }, + { + TaskID: 69, + OwnerID: 2, + Title: 'Team planning meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-24T10:00:00.000Z', + End: '2013-06-24T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 70, + OwnerID: 2, + Title: 'Support Phone Call', + Description: '', + StartTimezone: null, + Start: '2013-06-24T16:00:00.000Z', + End: '2013-06-24T16:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 71, + OwnerID: 2, + Title: 'Business breakfast with Caroline', + Description: '', + StartTimezone: null, + Start: '2013-06-25T09:00:00.000Z', + End: '2013-06-25T10:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 72, + OwnerID: 2, + Title: "Discuss preojects' deadlines", + Description: '', + StartTimezone: null, + Start: '2013-06-25T11:00:00.000Z', + End: '2013-06-25T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 73, + OwnerID: 2, + Title: 'Support Meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-25T15:00:00.000Z', + End: '2013-06-25T16:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 74, + OwnerID: 2, + Title: 'Dine with Mathew', + Description: '', + StartTimezone: null, + Start: '2013-06-25T18:30:00.000Z', + End: '2013-06-25T20:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 79, + OwnerID: 2, + Title: 'Banking', + Description: '', + StartTimezone: null, + Start: '2013-06-26T09:00:00.000Z', + End: '2013-06-26T10:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 80, + OwnerID: 3, + Title: 'Software updates', + Description: '', + StartTimezone: null, + Start: '2013-06-25T10:00:00.000Z', + End: '2013-06-25T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 81, + OwnerID: 3, + Title: 'UPS maintenance', + Description: '', + StartTimezone: null, + Start: '2013-06-25T16:30:00.000Z', + End: '2013-06-25T18:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 82, + OwnerID: 2, + Title: 'Support Call', + Description: '', + StartTimezone: null, + Start: '2013-06-26T11:30:00.000Z', + End: '2013-06-26T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 83, + OwnerID: 3, + Title: 'Phone Sync with NY office ', + Description: '', + StartTimezone: null, + Start: '2013-06-26T13:30:00.000Z', + End: '2013-06-26T14:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 84, + OwnerID: 3, + Title: 'Phone Sync with Boston Office', + Description: '', + StartTimezone: null, + Start: '2013-06-26T15:00:00.000Z', + End: '2013-06-26T16:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 85, + OwnerID: 3, + Title: 'Server maintenance', + Description: '', + StartTimezone: null, + Start: '2013-06-26T18:30:00.000Z', + End: '2013-06-26T21:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: true, + image: null, + }, + { + TaskID: 86, + OwnerID: 2, + Title: 'Status meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-28T13:30:00.000Z', + End: '2013-06-28T15:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 87, + OwnerID: 3, + Title: 'Helpdesk status meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-27T10:30:00.000Z', + End: '2013-06-27T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 88, + OwnerID: 2, + Title: 'Business Lunch', + Description: '', + StartTimezone: null, + Start: '2013-06-27T12:00:00.000Z', + End: '2013-06-27T13:00:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 89, + OwnerID: 3, + Title: 'Employee database update', + Description: '', + StartTimezone: null, + Start: '2013-06-27T14:00:00.000Z', + End: '2013-06-27T15:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 90, + OwnerID: 3, + Title: 'Website upload', + Description: '', + StartTimezone: null, + Start: '2013-06-27T07:30:00.000Z', + End: '2013-06-27T08:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 91, + OwnerID: 2, + Title: 'Meeting with marketing guys', + Description: '', + StartTimezone: null, + Start: '2013-06-27T17:00:00.000Z', + End: '2013-06-27T18:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 92, + OwnerID: 3, + Title: 'Meeting with Internet provider', + Description: '', + StartTimezone: null, + Start: '2013-06-28T10:30:00.000Z', + End: '2013-06-28T11:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 93, + OwnerID: 3, + Title: "Bob's Birthday Party", + Description: '', + StartTimezone: null, + Start: '2013-06-29T20:00:00.000Z', + End: '2013-06-29T23:30:00.000Z', + EndTimezone: null, + RecurrenceRule: null, + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 95, + OwnerID: 2, + Title: 'Dance Practice', + Description: '', + StartTimezone: null, + Start: '2013-06-03T18:30:00.000Z', + End: '2013-06-03T20:00:00.000Z', + EndTimezone: null, + RecurrenceRule: 'FREQ=WEEKLY;BYDAY=MO,WE', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 114, + OwnerID: 3, + Title: 'Software updates', + Description: '', + StartTimezone: null, + Start: '2013-06-04T09:00:00.000Z', + End: '2013-06-04T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 115, + OwnerID: 1, + Title: 'Breakfast at Starbucks', + Description: '', + StartTimezone: null, + Start: '2013-06-04T08:00:00.000Z', + End: '2013-06-04T09:30:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 116, + OwnerID: 2, + Title: 'Performance review', + Description: '', + StartTimezone: null, + Start: '2013-06-04T14:00:00.000Z', + End: '2013-06-04T17:00:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 118, + OwnerID: 1, + Title: 'HR seminar preparation', + Description: '', + StartTimezone: null, + Start: '2013-06-05T10:00:00.000Z', + End: '2013-06-05T12:00:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 119, + OwnerID: 3, + Title: 'Helpdesk weekly meeting', + Description: '', + StartTimezone: null, + Start: '2013-06-05T15:00:00.000Z', + End: '2013-06-05T16:00:00.000Z', + EndTimezone: null, + RecurrenceRule: 'FREQ=WEEKLY;BYDAY=WE', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, + { + TaskID: 120, + OwnerID: 3, + Title: 'Website upload', + Description: '', + StartTimezone: null, + Start: '2013-06-07T07:00:00.000Z', + End: '2013-06-07T08:30:00.000Z', + EndTimezone: null, + RecurrenceRule: '', + RecurrenceID: null, + RecurrenceException: null, + isAllDay: false, + image: null, + }, +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException', +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => + Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map((dataItem) => ({ + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + image: dataItem.image, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID, +})); + +export const sampleDataWithResources = baseData.map((dataItem) => ({ + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2), +})); + +export const sampleDataWithCustomSchema = baseData.map((dataItem) => ({ + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2), +})); diff --git a/vue-options-api-demos/scheduler/custom-templates/events/resources/main.js b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/events/resources/main.vue b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.vue new file mode 100644 index 00000000..c681a67a --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.vue @@ -0,0 +1,107 @@ + + diff --git a/vue-options-api-demos/scheduler/custom-templates/header-footer/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/header-footer/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/header-footer/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/custom-templates/header-footer/main.js b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/header-footer/main.vue b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.vue new file mode 100644 index 00000000..823f6f5f --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.vue @@ -0,0 +1,145 @@ + + diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/color/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/slots/color/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/color/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/color/main.js b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/color/main.vue b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.vue new file mode 100644 index 00000000..9fb2175e --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.vue @@ -0,0 +1,55 @@ + + diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/month/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/slots/month/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/month/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/month/main.js b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/month/main.vue b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.vue new file mode 100644 index 00000000..46c2c7e5 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.vue @@ -0,0 +1,52 @@ + + diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/time/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/slots/time/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/time/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/time/main.js b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/time/main.vue b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.vue new file mode 100644 index 00000000..057824ab --- /dev/null +++ b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.vue @@ -0,0 +1,52 @@ + + diff --git a/vue-options-api-demos/scheduler/customization/.DS_Store b/vue-options-api-demos/scheduler/customization/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f9485af88a1e7a5f87225326bfe713effb697d28 GIT binary patch literal 6148 zcmeH~F$w}f3`G;&La^D=avBfd4F=H@>;)`D8(l%rdXDZ-CJ2t!BJu;tpJXO1`-+{7 zi0JyZUy1Z0GJ~7S(n4d3ypw}m4M3`}dgXhH(h?7~0-B+w9;*1Wg-e+&OK|2Hj6Nq_|Y zjDU8VVY9|d#ohY$dRE^>)z$?L_2URHKLJSWDqg_du%B!J&7q|#Dlq;CI0gn1_$q-1 D^rsTX literal 0 HcmV?d00001 diff --git a/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.js b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.vue b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.js b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.vue b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.js b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.vue b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/customization/form/custom-components/main.js b/vue-options-api-demos/scheduler/customization/form/custom-components/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/form/custom-components/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/customization/form/custom-components/main.vue b/vue-options-api-demos/scheduler/customization/form/custom-components/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/form/custom-components/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/customization/form/default-rendering/main.js b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/customization/form/default-rendering/main.vue b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/data-binding/data-change/main.js b/vue-options-api-demos/scheduler/data-binding/data-change/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-binding/data-change/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-binding/data-change/main.vue b/vue-options-api-demos/scheduler/data-binding/data-change/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-binding/data-change/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/data-binding/data/main.js b/vue-options-api-demos/scheduler/data-binding/data/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-binding/data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-binding/data/main.vue b/vue-options-api-demos/scheduler/data-binding/data/main.vue new file mode 100644 index 00000000..84bbaf14 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-binding/data/main.vue @@ -0,0 +1,40 @@ + + diff --git a/vue-options-api-demos/scheduler/data-binding/model-fields/main.js b/vue-options-api-demos/scheduler/data-binding/model-fields/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-binding/model-fields/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-binding/model-fields/main.vue b/vue-options-api-demos/scheduler/data-binding/model-fields/main.vue new file mode 100644 index 00000000..0dce60a6 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-binding/model-fields/main.vue @@ -0,0 +1,52 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/basic/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/basic/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/basic/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/editing/basic/main.js b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/editing/basic/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.vue new file mode 100644 index 00000000..4db6cf21 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.vue @@ -0,0 +1,62 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/CustomEditForm.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/CustomEditForm.vue new file mode 100644 index 00000000..f90dbdf4 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/CustomEditForm.vue @@ -0,0 +1,116 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormDateTimePicker.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormDateTimePicker.vue new file mode 100644 index 00000000..be5eacb0 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormDateTimePicker.vue @@ -0,0 +1,78 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormInput.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormInput.vue new file mode 100644 index 00000000..70d42e2e --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormInput.vue @@ -0,0 +1,89 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormSwitch.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormSwitch.vue new file mode 100644 index 00000000..35203db3 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormSwitch.vue @@ -0,0 +1,102 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormTextArea.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormTextArea.vue new file mode 100644 index 00000000..014b7e68 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormTextArea.vue @@ -0,0 +1,84 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.js b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.vue new file mode 100644 index 00000000..6f8a1d28 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/CustomEditForm.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/CustomEditForm.vue new file mode 100644 index 00000000..52e99f73 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/CustomEditForm.vue @@ -0,0 +1,63 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormInput.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormInput.vue new file mode 100644 index 00000000..70d42e2e --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormInput.vue @@ -0,0 +1,89 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormSwitch.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormSwitch.vue new file mode 100644 index 00000000..35203db3 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormSwitch.vue @@ -0,0 +1,102 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.js b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.vue new file mode 100644 index 00000000..6f8a1d28 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.vue @@ -0,0 +1,67 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/default-values/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/default-values/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/default-values/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.js b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.vue new file mode 100644 index 00000000..812cf366 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.vue @@ -0,0 +1,117 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/CustomEditForm.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/CustomEditForm.vue new file mode 100644 index 00000000..f90dbdf4 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/CustomEditForm.vue @@ -0,0 +1,116 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormDateTimePicker.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormDateTimePicker.vue new file mode 100644 index 00000000..be5eacb0 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormDateTimePicker.vue @@ -0,0 +1,78 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormInput.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormInput.vue new file mode 100644 index 00000000..70d42e2e --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormInput.vue @@ -0,0 +1,89 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormSwitch.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormSwitch.vue new file mode 100644 index 00000000..35203db3 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormSwitch.vue @@ -0,0 +1,102 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormTextArea.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormTextArea.vue new file mode 100644 index 00000000..014b7e68 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormTextArea.vue @@ -0,0 +1,84 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.vue new file mode 100644 index 00000000..71070346 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.vue @@ -0,0 +1,76 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.vue new file mode 100644 index 00000000..6ed6e9f9 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.vue @@ -0,0 +1,116 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/configuration/data.js b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/data.js new file mode 100644 index 00000000..22792d6b --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/data.js @@ -0,0 +1,32 @@ +export const defaultDate = new Date("2011-06-09T00:00:00.000Z"); +export const data = [ + { + id: 0, + title: 'Room 1, Person 1', + start: new Date("2011-06-09T09:00:00.000Z"), + end: new Date("2011-06-09T11:00:00.000Z"), + roomId: 1, + personId: 1 + }, { + id: 1, + title: 'Room 1, Person 2', + start: new Date("2011-06-09T09:00:00.000Z"), + end: new Date("2011-06-09T11:00:00.000Z"), + roomId: 1, + personId: 2 + }, { + id: 2, + title: 'Room 2, Person 1', + start: new Date("2011-06-09T09:00:00.000Z"), + end: new Date("2011-06-09T11:00:00.000Z"), + roomId: 2, + personId: 1 + }, { + id: 3, + title: 'Room 2, Person 2', + start: new Date("2011-06-09T09:00:00.000Z"), + end: new Date("2011-06-09T11:00:00.000Z"), + roomId: 2, + personId: 2 + } +]; diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.js b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.vue b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.vue new file mode 100644 index 00000000..77f0041a --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/multiple/data.js b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/data.js new file mode 100644 index 00000000..5d0f8184 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/data.js @@ -0,0 +1,18 @@ +export const defaultDate = new Date("2011-06-09T00:00:00.000Z"); +export const data = [ + { + id: 0, + title: 'Team meeting', + start: new Date("2011-06-09T09:00:00.000Z"), + end: new Date("2011-06-09T11:00:00.000Z"), + roomId: 1, + personIds: [ 1, 2 ] + }, { + id: 1, + title: 'Peter Acceleration Program', + start: new Date("2011-06-09T11:30:00.000Z"), + end: new Date("2011-06-09T13:00:00.000Z"), + roomId: 2, + personIds: [ 1 ] + } +]; diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.js b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.vue b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.vue new file mode 100644 index 00000000..54417b9b --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.vue @@ -0,0 +1,59 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/resources/multiple/events-utc.js b/vue-options-api-demos/scheduler/data-operations/resources/multiple/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/resources/multiple/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.js b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.vue b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.vue new file mode 100644 index 00000000..da03ca8b --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.vue @@ -0,0 +1,58 @@ + + diff --git a/vue-options-api-demos/scheduler/data-operations/resources/visual/events-utc.js b/vue-options-api-demos/scheduler/data-operations/resources/visual/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/resources/visual/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/data-operations/resources/visual/main.js b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/data-operations/resources/visual/main.vue b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.vue new file mode 100644 index 00000000..07194cbd --- /dev/null +++ b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/scheduler/date-selection/controlled/main.js b/vue-options-api-demos/scheduler/date-selection/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/date-selection/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/date-selection/controlled/main.vue b/vue-options-api-demos/scheduler/date-selection/controlled/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/date-selection/controlled/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.js b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.vue b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/globalization/overview/es.json b/vue-options-api-demos/scheduler/globalization/overview/es.json new file mode 100644 index 00000000..83769a7d --- /dev/null +++ b/vue-options-api-demos/scheduler/globalization/overview/es.json @@ -0,0 +1,19 @@ +{ + "scheduler": { + "today": "Hoy", + "allDay": "todo el dia", + "showWorkDay": "Mostrar horas laborables", + "showFullDay": "Mostrar día completo", + "dayViewTitle": "Día", + "weekViewTitle": "Semana", + "monthViewTitle": "Mes", + "editorValidationRequired": "Field is required.", + "editorValidationStart": "Start time must be be before End time.", + "editorValidationEnd": "End time must be after Start time.", + "workWeekViewTitle": "Semana laboral", + "agendaViewTitle": "Agenda", + "previousTitle": "Previous", + "nextTitle": "Next" + } + } + \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/globalization/overview/events-utc.js b/vue-options-api-demos/scheduler/globalization/overview/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/globalization/overview/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/globalization/overview/main.js b/vue-options-api-demos/scheduler/globalization/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/globalization/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/globalization/overview/main.vue b/vue-options-api-demos/scheduler/globalization/overview/main.vue new file mode 100644 index 00000000..bd747f54 --- /dev/null +++ b/vue-options-api-demos/scheduler/globalization/overview/main.vue @@ -0,0 +1,92 @@ + + diff --git a/vue-options-api-demos/scheduler/globalization/rtl/events-utc.js b/vue-options-api-demos/scheduler/globalization/rtl/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/globalization/rtl/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/globalization/rtl/main.js b/vue-options-api-demos/scheduler/globalization/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/globalization/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/globalization/rtl/main.vue b/vue-options-api-demos/scheduler/globalization/rtl/main.vue new file mode 100644 index 00000000..47dd3f35 --- /dev/null +++ b/vue-options-api-demos/scheduler/globalization/rtl/main.vue @@ -0,0 +1,32 @@ + + diff --git a/vue-options-api-demos/scheduler/header-footer/customization/main.js b/vue-options-api-demos/scheduler/header-footer/customization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/header-footer/customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/header-footer/customization/main.vue b/vue-options-api-demos/scheduler/header-footer/customization/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/header-footer/customization/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/context/action-binding/main.js b/vue-options-api-demos/scheduler/items/context/action-binding/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/context/action-binding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/context/action-binding/main.vue b/vue-options-api-demos/scheduler/items/context/action-binding/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/context/action-binding/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.js b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.vue b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/edit-item/extending/main.js b/vue-options-api-demos/scheduler/items/edit-item/extending/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/edit-item/extending/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/edit-item/extending/main.vue b/vue-options-api-demos/scheduler/items/edit-item/extending/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/edit-item/extending/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/item/callbacks/main.js b/vue-options-api-demos/scheduler/items/item/callbacks/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/item/callbacks/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/item/callbacks/main.vue b/vue-options-api-demos/scheduler/items/item/callbacks/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/item/callbacks/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/item/children/main.js b/vue-options-api-demos/scheduler/items/item/children/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/item/children/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/item/children/main.vue b/vue-options-api-demos/scheduler/items/item/children/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/item/children/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/item/style/main.js b/vue-options-api-demos/scheduler/items/item/style/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/item/style/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/item/style/main.vue b/vue-options-api-demos/scheduler/items/item/style/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/item/style/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.js b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.vue b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.js b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.vue b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.js b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.vue b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/items/overview/events-utc.js b/vue-options-api-demos/scheduler/items/overview/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/overview/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/items/overview/main.js b/vue-options-api-demos/scheduler/items/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/overview/main.vue b/vue-options-api-demos/scheduler/items/overview/main.vue new file mode 100644 index 00000000..d74b554a --- /dev/null +++ b/vue-options-api-demos/scheduler/items/overview/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/scheduler/items/view-item/extending/main.js b/vue-options-api-demos/scheduler/items/view-item/extending/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/items/view-item/extending/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/items/view-item/extending/main.vue b/vue-options-api-demos/scheduler/items/view-item/extending/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/items/view-item/extending/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/keyboard-navigation/basic/events-utc.js b/vue-options-api-demos/scheduler/keyboard-navigation/basic/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/keyboard-navigation/basic/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.js b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.vue b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.vue new file mode 100644 index 00000000..0cde56e0 --- /dev/null +++ b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.vue @@ -0,0 +1,107 @@ + + diff --git a/vue-options-api-demos/scheduler/overview/basic/events-utc.js b/vue-options-api-demos/scheduler/overview/basic/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/overview/basic/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/overview/basic/main.js b/vue-options-api-demos/scheduler/overview/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/overview/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/overview/basic/main.vue b/vue-options-api-demos/scheduler/overview/basic/main.vue new file mode 100644 index 00000000..ee8ce98c --- /dev/null +++ b/vue-options-api-demos/scheduler/overview/basic/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/scheduler/overview/demo/es.json b/vue-options-api-demos/scheduler/overview/demo/es.json new file mode 100644 index 00000000..c4c120d6 --- /dev/null +++ b/vue-options-api-demos/scheduler/overview/demo/es.json @@ -0,0 +1,13 @@ +{ + "scheduler": { + "today": "Hoy", + "allDay": "todo el dia", + "showWorkDay": "Mostrar horas laborables", + "showFullDay": "Mostrar día completo", + "agendaViewTitle": "Agenda", + "dayViewTitle": "Día", + "weekViewTitle": "Semana", + "workWeekViewTitle": "Semana laboral", + "monthViewTitle": "Mes" + } +} \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/overview/demo/events-utc.js b/vue-options-api-demos/scheduler/overview/demo/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/overview/demo/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/overview/demo/main.js b/vue-options-api-demos/scheduler/overview/demo/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/overview/demo/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/overview/demo/main.vue b/vue-options-api-demos/scheduler/overview/demo/main.vue new file mode 100644 index 00000000..291a8727 --- /dev/null +++ b/vue-options-api-demos/scheduler/overview/demo/main.vue @@ -0,0 +1,126 @@ + + diff --git a/vue-options-api-demos/scheduler/recurring/overview/id/main.js b/vue-options-api-demos/scheduler/recurring/overview/id/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/recurring/overview/id/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/recurring/overview/id/main.vue b/vue-options-api-demos/scheduler/recurring/overview/id/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/recurring/overview/id/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/recurring/overview/id/server-data.js b/vue-options-api-demos/scheduler/recurring/overview/id/server-data.js new file mode 100644 index 00000000..0379f9c0 --- /dev/null +++ b/vue-options-api-demos/scheduler/recurring/overview/id/server-data.js @@ -0,0 +1,51 @@ +export const serverData = [ + // The original event, which will be used for editing + { + id: 24, + title: 'Breakfast with Tom', + start: new Date("2019-09-02T08:30:00.000Z"), + end: new Date("2019-09-02T09:00:00.000Z"), + recurrenceRule: "FREQ=DAILY" + }, + // The multiple occurrences, relating to the original event trough the `recurrenceId` field. + { + id: 1, + title: 'Breakfast with Tom', + start: new Date("2019-09-02T08:30:00.000Z"), + end: new Date("2019-09-02T09:00:00.000Z"), + recurrenceId: 24, + recurrenceRule: "FREQ=DAILY" + }, + { + id: 2, + title: 'Breakfast with Tom', + start: new Date("2019-09-03T08:30:00.000Z"), + end: new Date("2019-09-03T09:00:00.000Z"), + recurrenceId: 24, + recurrenceRule: "FREQ=DAILY" + }, + { + id: 3, + title: 'Breakfast with Tom', + start: new Date("2019-09-04T08:30:00.000Z"), + end: new Date("2019-09-04T09:00:00.000Z"), + recurrenceId: 24, + recurrenceRule: "FREQ=DAILY" + }, + { + id: 4, + title: 'Breakfast with Tom', + start: new Date("2019-09-05T08:30:00.000Z"), + end: new Date("2019-09-05T09:00:00.000Z"), + recurrenceId: 24, + recurrenceRule: "FREQ=DAILY" + }, + { + id: 5, + title: 'Breakfast with Tom', + start: new Date("2019-09-06T08:30:00.000Z"), + end: new Date("2019-09-06T09:00:00.000Z"), + recurrenceId: 24, + recurrenceRule: "FREQ=DAILY" + } +]; diff --git a/vue-options-api-demos/scheduler/recurring/overview/overview/data.js b/vue-options-api-demos/scheduler/recurring/overview/overview/data.js new file mode 100644 index 00000000..e9907db3 --- /dev/null +++ b/vue-options-api-demos/scheduler/recurring/overview/overview/data.js @@ -0,0 +1,35 @@ +export const displayDate = new Date('2019-09-04T08:00:00.000Z') + +export const data = [ + { + id: 0, + title: 'Breakfast at home', + start: new Date("2019-09-02T07:30:00.000Z"), + end: new Date("2019-09-02T08:30:00.000Z"), + recurrenceRule: "FREQ=DAILY;BYDAY=TU,TH", + recurrenceExceptions: [new Date("2019-09-25T07:30:00.000Z"),new Date("2019-09-26T07:30:00.000Z")] + }, + { + id: 1, + title: 'Breakfast at the office', + start: new Date("2019-09-02T08:30:00.000Z"), + end: new Date("2019-09-02T09:00:00.000Z"), + recurrenceRule: "FREQ=DAILY;BYDAY=MO,WE,FR", + recurrenceExceptions: [new Date("2019-09-25T08:30:00.000Z"),new Date("2019-09-26T08:30:00.000Z")] + }, + { + id: 2, + title: 'Team Lunch', + start: new Date("2019-09-02T12:00:00.000Z"), + end: new Date("2019-09-02T13:00:00.000Z"), + recurrenceRule: "FREQ=WEEKLY;BYDAY=WE", + recurrenceExceptions: [new Date("2019-09-25T12:00:00.000Z"),new Date("2019-09-26T12:00:00.000Z")] + }, + { + id: 3, + title: 'Vacation', + start: new Date("2019-09-25T12:00:00.000Z"), + end: new Date("2019-09-26T12:00:00.000Z"), + isAllDay: true + } +] diff --git a/vue-options-api-demos/scheduler/recurring/overview/overview/main.js b/vue-options-api-demos/scheduler/recurring/overview/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/recurring/overview/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/recurring/overview/overview/main.vue b/vue-options-api-demos/scheduler/recurring/overview/overview/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/recurring/overview/overview/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/shared/events-utc.js b/vue-options-api-demos/scheduler/shared/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/shared/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/slots/context/action-binding/main.js b/vue-options-api-demos/scheduler/slots/context/action-binding/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/context/action-binding/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/slots/context/action-binding/main.vue b/vue-options-api-demos/scheduler/slots/context/action-binding/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/context/action-binding/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.js b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.vue b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/slots/overview/main.js b/vue-options-api-demos/scheduler/slots/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/slots/overview/main.vue b/vue-options-api-demos/scheduler/slots/overview/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/overview/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/slots/slot/style/main.js b/vue-options-api-demos/scheduler/slots/slot/style/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/slot/style/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/slots/slot/style/main.vue b/vue-options-api-demos/scheduler/slots/slot/style/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/slot/style/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/slots/view-slot/extending/main.js b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/slots/view-slot/extending/main.vue b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/tasks/overview/main.js b/vue-options-api-demos/scheduler/tasks/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/tasks/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/tasks/overview/main.vue b/vue-options-api-demos/scheduler/tasks/overview/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/tasks/overview/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/timezones/default/main.js b/vue-options-api-demos/scheduler/timezones/default/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/timezones/default/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/timezones/default/main.vue b/vue-options-api-demos/scheduler/timezones/default/main.vue new file mode 100644 index 00000000..6776c910 --- /dev/null +++ b/vue-options-api-demos/scheduler/timezones/default/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/scheduler/timezones/fixed/main.js b/vue-options-api-demos/scheduler/timezones/fixed/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/timezones/fixed/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/timezones/fixed/main.vue b/vue-options-api-demos/scheduler/timezones/fixed/main.vue new file mode 100644 index 00000000..696f1608 --- /dev/null +++ b/vue-options-api-demos/scheduler/timezones/fixed/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/scheduler/views/agenda/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/agenda/configuration/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/agenda/configuration/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/agenda/configuration/main.js b/vue-options-api-demos/scheduler/views/agenda/configuration/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/agenda/configuration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/agenda/configuration/main.vue b/vue-options-api-demos/scheduler/views/agenda/configuration/main.vue new file mode 100644 index 00000000..37a794d8 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/agenda/configuration/main.vue @@ -0,0 +1,33 @@ + + diff --git a/vue-options-api-demos/scheduler/views/agenda/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/agenda/grouping/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/agenda/grouping/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/agenda/grouping/main.js b/vue-options-api-demos/scheduler/views/agenda/grouping/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/agenda/grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/agenda/grouping/main.vue b/vue-options-api-demos/scheduler/views/agenda/grouping/main.vue new file mode 100644 index 00000000..677f332e --- /dev/null +++ b/vue-options-api-demos/scheduler/views/agenda/grouping/main.vue @@ -0,0 +1,64 @@ + + diff --git a/vue-options-api-demos/scheduler/views/controlled-state/events-utc.js b/vue-options-api-demos/scheduler/views/controlled-state/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/controlled-state/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/controlled-state/main.js b/vue-options-api-demos/scheduler/views/controlled-state/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/controlled-state/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/controlled-state/main.vue b/vue-options-api-demos/scheduler/views/controlled-state/main.vue new file mode 100644 index 00000000..30025fc4 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/controlled-state/main.vue @@ -0,0 +1,56 @@ + + diff --git a/vue-options-api-demos/scheduler/views/day/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/day/configuration/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/configuration/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/day/configuration/main.js b/vue-options-api-demos/scheduler/views/day/configuration/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/configuration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/day/configuration/main.vue b/vue-options-api-demos/scheduler/views/day/configuration/main.vue new file mode 100644 index 00000000..2ecad635 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/configuration/main.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/scheduler/views/day/current-time/main.js b/vue-options-api-demos/scheduler/views/day/current-time/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/current-time/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/day/current-time/main.vue b/vue-options-api-demos/scheduler/views/day/current-time/main.vue new file mode 100644 index 00000000..fd50dd1b --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/current-time/main.vue @@ -0,0 +1,68 @@ + + diff --git a/vue-options-api-demos/scheduler/views/day/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/day/grouping-vertical/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/grouping-vertical/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.vue new file mode 100644 index 00000000..d6094c35 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/scheduler/views/day/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/day/grouping/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/grouping/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/day/grouping/main.js b/vue-options-api-demos/scheduler/views/day/grouping/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/day/grouping/main.vue b/vue-options-api-demos/scheduler/views/day/grouping/main.vue new file mode 100644 index 00000000..678b94ef --- /dev/null +++ b/vue-options-api-demos/scheduler/views/day/grouping/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/scheduler/views/default-view/events-utc.js b/vue-options-api-demos/scheduler/views/default-view/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/default-view/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/default-view/main.js b/vue-options-api-demos/scheduler/views/default-view/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/default-view/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/default-view/main.vue b/vue-options-api-demos/scheduler/views/default-view/main.vue new file mode 100644 index 00000000..71462177 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/default-view/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/scheduler/views/getting-started/events-utc.js b/vue-options-api-demos/scheduler/views/getting-started/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/getting-started/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/getting-started/main.js b/vue-options-api-demos/scheduler/views/getting-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/getting-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/getting-started/main.vue b/vue-options-api-demos/scheduler/views/getting-started/main.vue new file mode 100644 index 00000000..4c86320b --- /dev/null +++ b/vue-options-api-demos/scheduler/views/getting-started/main.vue @@ -0,0 +1,30 @@ + + diff --git a/vue-options-api-demos/scheduler/views/month/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/month/configuration/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/configuration/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/month/configuration/main.js b/vue-options-api-demos/scheduler/views/month/configuration/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/configuration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/month/configuration/main.vue b/vue-options-api-demos/scheduler/views/month/configuration/main.vue new file mode 100644 index 00000000..c57b53a1 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/configuration/main.vue @@ -0,0 +1,36 @@ + + diff --git a/vue-options-api-demos/scheduler/views/month/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/month/grouping-vertical/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/grouping-vertical/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.vue new file mode 100644 index 00000000..c79c3781 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/scheduler/views/month/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/month/grouping/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/grouping/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/month/grouping/main.js b/vue-options-api-demos/scheduler/views/month/grouping/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/month/grouping/main.vue b/vue-options-api-demos/scheduler/views/month/grouping/main.vue new file mode 100644 index 00000000..4a933c5f --- /dev/null +++ b/vue-options-api-demos/scheduler/views/month/grouping/main.vue @@ -0,0 +1,66 @@ + + diff --git a/vue-options-api-demos/scheduler/views/timeline/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/timeline/configuration/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/configuration/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/timeline/configuration/main.js b/vue-options-api-demos/scheduler/views/timeline/configuration/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/configuration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/timeline/configuration/main.vue b/vue-options-api-demos/scheduler/views/timeline/configuration/main.vue new file mode 100644 index 00000000..3615debb --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/configuration/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/scheduler/views/timeline/current-time/main.js b/vue-options-api-demos/scheduler/views/timeline/current-time/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/current-time/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/timeline/current-time/main.vue b/vue-options-api-demos/scheduler/views/timeline/current-time/main.vue new file mode 100644 index 00000000..3fbcbc92 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/current-time/main.vue @@ -0,0 +1,9 @@ + + diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.vue new file mode 100644 index 00000000..8d86a55d --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/timeline/grouping/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/grouping/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping/main.js b/vue-options-api-demos/scheduler/views/timeline/grouping/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping/main.vue b/vue-options-api-demos/scheduler/views/timeline/grouping/main.vue new file mode 100644 index 00000000..dcb3756a --- /dev/null +++ b/vue-options-api-demos/scheduler/views/timeline/grouping/main.vue @@ -0,0 +1,71 @@ + + diff --git a/vue-options-api-demos/scheduler/views/week/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/week/configuration/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/configuration/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/week/configuration/main.js b/vue-options-api-demos/scheduler/views/week/configuration/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/configuration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/week/configuration/main.vue b/vue-options-api-demos/scheduler/views/week/configuration/main.vue new file mode 100644 index 00000000..7eaadff3 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/configuration/main.vue @@ -0,0 +1,43 @@ + + diff --git a/vue-options-api-demos/scheduler/views/week/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/week/grouping-vertical/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/grouping-vertical/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.vue new file mode 100644 index 00000000..93bf2ca1 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.vue @@ -0,0 +1,72 @@ + + diff --git a/vue-options-api-demos/scheduler/views/week/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/week/grouping/events-utc.js new file mode 100644 index 00000000..f2cdf116 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/grouping/events-utc.js @@ -0,0 +1,847 @@ +const baseData = [ + { + "TaskID": 4, + "OwnerID": 2, + "Title": "Bowling tournament", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-09T21:00:00.000Z", + "End": "2013-06-10T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 5, + "OwnerID": 2, + "Title": "Take the dog to the vet", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-10T07:00:00.000Z", + "End": "2013-06-10T08:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 6, + "OwnerID": 2, + "Title": "Call Charlie about the project", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-11T11:30:00.000Z", + "End": "2013-06-11T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 7, + "OwnerID": 3, + "Title": "Meeting with Alex", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-12T11:00:00.000Z", + "End": "2013-06-12T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 9, + "OwnerID": 2, + "Title": "Alex's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-14T02:00:00.000Z", + "End": "2013-06-14T02:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 12, + "OwnerID": 2, + "Title": "Car Service", + "RoomID": 1, + "Description": "Might come to work later!", + "StartTimezone": null, + "Start": "2013-06-24T08:30:00.000Z", + "End": "2013-06-24T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 14, + "OwnerID": 3, + "RoomID": 2, + "PersonID": 3, + "Title": "Replace the printer on the 1st floor", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 15, + "OwnerID": 1, + "Title": "Attending HR Conference", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T00:00:00.000Z", + "End": "2013-06-26T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 16, + "OwnerID": 1, + "Title": "Business Lunch with Gregory Watkins", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T12:00:00.000Z", + "End": "2013-06-25T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 17, + "OwnerID": 1, + "Title": "Breakfast with CFO and COO", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T08:30:00.000Z", + "End": "2013-06-27T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 18, + "OwnerID": 1, + "Title": "Job Interview - Mathew Stevens", + "Description": "Junior Researcher", + "StartTimezone": null, + "Start": "2013-06-27T10:00:00.000Z", + "End": "2013-06-27T11:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 19, + "OwnerID": 1, + "Title": "Review CVs with Tim", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T11:00:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 20, + "OwnerID": 1, + "Title": "Lunch with Monica", + "Description": "Discuss the Employee handbook", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 21, + "OwnerID": 1, + "Title": "Job Interview - John Stewart", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 22, + "OwnerID": 1, + "Title": "Job Interview - Mary Smith", + "Description": "Accountant", + "StartTimezone": null, + "Start": "2013-06-27T15:30:00.000Z", + "End": "2013-06-27T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 24, + "OwnerID": 3, + "Title": "Register new Access Cards", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T12:00:00.000Z", + "End": "2013-06-24T12:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 25, + "OwnerID": 1, + "Title": "HR Lecture", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T19:00:00.000Z", + "End": "2013-06-04T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 26, + "OwnerID": 1, + "Title": "Dentist", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T08:00:00.000Z", + "End": "2013-06-28T09:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 27, + "OwnerID": 1, + "Title": "Job Interview - Laura Bailey", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T09:30:00.000Z", + "End": "2013-06-28T10:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 28, + "OwnerID": 1, + "Title": "Job Interview - Jenny Baxter", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-28T11:00:00.000Z", + "End": "2013-06-28T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 31, + "OwnerID": 1, + "Title": "Team building prep tasks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T14:00:00.000Z", + "End": "2013-06-28T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 32, + "OwnerID": 2, + "RoomID": 2, + "Title": "Job Interview - Bernard Atkins", + "Description": "Helpdesk", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 34, + "OwnerID": 1, + "Title": "Review Job Applications", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T15:00:00.000Z", + "End": "2013-06-24T17:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 35, + "OwnerID": 1, + "Title": "Grand Canyon tour", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-23T00:00:00.000Z", + "End": "2013-06-23T00:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 40, + "OwnerID": 3, + "Title": "Install new laptops in conference rooms", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T13:30:00.000Z", + "End": "2013-06-24T15:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 66, + "OwnerID": 3, + "Title": "Bob's Birthday", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T08:00:00.000Z", + "End": "2013-06-29T06:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 68, + "OwnerID": 1, + "RoomID": 2, + "Title": "Breakfast with Tom", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T09:45:00.000Z", + "End": "2013-06-24T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 69, + "OwnerID": 2, + "Title": "Team planning meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T10:00:00.000Z", + "End": "2013-06-24T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 70, + "OwnerID": 2, + "Title": "Support Phone Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-24T16:00:00.000Z", + "End": "2013-06-24T16:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 71, + "OwnerID": 2, + "Title": "Business breakfast with Caroline", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T09:00:00.000Z", + "End": "2013-06-25T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 72, + "OwnerID": 2, + "Title": "Discuss preojects' deadlines", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T11:00:00.000Z", + "End": "2013-06-25T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 73, + "OwnerID": 2, + "Title": "Support Meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T15:00:00.000Z", + "End": "2013-06-25T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 74, + "OwnerID": 2, + "Title": "Dine with Mathew", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T18:30:00.000Z", + "End": "2013-06-25T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 79, + "OwnerID": 2, + "Title": "Banking", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T09:00:00.000Z", + "End": "2013-06-26T10:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 80, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T10:00:00.000Z", + "End": "2013-06-25T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 81, + "OwnerID": 3, + "Title": "UPS maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-25T16:30:00.000Z", + "End": "2013-06-25T18:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 82, + "OwnerID": 2, + "Title": "Support Call", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T11:30:00.000Z", + "End": "2013-06-26T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 83, + "OwnerID": 3, + "Title": "Phone Sync with NY office ", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T13:30:00.000Z", + "End": "2013-06-26T14:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 84, + "OwnerID": 3, + "Title": "Phone Sync with Boston Office", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T15:00:00.000Z", + "End": "2013-06-26T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 85, + "OwnerID": 3, + "Title": "Server maintenance", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-26T18:30:00.000Z", + "End": "2013-06-26T21:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": true + }, + { + "TaskID": 86, + "OwnerID": 2, + "Title": "Status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T13:30:00.000Z", + "End": "2013-06-28T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 87, + "OwnerID": 3, + "Title": "Helpdesk status meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T10:30:00.000Z", + "End": "2013-06-27T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 88, + "OwnerID": 2, + "Title": "Business Lunch", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T12:00:00.000Z", + "End": "2013-06-27T13:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 89, + "OwnerID": 3, + "Title": "Employee database update", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T14:00:00.000Z", + "End": "2013-06-27T15:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 90, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T07:30:00.000Z", + "End": "2013-06-27T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 91, + "OwnerID": 2, + "Title": "Meeting with marketing guys", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-27T17:00:00.000Z", + "End": "2013-06-27T18:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 92, + "OwnerID": 3, + "Title": "Meeting with Internet provider", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-28T10:30:00.000Z", + "End": "2013-06-28T11:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 93, + "OwnerID": 3, + "Title": "Bob's Birthday Party", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-29T20:00:00.000Z", + "End": "2013-06-29T23:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": null, + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 95, + "OwnerID": 2, + "Title": "Dance Practice", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-03T18:30:00.000Z", + "End": "2013-06-03T20:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 114, + "OwnerID": 3, + "Title": "Software updates", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T09:00:00.000Z", + "End": "2013-06-04T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 115, + "OwnerID": 1, + "Title": "Breakfast at Starbucks", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T08:00:00.000Z", + "End": "2013-06-04T09:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 116, + "OwnerID": 2, + "Title": "Performance review", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-04T14:00:00.000Z", + "End": "2013-06-04T17:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 118, + "OwnerID": 1, + "Title": "HR seminar preparation", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T10:00:00.000Z", + "End": "2013-06-05T12:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 119, + "OwnerID": 3, + "Title": "Helpdesk weekly meeting", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-05T15:00:00.000Z", + "End": "2013-06-05T16:00:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + }, + { + "TaskID": 120, + "OwnerID": 3, + "Title": "Website upload", + "Description": "", + "StartTimezone": null, + "Start": "2013-06-07T07:00:00.000Z", + "End": "2013-06-07T08:30:00.000Z", + "EndTimezone": null, + "RecurrenceRule": "", + "RecurrenceID": null, + "RecurrenceException": null, + "isAllDay": false + } +]; + +export const customModelFields = { + id: 'TaskID', + title: 'Title', + description: 'Description', + start: 'Start', + end: 'End', + recurrenceRule: 'RecurrenceRule', + recurrenceId: 'RecurrenceID', + recurrenceExceptions: 'RecurrenceException' +}; + +const currentYear = new Date().getFullYear(); +const parseAdjust = (eventDate) => { + const date = new Date(eventDate); + date.setFullYear(currentYear); + return date; +}; + +const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + +export const displayDate = new Date(Date.UTC(currentYear, 5, 24)); + +export const sampleData = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + + roomId: dataItem.RoomID, + ownerID: dataItem.OwnerID, + personId: dataItem.OwnerID + } +)); + +export const sampleDataWithResources = baseData.map(dataItem => ( + { + id: dataItem.TaskID, + start: parseAdjust(dataItem.Start), + startTimezone: dataItem.startTimezone, + end: parseAdjust(dataItem.End), + endTimezone: dataItem.endTimezone, + isAllDay: dataItem.isAllDay, + title: dataItem.Title, + description: dataItem.Description, + recurrenceRule: dataItem.RecurrenceRule, + recurrenceId: dataItem.RecurrenceID, + recurrenceExceptions: dataItem.RecurrenceException, + roomId: randomInt(1, 2), + personId: randomInt(1, 2) + } +)); + +export const sampleDataWithCustomSchema = baseData.map(dataItem => ( + { + ...dataItem, + Start: parseAdjust(dataItem.Start), + End: parseAdjust(dataItem.End), + PersonIDs: randomInt(1, 2), + RoomID: randomInt(1, 2) + } +)); \ No newline at end of file diff --git a/vue-options-api-demos/scheduler/views/week/grouping/main.js b/vue-options-api-demos/scheduler/views/week/grouping/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/grouping/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scheduler/views/week/grouping/main.vue b/vue-options-api-demos/scheduler/views/week/grouping/main.vue new file mode 100644 index 00000000..76a05dd9 --- /dev/null +++ b/vue-options-api-demos/scheduler/views/week/grouping/main.vue @@ -0,0 +1,72 @@ + + diff --git a/vue-options-api-demos/scrollview/active-view/main.js b/vue-options-api-demos/scrollview/active-view/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/active-view/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/active-view/main.vue b/vue-options-api-demos/scrollview/active-view/main.vue new file mode 100644 index 00000000..5e880f32 --- /dev/null +++ b/vue-options-api-demos/scrollview/active-view/main.vue @@ -0,0 +1,76 @@ + + + diff --git a/vue-options-api-demos/scrollview/active-view/styles.css b/vue-options-api-demos/scrollview/active-view/styles.css new file mode 100644 index 00000000..9eec10fa --- /dev/null +++ b/vue-options-api-demos/scrollview/active-view/styles.css @@ -0,0 +1,18 @@ +.k-scrollview { + margin: 0 auto; +} +.image-with-text { + position: relative; +} +.demo-title { + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0; + padding: 15px; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; + font-size: 24px; +} diff --git a/vue-options-api-demos/scrollview/arrows/main.js b/vue-options-api-demos/scrollview/arrows/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/arrows/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/arrows/main.vue b/vue-options-api-demos/scrollview/arrows/main.vue new file mode 100644 index 00000000..9e44cd9d --- /dev/null +++ b/vue-options-api-demos/scrollview/arrows/main.vue @@ -0,0 +1,90 @@ + + + diff --git a/vue-options-api-demos/scrollview/arrows/styles.css b/vue-options-api-demos/scrollview/arrows/styles.css new file mode 100644 index 00000000..9eec10fa --- /dev/null +++ b/vue-options-api-demos/scrollview/arrows/styles.css @@ -0,0 +1,18 @@ +.k-scrollview { + margin: 0 auto; +} +.image-with-text { + position: relative; +} +.demo-title { + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0; + padding: 15px; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; + font-size: 24px; +} diff --git a/vue-options-api-demos/scrollview/automatic-interval/main.js b/vue-options-api-demos/scrollview/automatic-interval/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/automatic-interval/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/automatic-interval/main.vue b/vue-options-api-demos/scrollview/automatic-interval/main.vue new file mode 100644 index 00000000..ef9d82cc --- /dev/null +++ b/vue-options-api-demos/scrollview/automatic-interval/main.vue @@ -0,0 +1,76 @@ + + + diff --git a/vue-options-api-demos/scrollview/automatic-interval/styles.css b/vue-options-api-demos/scrollview/automatic-interval/styles.css new file mode 100644 index 00000000..9eec10fa --- /dev/null +++ b/vue-options-api-demos/scrollview/automatic-interval/styles.css @@ -0,0 +1,18 @@ +.k-scrollview { + margin: 0 auto; +} +.image-with-text { + position: relative; +} +.demo-title { + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0; + padding: 15px; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; + font-size: 24px; +} diff --git a/vue-options-api-demos/scrollview/automatic-scrolling/main.js b/vue-options-api-demos/scrollview/automatic-scrolling/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/automatic-scrolling/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/automatic-scrolling/main.vue b/vue-options-api-demos/scrollview/automatic-scrolling/main.vue new file mode 100644 index 00000000..8cacf45e --- /dev/null +++ b/vue-options-api-demos/scrollview/automatic-scrolling/main.vue @@ -0,0 +1,76 @@ + + + diff --git a/vue-options-api-demos/scrollview/automatic-scrolling/styles.css b/vue-options-api-demos/scrollview/automatic-scrolling/styles.css new file mode 100644 index 00000000..9eec10fa --- /dev/null +++ b/vue-options-api-demos/scrollview/automatic-scrolling/styles.css @@ -0,0 +1,18 @@ +.k-scrollview { + margin: 0 auto; +} +.image-with-text { + position: relative; +} +.demo-title { + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0; + padding: 15px; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; + font-size: 24px; +} diff --git a/vue-options-api-demos/scrollview/endless/main.js b/vue-options-api-demos/scrollview/endless/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/endless/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/endless/main.vue b/vue-options-api-demos/scrollview/endless/main.vue new file mode 100644 index 00000000..846da96e --- /dev/null +++ b/vue-options-api-demos/scrollview/endless/main.vue @@ -0,0 +1,76 @@ + + + diff --git a/vue-options-api-demos/scrollview/endless/styles.css b/vue-options-api-demos/scrollview/endless/styles.css new file mode 100644 index 00000000..9eec10fa --- /dev/null +++ b/vue-options-api-demos/scrollview/endless/styles.css @@ -0,0 +1,18 @@ +.k-scrollview { + margin: 0 auto; +} +.image-with-text { + position: relative; +} +.demo-title { + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0; + padding: 15px; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; + font-size: 24px; +} diff --git a/vue-options-api-demos/scrollview/get-started/main.js b/vue-options-api-demos/scrollview/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/get-started/main.vue b/vue-options-api-demos/scrollview/get-started/main.vue new file mode 100644 index 00000000..f4f3e53a --- /dev/null +++ b/vue-options-api-demos/scrollview/get-started/main.vue @@ -0,0 +1,56 @@ + + + diff --git a/vue-options-api-demos/scrollview/get-started/styles.css b/vue-options-api-demos/scrollview/get-started/styles.css new file mode 100644 index 00000000..66c8dcd0 --- /dev/null +++ b/vue-options-api-demos/scrollview/get-started/styles.css @@ -0,0 +1,5 @@ +/* center the Carousel horizontally */ +/* k-scrollview is the default component class */ +.k-scrollview { + margin: 0 auto; +} diff --git a/vue-options-api-demos/scrollview/keyboard-navigation/main.js b/vue-options-api-demos/scrollview/keyboard-navigation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/keyboard-navigation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/keyboard-navigation/main.vue b/vue-options-api-demos/scrollview/keyboard-navigation/main.vue new file mode 100644 index 00000000..665b45e1 --- /dev/null +++ b/vue-options-api-demos/scrollview/keyboard-navigation/main.vue @@ -0,0 +1,72 @@ + + + diff --git a/vue-options-api-demos/scrollview/keyboard-navigation/styles.css b/vue-options-api-demos/scrollview/keyboard-navigation/styles.css new file mode 100644 index 00000000..2f7a7b12 --- /dev/null +++ b/vue-options-api-demos/scrollview/keyboard-navigation/styles.css @@ -0,0 +1,20 @@ +/* center the Carousel horizontally */ +/* k-scrollview is the default component class */ +.k-scrollview { + margin: 0 auto; +} +/* enable absolute positioning inside the Carousel template */ +.image-with-text { + position: relative; +} + +/* style the overlay text inside the Carousel */ +.image-with-text > p { + position: absolute; + top: 1rem; + left: 1.6rem; + color: rgba(255, 255, 255, .8); + margin: 0; + font-style: italic; + text-shadow: 1px 1px 2px rgba(0, 0, 0, .8); +} diff --git a/vue-options-api-demos/scrollview/overview/main.js b/vue-options-api-demos/scrollview/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/overview/main.vue b/vue-options-api-demos/scrollview/overview/main.vue new file mode 100644 index 00000000..9d5dd49b --- /dev/null +++ b/vue-options-api-demos/scrollview/overview/main.vue @@ -0,0 +1,73 @@ + + + diff --git a/vue-options-api-demos/scrollview/overview/styles.css b/vue-options-api-demos/scrollview/overview/styles.css new file mode 100644 index 00000000..2f7a7b12 --- /dev/null +++ b/vue-options-api-demos/scrollview/overview/styles.css @@ -0,0 +1,20 @@ +/* center the Carousel horizontally */ +/* k-scrollview is the default component class */ +.k-scrollview { + margin: 0 auto; +} +/* enable absolute positioning inside the Carousel template */ +.image-with-text { + position: relative; +} + +/* style the overlay text inside the Carousel */ +.image-with-text > p { + position: absolute; + top: 1rem; + left: 1.6rem; + color: rgba(255, 255, 255, .8); + margin: 0; + font-style: italic; + text-shadow: 1px 1px 2px rgba(0, 0, 0, .8); +} diff --git a/vue-options-api-demos/scrollview/pager-overlay/main.js b/vue-options-api-demos/scrollview/pager-overlay/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/pager-overlay/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/pager-overlay/main.vue b/vue-options-api-demos/scrollview/pager-overlay/main.vue new file mode 100644 index 00000000..34e79a05 --- /dev/null +++ b/vue-options-api-demos/scrollview/pager-overlay/main.vue @@ -0,0 +1,105 @@ + + + diff --git a/vue-options-api-demos/scrollview/pager-overlay/styles.css b/vue-options-api-demos/scrollview/pager-overlay/styles.css new file mode 100644 index 00000000..9eec10fa --- /dev/null +++ b/vue-options-api-demos/scrollview/pager-overlay/styles.css @@ -0,0 +1,18 @@ +.k-scrollview { + margin: 0 auto; +} +.image-with-text { + position: relative; +} +.demo-title { + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0; + padding: 15px; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; + font-size: 24px; +} diff --git a/vue-options-api-demos/scrollview/paging/main.js b/vue-options-api-demos/scrollview/paging/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/paging/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/paging/main.vue b/vue-options-api-demos/scrollview/paging/main.vue new file mode 100644 index 00000000..f1cada74 --- /dev/null +++ b/vue-options-api-demos/scrollview/paging/main.vue @@ -0,0 +1,97 @@ + + + diff --git a/vue-options-api-demos/scrollview/paging/styles.css b/vue-options-api-demos/scrollview/paging/styles.css new file mode 100644 index 00000000..9eec10fa --- /dev/null +++ b/vue-options-api-demos/scrollview/paging/styles.css @@ -0,0 +1,18 @@ +.k-scrollview { + margin: 0 auto; +} +.image-with-text { + position: relative; +} +.demo-title { + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0; + padding: 15px; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; + font-size: 24px; +} diff --git a/vue-options-api-demos/scrollview/rtl/main.js b/vue-options-api-demos/scrollview/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/scrollview/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/scrollview/rtl/main.vue b/vue-options-api-demos/scrollview/rtl/main.vue new file mode 100644 index 00000000..8fccd2c4 --- /dev/null +++ b/vue-options-api-demos/scrollview/rtl/main.vue @@ -0,0 +1,51 @@ + + + diff --git a/vue-options-api-demos/scrollview/rtl/styles.css b/vue-options-api-demos/scrollview/rtl/styles.css new file mode 100644 index 00000000..66c8dcd0 --- /dev/null +++ b/vue-options-api-demos/scrollview/rtl/styles.css @@ -0,0 +1,5 @@ +/* center the Carousel horizontally */ +/* k-scrollview is the default component class */ +.k-scrollview { + margin: 0 auto; +} diff --git a/vue-options-api-demos/tooltip/controlled-mode/main.js b/vue-options-api-demos/tooltip/controlled-mode/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/controlled-mode/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/controlled-mode/main.vue b/vue-options-api-demos/tooltip/controlled-mode/main.vue new file mode 100644 index 00000000..44816450 --- /dev/null +++ b/vue-options-api-demos/tooltip/controlled-mode/main.vue @@ -0,0 +1,73 @@ + + + diff --git a/vue-options-api-demos/tooltip/customization/main.js b/vue-options-api-demos/tooltip/customization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/customization/main.vue b/vue-options-api-demos/tooltip/customization/main.vue new file mode 100644 index 00000000..e1c85908 --- /dev/null +++ b/vue-options-api-demos/tooltip/customization/main.vue @@ -0,0 +1,62 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/tooltip/events/Logger.vue b/vue-options-api-demos/tooltip/events/Logger.vue new file mode 100644 index 00000000..f2917aa1 --- /dev/null +++ b/vue-options-api-demos/tooltip/events/Logger.vue @@ -0,0 +1,43 @@ + + + + diff --git a/vue-options-api-demos/tooltip/events/main.js b/vue-options-api-demos/tooltip/events/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/events/main.vue b/vue-options-api-demos/tooltip/events/main.vue new file mode 100644 index 00000000..02975945 --- /dev/null +++ b/vue-options-api-demos/tooltip/events/main.vue @@ -0,0 +1,57 @@ + + diff --git a/vue-options-api-demos/tooltip/events/styles.css b/vue-options-api-demos/tooltip/events/styles.css new file mode 100644 index 00000000..6a995f79 --- /dev/null +++ b/vue-options-api-demos/tooltip/events/styles.css @@ -0,0 +1,72 @@ +#agglomerations { + position: relative; + width: 692px; + height: 480px; + margin: 0 auto; + background: url('https://www.telerik.com/kendo-vue-ui/components/tooltip/assets/world-map.jpg') + no-repeat 0 0; + } + + #agglomerations > a { + cursor: pointer; + position: absolute; + display: block; + width: 12px; + height: 12px; + background-color: #fff600; + border-radius: 30px; + border: 0; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5); + transition: box-shadow 0.3s; + z-index: 10; + } + + #agglomerations > a:hover { + box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.5); + } + + #canton { + top: 226px; + left: 501px; + } + #jakarta { + top: 266px; + left: 494px; + } + #mexico { + top: 227px; + left: 182px; + } + #delhi { + top: 214px; + left: 448px; + } + #karachi { + top: 222px; + left: 431px; + } + #newyork { + top: 188px; + left: 214px; + } + #saopaolo { + top: 304px; + left: 248px; + } + #bombay { + top: 233px; + left: 438px; + } + #losangeles { + top: 202px; + left: 148px; + } + #osaka { + top: 201px; + left: 535px; + } + #moscow { + top: 153px; + left: 402px; + } + \ No newline at end of file diff --git a/vue-options-api-demos/tooltip/filters/main.js b/vue-options-api-demos/tooltip/filters/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/filters/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/filters/main.vue b/vue-options-api-demos/tooltip/filters/main.vue new file mode 100644 index 00000000..dc3d00ef --- /dev/null +++ b/vue-options-api-demos/tooltip/filters/main.vue @@ -0,0 +1,47 @@ + + + diff --git a/vue-options-api-demos/tooltip/grid-integration/main.js b/vue-options-api-demos/tooltip/grid-integration/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/grid-integration/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/grid-integration/main.vue b/vue-options-api-demos/tooltip/grid-integration/main.vue new file mode 100644 index 00000000..370ab687 --- /dev/null +++ b/vue-options-api-demos/tooltip/grid-integration/main.vue @@ -0,0 +1,27 @@ + + + diff --git a/vue-options-api-demos/tooltip/multiple/main.js b/vue-options-api-demos/tooltip/multiple/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/multiple/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/multiple/main.vue b/vue-options-api-demos/tooltip/multiple/main.vue new file mode 100644 index 00000000..c746aa29 --- /dev/null +++ b/vue-options-api-demos/tooltip/multiple/main.vue @@ -0,0 +1,37 @@ + + + diff --git a/vue-options-api-demos/tooltip/overview/main.js b/vue-options-api-demos/tooltip/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/overview/main.vue b/vue-options-api-demos/tooltip/overview/main.vue new file mode 100644 index 00000000..1939dcd9 --- /dev/null +++ b/vue-options-api-demos/tooltip/overview/main.vue @@ -0,0 +1,30 @@ + + + diff --git a/vue-options-api-demos/tooltip/overview/styles.css b/vue-options-api-demos/tooltip/overview/styles.css new file mode 100644 index 00000000..fef10b43 --- /dev/null +++ b/vue-options-api-demos/tooltip/overview/styles.css @@ -0,0 +1,71 @@ +#agglomerations { + position: relative; + width: 692px; + height: 480px; + margin: 0 auto; + background: url('https://demos.telerik.com/kendo-vue-ui/assets/tooltips/world-map.jpg') + no-repeat 0 0; + } + + #agglomerations > a { + cursor: pointer; + position: absolute; + display: block; + width: 12px; + height: 12px; + background-color: #fff600; + border-radius: 30px; + border: 0; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5); + transition: box-shadow 0.3s; + z-index: 10; + } + + #agglomerations > a:hover { + box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.5); + } + + #canton { + top: 226px; + left: 501px; + } + #jakarta { + top: 266px; + left: 494px; + } + #mexico { + top: 227px; + left: 182px; + } + #delhi { + top: 214px; + left: 448px; + } + #karachi { + top: 222px; + left: 431px; + } + #newyork { + top: 188px; + left: 214px; + } + #saopaolo { + top: 304px; + left: 248px; + } + #bombay { + top: 233px; + left: 438px; + } + #losangeles { + top: 202px; + left: 148px; + } + #osaka { + top: 201px; + left: 535px; + } + #moscow { + top: 153px; + left: 402px; + } diff --git a/vue-options-api-demos/tooltip/positioning/main.js b/vue-options-api-demos/tooltip/positioning/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/positioning/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/positioning/main.vue b/vue-options-api-demos/tooltip/positioning/main.vue new file mode 100644 index 00000000..b5a23d32 --- /dev/null +++ b/vue-options-api-demos/tooltip/positioning/main.vue @@ -0,0 +1,76 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/tooltip/shared/products.json b/vue-options-api-demos/tooltip/shared/products.json new file mode 100644 index 00000000..4df1c408 --- /dev/null +++ b/vue-options-api-demos/tooltip/shared/products.json @@ -0,0 +1,1233 @@ +[{ + "ProductID" : 1, + "ProductName" : "Chai", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "10 boxes x 20 bags", + "UnitPrice" : 18.0000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 2, + "ProductName" : "Chang", + "SupplierID" : 1, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 19.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 3, + "ProductName" : "Aniseed Syrup", + "SupplierID" : 1, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 550 ml bottles", + "UnitPrice" : 10.0000, + "UnitsInStock" : 13, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 4, + "ProductName" : "Chef Anton's Cajun Seasoning", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "48 - 6 oz jars", + "UnitPrice" : 22.0000, + "UnitsInStock" : 53, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 5, + "ProductName" : "Chef Anton's Gumbo Mix", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "36 boxes", + "UnitPrice" : 21.3500, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 6, + "ProductName" : "Grandma's Boysenberry Spread", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 8 oz jars", + "UnitPrice" : 25.0000, + "UnitsInStock" : 120, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 7, + "ProductName" : "Uncle Bob's Organic Dried Pears", + "SupplierID" : 3, + "CategoryID" : 7, + "QuantityPerUnit" : "12 - 1 lb pkgs.", + "UnitPrice" : 30.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 8, + "ProductName" : "Northwoods Cranberry Sauce", + "SupplierID" : 3, + "CategoryID" : 2, + "QuantityPerUnit" : "12 - 12 oz jars", + "UnitPrice" : 40.0000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 9, + "ProductName" : "Mishi Kobe Niku", + "SupplierID" : 4, + "CategoryID" : 6, + "QuantityPerUnit" : "18 - 500 g pkgs.", + "UnitPrice" : 97.0000, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 10, + "ProductName" : "Ikura", + "SupplierID" : 4, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 200 ml jars", + "UnitPrice" : 31.0000, + "UnitsInStock" : 31, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 11, + "ProductName" : "Queso Cabrales", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "1 kg pkg.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 22, + "UnitsOnOrder" : 30, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 12, + "ProductName" : "Queso Manchego La Pastora", + "SupplierID" : 5, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 86, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 13, + "ProductName" : "Konbu", + "SupplierID" : 6, + "CategoryID" : 8, + "QuantityPerUnit" : "2 kg box", + "UnitPrice" : 6.0000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 14, + "ProductName" : "Tofu", + "SupplierID" : 6, + "CategoryID" : 7, + "QuantityPerUnit" : "40 - 100 g pkgs.", + "UnitPrice" : 23.2500, + "UnitsInStock" : 35, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 15, + "ProductName" : "Genen Shouyu", + "SupplierID" : 6, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 250 ml bottles", + "UnitPrice" : 15.5000, + "UnitsInStock" : 39, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 16, + "ProductName" : "Pavlova", + "SupplierID" : 7, + "CategoryID" : 3, + "QuantityPerUnit" : "32 - 500 g boxes", + "UnitPrice" : 17.4500, + "UnitsInStock" : 29, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 17, + "ProductName" : "Alice Mutton", + "SupplierID" : 7, + "CategoryID" : 6, + "QuantityPerUnit" : "20 - 1 kg tins", + "UnitPrice" : 39.0000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 18, + "ProductName" : "Carnarvon Tigers", + "SupplierID" : 7, + "CategoryID" : 8, + "QuantityPerUnit" : "16 kg pkg.", + "UnitPrice" : 62.5000, + "UnitsInStock" : 42, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 19, + "ProductName" : "Teatime Chocolate Biscuits", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 12 pieces", + "UnitPrice" : 9.2000, + "UnitsInStock" : 25, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 20, + "ProductName" : "Sir Rodney's Marmalade", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "30 gift boxes", + "UnitPrice" : 81.0000, + "UnitsInStock" : 40, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 21, + "ProductName" : "Sir Rodney's Scones", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "24 pkgs. x 4 pieces", + "UnitPrice" : 10.0000, + "UnitsInStock" : 3, + "UnitsOnOrder" : 40, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 22, + "ProductName" : "Gustaf's Knäckebröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 500 g pkgs.", + "UnitPrice" : 21.0000, + "UnitsInStock" : 104, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 23, + "ProductName" : "Tunnbröd", + "SupplierID" : 9, + "CategoryID" : 5, + "QuantityPerUnit" : "12 - 250 g pkgs.", + "UnitPrice" : 9.0000, + "UnitsInStock" : 61, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 24, + "ProductName" : "Guaraná Fantástica", + "SupplierID" : 10, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 355 ml cans", + "UnitPrice" : 4.5000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 25, + "ProductName" : "NuNuCa Nuß-Nougat-Creme", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "20 - 450 g glasses", + "UnitPrice" : 14.0000, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 26, + "ProductName" : "Gumbär Gummibärchen", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 250 g bags", + "UnitPrice" : 31.2300, + "UnitsInStock" : 15, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 27, + "ProductName" : "Schoggi Schokolade", + "SupplierID" : 11, + "CategoryID" : 3, + "QuantityPerUnit" : "100 - 100 g pieces", + "UnitPrice" : 43.9000, + "UnitsInStock" : 49, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 28, + "ProductName" : "Rössle Sauerkraut", + "SupplierID" : 12, + "CategoryID" : 7, + "QuantityPerUnit" : "25 - 825 g cans", + "UnitPrice" : 45.6000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 29, + "ProductName" : "Thüringer Rostbratwurst", + "SupplierID" : 12, + "CategoryID" : 6, + "QuantityPerUnit" : "50 bags x 30 sausgs.", + "UnitPrice" : 123.7900, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 30, + "ProductName" : "Nord-Ost Matjeshering", + "SupplierID" : 13, + "CategoryID" : 8, + "QuantityPerUnit" : "10 - 200 g glasses", + "UnitPrice" : 25.8900, + "UnitsInStock" : 10, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 31, + "ProductName" : "Gorgonzola Telino", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "12 - 100 g pkgs", + "UnitPrice" : 12.5000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 70, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 32, + "ProductName" : "Mascarpone Fabioli", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 32.0000, + "UnitsInStock" : 9, + "UnitsOnOrder" : 40, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 33, + "ProductName" : "Geitost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "500 g", + "UnitPrice" : 2.5000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 34, + "ProductName" : "Sasquatch Ale", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 111, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 35, + "ProductName" : "Steeleye Stout", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 18.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 36, + "ProductName" : "Inlagd Sill", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 250 g jars", + "UnitPrice" : 19.0000, + "UnitsInStock" : 112, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 37, + "ProductName" : "Gravad lax", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 500 g pkgs.", + "UnitPrice" : 26.0000, + "UnitsInStock" : 11, + "UnitsOnOrder" : 50, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 38, + "ProductName" : "Côte de Blaye", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "12 - 75 cl bottles", + "UnitPrice" : 263.5000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 39, + "ProductName" : "Chartreuse verte", + "SupplierID" : 18, + "CategoryID" : 1, + "QuantityPerUnit" : "750 cc per bottle", + "UnitPrice" : 18.0000, + "UnitsInStock" : 69, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 40, + "ProductName" : "Boston Crab Meat", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 4 oz tins", + "UnitPrice" : 18.4000, + "UnitsInStock" : 123, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 41, + "ProductName" : "Jack's New England Clam Chowder", + "SupplierID" : 19, + "CategoryID" : 8, + "QuantityPerUnit" : "12 - 12 oz cans", + "UnitPrice" : 9.6500, + "UnitsInStock" : 85, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 42, + "ProductName" : "Singaporean Hokkien Fried Mee", + "SupplierID" : 20, + "CategoryID" : 5, + "QuantityPerUnit" : "32 - 1 kg pkgs.", + "UnitPrice" : 14.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 43, + "ProductName" : "Ipoh Coffee", + "SupplierID" : 20, + "CategoryID" : 1, + "QuantityPerUnit" : "16 - 500 g tins", + "UnitPrice" : 46.0000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 10, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 44, + "ProductName" : "Gula Malacca", + "SupplierID" : 20, + "CategoryID" : 2, + "QuantityPerUnit" : "20 - 2 kg bags", + "UnitPrice" : 19.4500, + "UnitsInStock" : 27, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 45, + "ProductName" : "Rogede sild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "1k pkg.", + "UnitPrice" : 9.5000, + "UnitsInStock" : 5, + "UnitsOnOrder" : 70, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 46, + "ProductName" : "Spegesild", + "SupplierID" : 21, + "CategoryID" : 8, + "QuantityPerUnit" : "4 - 450 g glasses", + "UnitPrice" : 12.0000, + "UnitsInStock" : 95, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 47, + "ProductName" : "Zaanse koeken", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 - 4 oz boxes", + "UnitPrice" : 9.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 48, + "ProductName" : "Chocolade", + "SupplierID" : 22, + "CategoryID" : 3, + "QuantityPerUnit" : "10 pkgs.", + "UnitPrice" : 12.7500, + "UnitsInStock" : 15, + "UnitsOnOrder" : 70, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 49, + "ProductName" : "Maxilaku", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "24 - 50 g pkgs.", + "UnitPrice" : 20.0000, + "UnitsInStock" : 10, + "UnitsOnOrder" : 60, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 50, + "ProductName" : "Valkoinen suklaa", + "SupplierID" : 23, + "CategoryID" : 3, + "QuantityPerUnit" : "12 - 100 g bars", + "UnitPrice" : 16.2500, + "UnitsInStock" : 65, + "UnitsOnOrder" : 0, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 51, + "ProductName" : "Manjimup Dried Apples", + "SupplierID" : 24, + "CategoryID" : 7, + "QuantityPerUnit" : "50 - 300 g pkgs.", + "UnitPrice" : 53.0000, + "UnitsInStock" : 20, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 52, + "ProductName" : "Filo Mix", + "SupplierID" : 24, + "CategoryID" : 5, + "QuantityPerUnit" : "16 - 2 kg boxes", + "UnitPrice" : 7.0000, + "UnitsInStock" : 38, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 53, + "ProductName" : "Perth Pasties", + "SupplierID" : 24, + "CategoryID" : 6, + "QuantityPerUnit" : "48 pieces", + "UnitPrice" : 32.8000, + "UnitsInStock" : 0, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : true, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 54, + "ProductName" : "Tourtière", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "16 pies", + "UnitPrice" : 7.4500, + "UnitsInStock" : 21, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 55, + "ProductName" : "Pâté chinois", + "SupplierID" : 25, + "CategoryID" : 6, + "QuantityPerUnit" : "24 boxes x 2 pies", + "UnitPrice" : 24.0000, + "UnitsInStock" : 115, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 6, + "CategoryName" : "Meat/Poultry", + "Description" : "Prepared meats" + } +}, { + "ProductID" : 56, + "ProductName" : "Gnocchi di nonna Alice", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 38.0000, + "UnitsInStock" : 21, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 57, + "ProductName" : "Ravioli Angelo", + "SupplierID" : 26, + "CategoryID" : 5, + "QuantityPerUnit" : "24 - 250 g pkgs.", + "UnitPrice" : 19.5000, + "UnitsInStock" : 36, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 58, + "ProductName" : "Escargots de Bourgogne", + "SupplierID" : 27, + "CategoryID" : 8, + "QuantityPerUnit" : "24 pieces", + "UnitPrice" : 13.2500, + "UnitsInStock" : 62, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 59, + "ProductName" : "Raclette Courdavault", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 55.0000, + "UnitsInStock" : 79, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 60, + "ProductName" : "Camembert Pierrot", + "SupplierID" : 28, + "CategoryID" : 4, + "QuantityPerUnit" : "15 - 300 g rounds", + "UnitPrice" : 34.0000, + "UnitsInStock" : 19, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 61, + "ProductName" : "Sirop d'érable", + "SupplierID" : 29, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 500 ml bottles", + "UnitPrice" : 28.5000, + "UnitsInStock" : 113, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 62, + "ProductName" : "Tarte au sucre", + "SupplierID" : 29, + "CategoryID" : 3, + "QuantityPerUnit" : "48 pies", + "UnitPrice" : 49.3000, + "UnitsInStock" : 17, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 63, + "ProductName" : "Vegie-spread", + "SupplierID" : 7, + "CategoryID" : 2, + "QuantityPerUnit" : "15 - 625 g jars", + "UnitPrice" : 43.9000, + "UnitsInStock" : 24, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 64, + "ProductName" : "Wimmers gute Semmelknödel", + "SupplierID" : 12, + "CategoryID" : 5, + "QuantityPerUnit" : "20 bags x 4 pieces", + "UnitPrice" : 33.2500, + "UnitsInStock" : 22, + "UnitsOnOrder" : 80, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 5, + "CategoryName" : "Grains/Cereals", + "Description" : "Breads, crackers, pasta, and cereal" + } +}, { + "ProductID" : 65, + "ProductName" : "Louisiana Fiery Hot Pepper Sauce", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "32 - 8 oz bottles", + "UnitPrice" : 21.0500, + "UnitsInStock" : 76, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 66, + "ProductName" : "Louisiana Hot Spiced Okra", + "SupplierID" : 2, + "CategoryID" : 2, + "QuantityPerUnit" : "24 - 8 oz jars", + "UnitPrice" : 17.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 100, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}, { + "ProductID" : 67, + "ProductName" : "Laughing Lumberjack Lager", + "SupplierID" : 16, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 12 oz bottles", + "UnitPrice" : 14.0000, + "UnitsInStock" : 52, + "UnitsOnOrder" : 0, + "ReorderLevel" : 10, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 68, + "ProductName" : "Scottish Longbreads", + "SupplierID" : 8, + "CategoryID" : 3, + "QuantityPerUnit" : "10 boxes x 8 pieces", + "UnitPrice" : 12.5000, + "UnitsInStock" : 6, + "UnitsOnOrder" : 10, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 3, + "CategoryName" : "Confections", + "Description" : "Desserts, candies, and sweet breads" + } +}, { + "ProductID" : 69, + "ProductName" : "Gudbrandsdalsost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 kg pkg.", + "UnitPrice" : 36.0000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 70, + "ProductName" : "Outback Lager", + "SupplierID" : 7, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 355 ml bottles", + "UnitPrice" : 15.0000, + "UnitsInStock" : 15, + "UnitsOnOrder" : 10, + "ReorderLevel" : 30, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 71, + "ProductName" : "Flotemysost", + "SupplierID" : 15, + "CategoryID" : 4, + "QuantityPerUnit" : "10 - 500 g pkgs.", + "UnitPrice" : 21.5000, + "UnitsInStock" : 26, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 72, + "ProductName" : "Mozzarella di Giovanni", + "SupplierID" : 14, + "CategoryID" : 4, + "QuantityPerUnit" : "24 - 200 g pkgs.", + "UnitPrice" : 34.8000, + "UnitsInStock" : 14, + "UnitsOnOrder" : 0, + "ReorderLevel" : 0, + "Discontinued" : false, + "Category" : { + "CategoryID" : 4, + "CategoryName" : "Dairy Products", + "Description" : "Cheeses" + } +}, { + "ProductID" : 73, + "ProductName" : "Röd Kaviar", + "SupplierID" : 17, + "CategoryID" : 8, + "QuantityPerUnit" : "24 - 150 g jars", + "UnitPrice" : 15.0000, + "UnitsInStock" : 101, + "UnitsOnOrder" : 0, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 8, + "CategoryName" : "Seafood", + "Description" : "Seaweed and fish" + } +}, { + "ProductID" : 74, + "ProductName" : "Longlife Tofu", + "SupplierID" : 4, + "CategoryID" : 7, + "QuantityPerUnit" : "5 kg pkg.", + "UnitPrice" : 10.0000, + "UnitsInStock" : 4, + "UnitsOnOrder" : 20, + "ReorderLevel" : 5, + "Discontinued" : false, + "Category" : { + "CategoryID" : 7, + "CategoryName" : "Produce", + "Description" : "Dried fruit and bean curd" + } +}, { + "ProductID" : 75, + "ProductName" : "Rhönbräu Klosterbier", + "SupplierID" : 12, + "CategoryID" : 1, + "QuantityPerUnit" : "24 - 0.5 l bottles", + "UnitPrice" : 7.7500, + "UnitsInStock" : 125, + "UnitsOnOrder" : 0, + "ReorderLevel" : 25, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 76, + "ProductName" : "Lakkalikööri", + "SupplierID" : 23, + "CategoryID" : 1, + "QuantityPerUnit" : "500 ml", + "UnitPrice" : 18.0000, + "UnitsInStock" : 57, + "UnitsOnOrder" : 0, + "ReorderLevel" : 20, + "Discontinued" : false, + "Category" : { + "CategoryID" : 1, + "CategoryName" : "Beverages", + "Description" : "Soft drinks, coffees, teas, beers, and ales" + } +}, { + "ProductID" : 77, + "ProductName" : "Original Frankfurter grüne Soße", + "SupplierID" : 12, + "CategoryID" : 2, + "QuantityPerUnit" : "12 boxes", + "UnitPrice" : 13.0000, + "UnitsInStock" : 32, + "UnitsOnOrder" : 0, + "ReorderLevel" : 15, + "Discontinued" : false, + "Category" : { + "CategoryID" : 2, + "CategoryName" : "Condiments", + "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings" + } +}] diff --git a/vue-options-api-demos/tooltip/svg/main.js b/vue-options-api-demos/tooltip/svg/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/svg/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/svg/main.vue b/vue-options-api-demos/tooltip/svg/main.vue new file mode 100644 index 00000000..f2aa8650 --- /dev/null +++ b/vue-options-api-demos/tooltip/svg/main.vue @@ -0,0 +1,303 @@ + + + diff --git a/vue-options-api-demos/tooltip/templates/main.js b/vue-options-api-demos/tooltip/templates/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/tooltip/templates/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/tooltip/templates/main.vue b/vue-options-api-demos/tooltip/templates/main.vue new file mode 100644 index 00000000..e4af282d --- /dev/null +++ b/vue-options-api-demos/tooltip/templates/main.vue @@ -0,0 +1,70 @@ + + + diff --git a/vue-options-api-demos/treelist/aggregates/data.js b/vue-options-api-demos/treelist/aggregates/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/aggregates/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/aggregates/main.js b/vue-options-api-demos/treelist/aggregates/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/aggregates/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/aggregates/main.vue b/vue-options-api-demos/treelist/aggregates/main.vue new file mode 100644 index 00000000..1124c541 --- /dev/null +++ b/vue-options-api-demos/treelist/aggregates/main.vue @@ -0,0 +1,125 @@ + + + diff --git a/vue-options-api-demos/treelist/cells-custom/data.js b/vue-options-api-demos/treelist/cells-custom/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/cells-custom/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/cells-custom/main.js b/vue-options-api-demos/treelist/cells-custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/cells-custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/cells-custom/main.vue b/vue-options-api-demos/treelist/cells-custom/main.vue new file mode 100644 index 00000000..88a843b2 --- /dev/null +++ b/vue-options-api-demos/treelist/cells-custom/main.vue @@ -0,0 +1,155 @@ + + + diff --git a/vue-options-api-demos/treelist/column-menu/data.js b/vue-options-api-demos/treelist/column-menu/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/column-menu/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/column-menu/main.js b/vue-options-api-demos/treelist/column-menu/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/column-menu/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/column-menu/main.vue b/vue-options-api-demos/treelist/column-menu/main.vue new file mode 100644 index 00000000..1e2829b9 --- /dev/null +++ b/vue-options-api-demos/treelist/column-menu/main.vue @@ -0,0 +1,111 @@ + + + diff --git a/vue-options-api-demos/treelist/column-virtualization/main.js b/vue-options-api-demos/treelist/column-virtualization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/column-virtualization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/column-virtualization/main.vue b/vue-options-api-demos/treelist/column-virtualization/main.vue new file mode 100644 index 00000000..49485595 --- /dev/null +++ b/vue-options-api-demos/treelist/column-virtualization/main.vue @@ -0,0 +1,75 @@ + + + diff --git a/vue-options-api-demos/treelist/column-virtualization/treelist-data.js b/vue-options-api-demos/treelist/column-virtualization/treelist-data.js new file mode 100644 index 00000000..c5ec456c --- /dev/null +++ b/vue-options-api-demos/treelist/column-virtualization/treelist-data.js @@ -0,0 +1,26 @@ +export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) { + const columns = []; + for (let c = 1; c <= numberOfColumns; c++) { + columns.push({ field: 'Field-' + c.toString(), width: columnWidth }); + } + columns[0].expandable = true; + + const data = []; + const reducer = (acc, cur) => { + acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0]; + return acc; + }; + + for (let r = 1; r <= numberOfRows; r++) { + const row = { id: r }; + for (let c = 1; c <= numberOfColumns; c++) { + row['Field-' + c] = 'R' + r + ':C' + c; + } + + const subItem = Object.entries(row).reduce(reducer, {}); + row[subItemsField] = [subItem, { ...subItem }, { ...subItem }]; + data.push(row); + } + + return { columns, data }; +} diff --git a/vue-options-api-demos/treelist/column-width-fixed/data.js b/vue-options-api-demos/treelist/column-width-fixed/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/column-width-fixed/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/column-width-fixed/main.js b/vue-options-api-demos/treelist/column-width-fixed/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/column-width-fixed/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/column-width-fixed/main.vue b/vue-options-api-demos/treelist/column-width-fixed/main.vue new file mode 100644 index 00000000..879c995b --- /dev/null +++ b/vue-options-api-demos/treelist/column-width-fixed/main.vue @@ -0,0 +1,78 @@ + + + diff --git a/vue-options-api-demos/treelist/column-width-percentage/data.js b/vue-options-api-demos/treelist/column-width-percentage/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/column-width-percentage/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/column-width-percentage/main.js b/vue-options-api-demos/treelist/column-width-percentage/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/column-width-percentage/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/column-width-percentage/main.vue b/vue-options-api-demos/treelist/column-width-percentage/main.vue new file mode 100644 index 00000000..740c2df8 --- /dev/null +++ b/vue-options-api-demos/treelist/column-width-percentage/main.vue @@ -0,0 +1,74 @@ + + + diff --git a/vue-options-api-demos/treelist/dragdrop/data.js b/vue-options-api-demos/treelist/dragdrop/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/dragdrop/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/dragdrop/main.js b/vue-options-api-demos/treelist/dragdrop/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/dragdrop/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/dragdrop/main.vue b/vue-options-api-demos/treelist/dragdrop/main.vue new file mode 100644 index 00000000..d5a0b210 --- /dev/null +++ b/vue-options-api-demos/treelist/dragdrop/main.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/editing-external-form/CommandCell.vue b/vue-options-api-demos/treelist/editing-external-form/CommandCell.vue new file mode 100644 index 00000000..da5d81f7 --- /dev/null +++ b/vue-options-api-demos/treelist/editing-external-form/CommandCell.vue @@ -0,0 +1,49 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/editing-external-form/DialogContainer.vue b/vue-options-api-demos/treelist/editing-external-form/DialogContainer.vue new file mode 100644 index 00000000..50401abb --- /dev/null +++ b/vue-options-api-demos/treelist/editing-external-form/DialogContainer.vue @@ -0,0 +1,86 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/editing-external-form/data.js b/vue-options-api-demos/treelist/editing-external-form/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/editing-external-form/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/editing-external-form/main.js b/vue-options-api-demos/treelist/editing-external-form/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/editing-external-form/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/editing-external-form/main.vue b/vue-options-api-demos/treelist/editing-external-form/main.vue new file mode 100644 index 00000000..b11f9055 --- /dev/null +++ b/vue-options-api-demos/treelist/editing-external-form/main.vue @@ -0,0 +1,114 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/editing-in-cell/data.js b/vue-options-api-demos/treelist/editing-in-cell/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/editing-in-cell/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/editing-in-cell/main.js b/vue-options-api-demos/treelist/editing-in-cell/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/editing-in-cell/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/editing-in-cell/main.vue b/vue-options-api-demos/treelist/editing-in-cell/main.vue new file mode 100644 index 00000000..6c14f986 --- /dev/null +++ b/vue-options-api-demos/treelist/editing-in-cell/main.vue @@ -0,0 +1,216 @@ + + + diff --git a/vue-options-api-demos/treelist/editing-inline/CommandCell.vue b/vue-options-api-demos/treelist/editing-inline/CommandCell.vue new file mode 100644 index 00000000..4b7da8ba --- /dev/null +++ b/vue-options-api-demos/treelist/editing-inline/CommandCell.vue @@ -0,0 +1,90 @@ + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/editing-inline/data.js b/vue-options-api-demos/treelist/editing-inline/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/editing-inline/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/editing-inline/main.js b/vue-options-api-demos/treelist/editing-inline/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/editing-inline/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/editing-inline/main.vue b/vue-options-api-demos/treelist/editing-inline/main.vue new file mode 100644 index 00000000..a2b3620e --- /dev/null +++ b/vue-options-api-demos/treelist/editing-inline/main.vue @@ -0,0 +1,191 @@ + + + diff --git a/vue-options-api-demos/treelist/editing-row-click/data.js b/vue-options-api-demos/treelist/editing-row-click/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/editing-row-click/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/editing-row-click/main.js b/vue-options-api-demos/treelist/editing-row-click/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/editing-row-click/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/editing-row-click/main.vue b/vue-options-api-demos/treelist/editing-row-click/main.vue new file mode 100644 index 00000000..8407db5f --- /dev/null +++ b/vue-options-api-demos/treelist/editing-row-click/main.vue @@ -0,0 +1,156 @@ + + + diff --git a/vue-options-api-demos/treelist/excel/basic/data.js b/vue-options-api-demos/treelist/excel/basic/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/excel/basic/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/excel/basic/main.js b/vue-options-api-demos/treelist/excel/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/excel/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/excel/basic/main.vue b/vue-options-api-demos/treelist/excel/basic/main.vue new file mode 100644 index 00000000..2851efe7 --- /dev/null +++ b/vue-options-api-demos/treelist/excel/basic/main.vue @@ -0,0 +1,104 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/excel/customization/data.js b/vue-options-api-demos/treelist/excel/customization/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/excel/customization/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/excel/customization/main.js b/vue-options-api-demos/treelist/excel/customization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/excel/customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/excel/customization/main.vue b/vue-options-api-demos/treelist/excel/customization/main.vue new file mode 100644 index 00000000..1571df77 --- /dev/null +++ b/vue-options-api-demos/treelist/excel/customization/main.vue @@ -0,0 +1,126 @@ + + + diff --git a/vue-options-api-demos/treelist/excel/single-page/data.js b/vue-options-api-demos/treelist/excel/single-page/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/excel/single-page/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/excel/single-page/main.js b/vue-options-api-demos/treelist/excel/single-page/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/excel/single-page/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/excel/single-page/main.vue b/vue-options-api-demos/treelist/excel/single-page/main.vue new file mode 100644 index 00000000..7b7dea10 --- /dev/null +++ b/vue-options-api-demos/treelist/excel/single-page/main.vue @@ -0,0 +1,115 @@ + + + diff --git a/vue-options-api-demos/treelist/filtering-basic/data.js b/vue-options-api-demos/treelist/filtering-basic/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/filtering-basic/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/filtering-basic/main.js b/vue-options-api-demos/treelist/filtering-basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/filtering-basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/filtering-basic/main.vue b/vue-options-api-demos/treelist/filtering-basic/main.vue new file mode 100644 index 00000000..26633445 --- /dev/null +++ b/vue-options-api-demos/treelist/filtering-basic/main.vue @@ -0,0 +1,96 @@ + + + diff --git a/vue-options-api-demos/treelist/filtering-custom/DropDownListFilter.vue b/vue-options-api-demos/treelist/filtering-custom/DropDownListFilter.vue new file mode 100644 index 00000000..0318afcf --- /dev/null +++ b/vue-options-api-demos/treelist/filtering-custom/DropDownListFilter.vue @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/filtering-custom/data.js b/vue-options-api-demos/treelist/filtering-custom/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/filtering-custom/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/filtering-custom/main.js b/vue-options-api-demos/treelist/filtering-custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/filtering-custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/filtering-custom/main.vue b/vue-options-api-demos/treelist/filtering-custom/main.vue new file mode 100644 index 00000000..43fae07b --- /dev/null +++ b/vue-options-api-demos/treelist/filtering-custom/main.vue @@ -0,0 +1,126 @@ + + + diff --git a/vue-options-api-demos/treelist/flat-data/flat-data.js b/vue-options-api-demos/treelist/flat-data/flat-data.js new file mode 100644 index 00000000..6ca1dc52 --- /dev/null +++ b/vue-options-api-demos/treelist/flat-data/flat-data.js @@ -0,0 +1,1093 @@ +const employeesFlat = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2 + }, + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1 + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2 + }, + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5 + }, + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6 + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3 + }, + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2 + }, + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0 + }, + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4 + }, + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4 + }, + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6 + }, + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6 + }, + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + }, + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2 + }, + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + }, + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + }, + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 + }, + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1 + }, + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4 + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 + }, + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0 + }, + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2 + }, + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } +]; + +export default employeesFlat; diff --git a/vue-options-api-demos/treelist/flat-data/main.js b/vue-options-api-demos/treelist/flat-data/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/flat-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/flat-data/main.vue b/vue-options-api-demos/treelist/flat-data/main.vue new file mode 100644 index 00000000..467d9b9f --- /dev/null +++ b/vue-options-api-demos/treelist/flat-data/main.vue @@ -0,0 +1,117 @@ + + + diff --git a/vue-options-api-demos/treelist/get-started/main.js b/vue-options-api-demos/treelist/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/get-started/main.vue b/vue-options-api-demos/treelist/get-started/main.vue new file mode 100644 index 00000000..c1eeaeb6 --- /dev/null +++ b/vue-options-api-demos/treelist/get-started/main.vue @@ -0,0 +1,42 @@ + + + diff --git a/vue-options-api-demos/treelist/get-started/simple-data.js b/vue-options-api-demos/treelist/get-started/simple-data.js new file mode 100644 index 00000000..b35aca00 --- /dev/null +++ b/vue-options-api-demos/treelist/get-started/simple-data.js @@ -0,0 +1,28 @@ +const data = [ + { + id: 1, + name: "Daryl Sweeney", + title: "Chief Executive Officer", + phone: "(555) 924-9726", + managerId: null, + expanded: true, + employees: [ + { + id: 2, + name: "Guy Wooten", + title: "Chief Technical Officer", + phone: "(438) 738-4935", + managerId: 1 + } + ] + }, + { + id: 32, + name: "Buffy Weber", + title: "VP, Engineering", + phone: "(699) 838-6121", + managerId: null + } +]; + +export default data; diff --git a/vue-options-api-demos/treelist/globalization/data.js b/vue-options-api-demos/treelist/globalization/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/globalization/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/globalization/es.json b/vue-options-api-demos/treelist/globalization/es.json new file mode 100644 index 00000000..77768d47 --- /dev/null +++ b/vue-options-api-demos/treelist/globalization/es.json @@ -0,0 +1,44 @@ +{ + "datepicker": { + "toggleCalendar": "Alternar calendario" + }, + "calendar": { + "today": "Hoy" + }, + "dateinput": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "numerictextbox": { + "increment": "Incrementar valor", + "decrement": "Disminuir valor" + }, + "treelist": { + "noRecords": "No hay datos disponibles.", + "filterEqOperator": "Es igual a", + "filterNotEqOperator": "No es igual a", + "filterIsNullOperator": "Es nulo", + "filterIsNotNullOperator": "No es nulo", + "filterIsEmptyOperator": "Está vacío", + "filterIsNotEmptyOperator": "No está vacío", + "filterStartsWithOperator": "Comienza con", + "filterContainsOperator": "Contiene", + "filterNotContainsOperator": "No contiene", + "filterEndsWithOperator": "Termina en", + "filterGteOperator": "Es mayor o igual que", + "filterGtOperator": "Es mayor que", + "filterLteOperator": "Es menor o igual que", + "filterLtOperator": "Es menor o igual que", + "filterIsTrue": "Sí", + "filterIsFalse": "No", + "filterBooleanAll": "(Todas)", + "filterAfterOrEqualOperator": "Es posterior o igual a", + "filterAfterOperator": "Es posterior", + "filterBeforeOperator": "Es anterior", + "filterBeforeOrEqualOperator": "Es anterior o igual a", + "filterFilterButton": "Filtrar", + "filterClearButton": "Limpiar filtros", + "filterAndLogic": "Y", + "filterOrLogic": "O" + } +} diff --git a/vue-options-api-demos/treelist/globalization/main.js b/vue-options-api-demos/treelist/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/globalization/main.vue b/vue-options-api-demos/treelist/globalization/main.vue new file mode 100644 index 00000000..844af672 --- /dev/null +++ b/vue-options-api-demos/treelist/globalization/main.vue @@ -0,0 +1,99 @@ + + + diff --git a/vue-options-api-demos/treelist/keyboard-navigation/data.js b/vue-options-api-demos/treelist/keyboard-navigation/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/keyboard-navigation/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/keyboard-navigation/main.js b/vue-options-api-demos/treelist/keyboard-navigation/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/keyboard-navigation/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/keyboard-navigation/main.vue b/vue-options-api-demos/treelist/keyboard-navigation/main.vue new file mode 100644 index 00000000..6d92b799 --- /dev/null +++ b/vue-options-api-demos/treelist/keyboard-navigation/main.vue @@ -0,0 +1,109 @@ + + + diff --git a/vue-options-api-demos/treelist/locked/data.js b/vue-options-api-demos/treelist/locked/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/locked/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/locked/main.js b/vue-options-api-demos/treelist/locked/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/locked/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/locked/main.vue b/vue-options-api-demos/treelist/locked/main.vue new file mode 100644 index 00000000..98818979 --- /dev/null +++ b/vue-options-api-demos/treelist/locked/main.vue @@ -0,0 +1,103 @@ + + + diff --git a/vue-options-api-demos/treelist/multi-column-headers/data.js b/vue-options-api-demos/treelist/multi-column-headers/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/multi-column-headers/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/multi-column-headers/main.js b/vue-options-api-demos/treelist/multi-column-headers/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/multi-column-headers/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/multi-column-headers/main.vue b/vue-options-api-demos/treelist/multi-column-headers/main.vue new file mode 100644 index 00000000..de5c3f75 --- /dev/null +++ b/vue-options-api-demos/treelist/multi-column-headers/main.vue @@ -0,0 +1,107 @@ + + + diff --git a/vue-options-api-demos/treelist/overview/data.js b/vue-options-api-demos/treelist/overview/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/overview/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/overview/main.js b/vue-options-api-demos/treelist/overview/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/overview/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/overview/main.vue b/vue-options-api-demos/treelist/overview/main.vue new file mode 100644 index 00000000..01b096e9 --- /dev/null +++ b/vue-options-api-demos/treelist/overview/main.vue @@ -0,0 +1,108 @@ + + + diff --git a/vue-options-api-demos/treelist/paging/main.js b/vue-options-api-demos/treelist/paging/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/paging/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/paging/main.vue b/vue-options-api-demos/treelist/paging/main.vue new file mode 100644 index 00000000..bb948861 --- /dev/null +++ b/vue-options-api-demos/treelist/paging/main.vue @@ -0,0 +1,73 @@ + + + diff --git a/vue-options-api-demos/treelist/paging/treelist-data.js b/vue-options-api-demos/treelist/paging/treelist-data.js new file mode 100644 index 00000000..c5ec456c --- /dev/null +++ b/vue-options-api-demos/treelist/paging/treelist-data.js @@ -0,0 +1,26 @@ +export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) { + const columns = []; + for (let c = 1; c <= numberOfColumns; c++) { + columns.push({ field: 'Field-' + c.toString(), width: columnWidth }); + } + columns[0].expandable = true; + + const data = []; + const reducer = (acc, cur) => { + acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0]; + return acc; + }; + + for (let r = 1; r <= numberOfRows; r++) { + const row = { id: r }; + for (let c = 1; c <= numberOfColumns; c++) { + row['Field-' + c] = 'R' + r + ':C' + c; + } + + const subItem = Object.entries(row).reduce(reducer, {}); + row[subItemsField] = [subItem, { ...subItem }, { ...subItem }]; + data.push(row); + } + + return { columns, data }; +} diff --git a/vue-options-api-demos/treelist/pdf/all-data-expanded/data.js b/vue-options-api-demos/treelist/pdf/all-data-expanded/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/all-data-expanded/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/pdf/all-data-expanded/main.js b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/pdf/all-data-expanded/main.vue b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.vue new file mode 100644 index 00000000..62196fd1 --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.vue @@ -0,0 +1,128 @@ + + + diff --git a/vue-options-api-demos/treelist/pdf/basic/data.js b/vue-options-api-demos/treelist/pdf/basic/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/basic/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/pdf/basic/main.js b/vue-options-api-demos/treelist/pdf/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/pdf/basic/main.vue b/vue-options-api-demos/treelist/pdf/basic/main.vue new file mode 100644 index 00000000..bf299a58 --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/basic/main.vue @@ -0,0 +1,114 @@ + + + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/pdf/columns-modification/data.js b/vue-options-api-demos/treelist/pdf/columns-modification/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/columns-modification/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/pdf/columns-modification/main.js b/vue-options-api-demos/treelist/pdf/columns-modification/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/columns-modification/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/pdf/columns-modification/main.vue b/vue-options-api-demos/treelist/pdf/columns-modification/main.vue new file mode 100644 index 00000000..19a68f0a --- /dev/null +++ b/vue-options-api-demos/treelist/pdf/columns-modification/main.vue @@ -0,0 +1,131 @@ + + + diff --git a/vue-options-api-demos/treelist/reordering/data.js b/vue-options-api-demos/treelist/reordering/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/reordering/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/reordering/main.js b/vue-options-api-demos/treelist/reordering/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/reordering/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/reordering/main.vue b/vue-options-api-demos/treelist/reordering/main.vue new file mode 100644 index 00000000..359914d3 --- /dev/null +++ b/vue-options-api-demos/treelist/reordering/main.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/resizing/data.js b/vue-options-api-demos/treelist/resizing/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/resizing/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/resizing/main.js b/vue-options-api-demos/treelist/resizing/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/resizing/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/resizing/main.vue b/vue-options-api-demos/treelist/resizing/main.vue new file mode 100644 index 00000000..e4c8d3a3 --- /dev/null +++ b/vue-options-api-demos/treelist/resizing/main.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/vue-options-api-demos/treelist/selection-basic/data.js b/vue-options-api-demos/treelist/selection-basic/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/selection-basic/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/selection-basic/main.js b/vue-options-api-demos/treelist/selection-basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/selection-basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/selection-basic/main.vue b/vue-options-api-demos/treelist/selection-basic/main.vue new file mode 100644 index 00000000..6c683fd6 --- /dev/null +++ b/vue-options-api-demos/treelist/selection-basic/main.vue @@ -0,0 +1,130 @@ + + + + diff --git a/vue-options-api-demos/treelist/shared/data.js b/vue-options-api-demos/treelist/shared/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/shared/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/shared/flat-data.js b/vue-options-api-demos/treelist/shared/flat-data.js new file mode 100644 index 00000000..6ca1dc52 --- /dev/null +++ b/vue-options-api-demos/treelist/shared/flat-data.js @@ -0,0 +1,1093 @@ +const employeesFlat = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2 + }, + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1 + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2 + }, + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5 + }, + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6 + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3 + }, + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2 + }, + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0 + }, + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4 + }, + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4 + }, + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6 + }, + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6 + }, + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + }, + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2 + }, + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + }, + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + }, + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 + }, + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1 + }, + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4 + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4 + }, + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0 + }, + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2 + }, + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } +]; + +export default employeesFlat; diff --git a/vue-options-api-demos/treelist/shared/pager.tsx b/vue-options-api-demos/treelist/shared/pager.tsx new file mode 100644 index 00000000..c6673be3 --- /dev/null +++ b/vue-options-api-demos/treelist/shared/pager.tsx @@ -0,0 +1,14 @@ + +import { Pager, PagerProps } from '@progress/kendo-vue-data-tools'; + +export const TreeListPager = (props: PagerProps) => { + return ( + + ); +} diff --git a/vue-options-api-demos/treelist/shared/simple-data.js b/vue-options-api-demos/treelist/shared/simple-data.js new file mode 100644 index 00000000..b35aca00 --- /dev/null +++ b/vue-options-api-demos/treelist/shared/simple-data.js @@ -0,0 +1,28 @@ +const data = [ + { + id: 1, + name: "Daryl Sweeney", + title: "Chief Executive Officer", + phone: "(555) 924-9726", + managerId: null, + expanded: true, + employees: [ + { + id: 2, + name: "Guy Wooten", + title: "Chief Technical Officer", + phone: "(438) 738-4935", + managerId: 1 + } + ] + }, + { + id: 32, + name: "Buffy Weber", + title: "VP, Engineering", + phone: "(699) 838-6121", + managerId: null + } +]; + +export default data; diff --git a/vue-options-api-demos/treelist/shared/treelist-data.js b/vue-options-api-demos/treelist/shared/treelist-data.js new file mode 100644 index 00000000..c5ec456c --- /dev/null +++ b/vue-options-api-demos/treelist/shared/treelist-data.js @@ -0,0 +1,26 @@ +export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) { + const columns = []; + for (let c = 1; c <= numberOfColumns; c++) { + columns.push({ field: 'Field-' + c.toString(), width: columnWidth }); + } + columns[0].expandable = true; + + const data = []; + const reducer = (acc, cur) => { + acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0]; + return acc; + }; + + for (let r = 1; r <= numberOfRows; r++) { + const row = { id: r }; + for (let c = 1; c <= numberOfColumns; c++) { + row['Field-' + c] = 'R' + r + ':C' + c; + } + + const subItem = Object.entries(row).reduce(reducer, {}); + row[subItemsField] = [subItem, { ...subItem }, { ...subItem }]; + data.push(row); + } + + return { columns, data }; +} diff --git a/vue-options-api-demos/treelist/sorting-basic/data.js b/vue-options-api-demos/treelist/sorting-basic/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/sorting-basic/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/sorting-basic/main.js b/vue-options-api-demos/treelist/sorting-basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/sorting-basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/sorting-basic/main.vue b/vue-options-api-demos/treelist/sorting-basic/main.vue new file mode 100644 index 00000000..d8693252 --- /dev/null +++ b/vue-options-api-demos/treelist/sorting-basic/main.vue @@ -0,0 +1,101 @@ + + + diff --git a/vue-options-api-demos/treelist/sorting-customization/data.js b/vue-options-api-demos/treelist/sorting-customization/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/sorting-customization/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/sorting-customization/main.js b/vue-options-api-demos/treelist/sorting-customization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/sorting-customization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/sorting-customization/main.vue b/vue-options-api-demos/treelist/sorting-customization/main.vue new file mode 100644 index 00000000..faa8bb9b --- /dev/null +++ b/vue-options-api-demos/treelist/sorting-customization/main.vue @@ -0,0 +1,129 @@ + + + diff --git a/vue-options-api-demos/treelist/toolbar/data.js b/vue-options-api-demos/treelist/toolbar/data.js new file mode 100644 index 00000000..f66aec4d --- /dev/null +++ b/vue-options-api-demos/treelist/toolbar/data.js @@ -0,0 +1,1150 @@ + +const employees = [ + { + "id": 1, + "name": "Daryl Sweeney", + "reportsTo": null, + "phone": "(555) 924-9726", + "extension": 8253, + "hireDate": new Date(2012, 2, 7), + "fullTime": true, + "position": "CEO", + "timeInPosition": 2, + "employees": [ + { + "id": 2, + "name": "Guy Wooten", + "reportsTo": 1, + "phone": "(438) 738-4935", + "extension": 1155, + "hireDate": new Date(2010, 3, 3), + "fullTime": true, + "position": "Chief Technical Officer", + "timeInPosition": 1, + "employees": [ + { + "id": 32, + "name": "Buffy Weber", + "reportsTo": 2, + "phone": "(699) 838-6121", + "extension": 8933, + "hireDate": new Date(2011, 7, 11), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 11, + "name": "Hyacinth Hood", + "reportsTo": 32, + "phone": "(889) 345-2438", + "extension": 8564, + "hireDate": new Date(2014, 2, 3), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 60, + "name": "Akeem Carr", + "reportsTo": 11, + "phone": "(738) 136-2814", + "extension": 9353, + "hireDate": new Date(2011, 4, 21), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 78, + "name": "Rinah Simon", + "reportsTo": 11, + "phone": "(285) 912-5271", + "extension": 7795, + "hireDate": new Date(2012, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + } + ] + }, + { + "id": 42, + "name": "Gage Daniels", + "reportsTo": 32, + "phone": "(107) 290-6260", + "extension": 896, + "hireDate": new Date(2013, 5, 16), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 5 + }, + { + "id": 43, + "name": "Constance Vazquez", + "reportsTo": 32, + "phone": "(800) 301-1978", + "extension": 5141, + "hireDate": new Date(2011, 6, 7), + "fullTime": true, + "position": "Director, Engineering", + "timeInPosition": 1, + "employees": [ + { + "id": 46, + "name": "Darrel Solis", + "reportsTo": 43, + "phone": "(327) 977-0216", + "extension": 7779, + "hireDate": new Date(2015, 4, 25), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 47, + "name": "Brian Yang", + "reportsTo": 46, + "phone": "(565) 146-5435", + "extension": 3885, + "hireDate": new Date(2012, 9, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 50, + "name": "Lillian Bradshaw", + "reportsTo": 46, + "phone": "(323) 509-3479", + "extension": 5426, + "hireDate": new Date(2014, 5, 10), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 2 + }, + { + "id": 51, + "name": "Christian Palmer", + "reportsTo": 46, + "phone": "(490) 421-8718", + "extension": 3706, + "hireDate": new Date(2012, 12, 27), + "fullTime": false, + "position": "Technical Lead", + "timeInPosition": 1 + }, + { + "id": 55, + "name": "Summer Mosley", + "reportsTo": 46, + "phone": "(784) 962-2301", + "extension": 5492, + "hireDate": new Date(2010, 3, 2), + "fullTime": true, + "position": "QA Engineer", + "timeInPosition": 5 + }, + { + "id": 56, + "name": "Barry Ayers", + "reportsTo": 46, + "phone": "(452) 373-9227", + "extension": 1308, + "hireDate": new Date(2011, 10, 11), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 59, + "name": "Keiko Espinoza", + "reportsTo": 46, + "phone": "(226) 600-5305", + "extension": 9363, + "hireDate": new Date(2011, 9, 18), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 4 + }, + { + "id": 61, + "name": "Candace Pickett", + "reportsTo": 46, + "phone": "(120) 117-7475", + "extension": 5178, + "hireDate": new Date(2010, 5, 6), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + } + ] + }, + { + "id": 63, + "name": "Mia Caldwell", + "reportsTo": 43, + "phone": "(848) 636-6470", + "extension": 6368, + "hireDate": new Date(2012, 10, 7), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 65, + "name": "Thomas Terry", + "reportsTo": 63, + "phone": "(764) 831-4248", + "extension": 3574, + "hireDate": new Date(2015, 6, 15), + "fullTime": false, + "position": "Senior Enterprise Support Officer", + "timeInPosition": 2 + }, + { + "id": 67, + "name": "Ruth Downs", + "reportsTo": 63, + "phone": "(138) 991-1440", + "extension": 8067, + "hireDate": new Date(2013, 7, 13), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 70, + "name": "Yasir Wilder", + "reportsTo": 63, + "phone": "(759) 701-8665", + "extension": 8350, + "hireDate": new Date(2010, 11, 8), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 3 + }, + { + "id": 71, + "name": "Flavia Short", + "reportsTo": 63, + "phone": "(370) 133-9238", + "extension": 6390, + "hireDate": new Date(2013, 2, 21), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 0 + }, + { + "id": 74, + "name": "Aaron Roach", + "reportsTo": 63, + "phone": "(958) 717-9230", + "extension": 4899, + "hireDate": new Date(2011, 7, 30), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 75, + "name": "Eric Russell", + "reportsTo": 63, + "phone": "(516) 575-8505", + "extension": 2224, + "hireDate": new Date(2012, 10, 28), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 76, + "name": "Cheyenne Olson", + "reportsTo": 63, + "phone": "(241) 645-0257", + "extension": 9181, + "hireDate": new Date(2015, 5, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 77, + "name": "Shaine Avila", + "reportsTo": 63, + "phone": "(844) 435-1360", + "extension": 3374, + "hireDate": new Date(2010, 1, 31), + "fullTime": true, + "position": "UI Designer", + "timeInPosition": 5 + }, + { + "id": 81, + "name": "Chantale Long", + "reportsTo": 63, + "phone": "(252) 419-6891", + "extension": 7868, + "hireDate": new Date(2010, 6, 17), + "fullTime": true, + "position": "Senior QA Enginner", + "timeInPosition": 1 + }, + { + "id": 83, + "name": "Dane Cruz", + "reportsTo": 63, + "phone": "(946) 701-6165", + "extension": 3828, + "hireDate": new Date(2014, 10, 8), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 2 + }, + { + "id": 84, + "name": "Regan Patterson", + "reportsTo": 63, + "phone": "(265) 946-1765", + "extension": 6955, + "hireDate": new Date(2012, 3, 1), + "fullTime": true, + "position": "Technical Writer", + "timeInPosition": 6 + }, + { + "id": 85, + "name": "Drew Mckay", + "reportsTo": 63, + "phone": "(327) 293-0162", + "extension": 6904, + "hireDate": new Date(2011, 3, 25), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 88, + "name": "Bevis Miller", + "reportsTo": 63, + "phone": "(525) 557-0169", + "extension": 6978, + "hireDate": new Date(2011, 4, 19), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 5 + }, + { + "id": 89, + "name": "Bruce Mccarty", + "reportsTo": 63, + "phone": "(936) 777-8730", + "extension": 6552, + "hireDate": new Date(2014, 3, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 5 + } + ] + }, + { + "id": 90, + "name": "Ocean Blair", + "reportsTo": 43, + "phone": "(343) 586-6614", + "extension": 1424, + "hireDate": new Date(2011, 4, 27), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 2, + "employees": [ + { + "id": 91, + "name": "Guinevere Osborn", + "reportsTo": 90, + "phone": "(424) 741-0006", + "extension": 3166, + "hireDate": new Date(2014, 11, 19), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 3 + }, + { + "id": 92, + "name": "Olga Strong", + "reportsTo": 90, + "phone": "(949) 417-1168", + "extension": 4568, + "hireDate": new Date(2015, 5, 28), + "fullTime": true, + "position": "Graphic Designer", + "timeInPosition": 4 + }, + { + "id": 93, + "name": "Robert Orr", + "reportsTo": 90, + "phone": "(977) 341-3721", + "extension": 9241, + "hireDate": new Date(2012, 8, 20), + "fullTime": false, + "position": "Support Officer", + "timeInPosition": 6 + }, + { + "id": 95, + "name": "Odette Sears", + "reportsTo": 90, + "phone": "(264) 818-6576", + "extension": 1914, + "hireDate": new Date(2013, 7, 5), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 45, + "name": "Zelda Medina", + "reportsTo": 32, + "phone": "(563) 359-6023", + "extension": 2600, + "hireDate": new Date(2012, 11, 6), + "fullTime": true, + "position": "QA Architect", + "timeInPosition": 2 + } + ] + }, + { + "id": 52, + "name": "Skyler Cleveland", + "reportsTo": 2, + "phone": "(217) 280-5300", + "extension": 9655, + "hireDate": new Date(2014, 11, 10), + "fullTime": true, + "position": "VP, Engineering", + "timeInPosition": 2, + "employees": [ + { + "id": 40, + "name": "Karleigh Garza", + "reportsTo": 52, + "phone": "(370) 983-8796", + "extension": 4044, + "hireDate": new Date(2014, 3, 10), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 1, + "employees": [ + { + "id": 49, + "name": "Elmo Tyson", + "reportsTo": 40, + "phone": "(344) 496-9555", + "extension": 6950, + "hireDate": new Date(2014, 9, 18), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 4 + }, + { + "id": 72, + "name": "Stacey Lynn", + "reportsTo": 40, + "phone": "(140) 772-7509", + "extension": 8396, + "hireDate": new Date(2014, 7, 31), + "fullTime": false, + "position": "QA Engineer", + "timeInPosition": 1, + "employees": [ + { + "id": 80, + "name": "Meredith Parrish", + "reportsTo": 72, + "phone": "(714) 284-2408", + "extension": 7675, + "hireDate": new Date(2012, 11, 13), + "fullTime": true, + "position": "Junior QA Engineer", + "timeInPosition": 6 + } + ] + }, + { + "id": 96, + "name": "Cassady Whitley", + "reportsTo": 40, + "phone": "(996) 587-8405", + "extension": 780, + "hireDate": new Date(2013, 5, 7), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 5 + }, + { + "id": 97, + "name": "Haviva Campbell", + "reportsTo": 40, + "phone": "(263) 887-4689", + "extension": 2808, + "hireDate": new Date(2013, 3, 5), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 2 + }, + { + "id": 98, + "name": "Cameron Ayers", + "reportsTo": 40, + "phone": "(470) 709-8030", + "extension": 2893, + "hireDate": new Date(2013, 8, 28), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 3 + }, + { + "id": 99, + "name": "Martha Sargent", + "reportsTo": 40, + "phone": "(587) 812-4418", + "extension": 5099, + "hireDate": new Date(2014, 2, 27), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 3 + }, + { + "id": 100, + "name": "Darrel Kinney", + "reportsTo": 40, + "phone": "(888) 483-9606", + "extension": 4779, + "hireDate": new Date(2014, 3, 24), + "fullTime": false, + "position": "Graphic Designer", + "timeInPosition": 1 + } + ] + }, + { + "id": 54, + "name": "Kuame Frye", + "reportsTo": 52, + "phone": "(360) 721-5886", + "extension": 2730, + "hireDate": new Date(2010, 11, 17), + "fullTime": true, + "position": "Software Architect", + "timeInPosition": 1, + "employees": [ + { + "id": 64, + "name": "Ori Wynn", + "reportsTo": 54, + "phone": "(366) 342-0166", + "extension": 7252, + "hireDate": new Date(2015, 6, 21), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 0, + "employees": [ + { + "id": 6, + "name": "Moses Duncan", + "reportsTo": 64, + "phone": "(421) 611-4814", + "extension": 669, + "hireDate": new Date(2010, 5, 24), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 12, + "name": "Jamalia Wallace", + "reportsTo": 64, + "phone": "(611) 391-8016", + "extension": 1952, + "hireDate": new Date(2011, 9, 8), + "fullTime": true, + "position": "Junior Designer", + "timeInPosition": 3 + }, + { + "id": 62, + "name": "Palmer Gregory", + "reportsTo": 64, + "phone": "(360) 430-2505", + "extension": 4337, + "hireDate": new Date(2014, 8, 30), + "fullTime": true, + "position": "Designer", + "timeInPosition": 4 + }, + { + "id": 68, + "name": "Mallory Gilliam", + "reportsTo": 64, + "phone": "(878) 423-2971", + "extension": 1341, + "hireDate": new Date(2014, 7, 24), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 1 + }, + { + "id": 73, + "name": "Ima Hughes", + "reportsTo": 64, + "phone": "(905) 485-8001", + "extension": 1273, + "hireDate": new Date(2013, 6, 3), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + }, + { + "id": 79, + "name": "Duncan Mathews", + "reportsTo": 64, + "phone": "(790) 971-9709", + "extension": 4573, + "hireDate": new Date(2011, 8, 21), + "fullTime": false, + "position": "Software Developer", + "timeInPosition": 3 + } + ] + } + ] + }, + { + "id": 69, + "name": "Sierra Beasley", + "reportsTo": 52, + "phone": "(271) 953-1968", + "extension": 3324, + "hireDate": new Date(2011, 4, 2), + "fullTime": true, + "position": "Team Lead", + "timeInPosition": 3, + "employees": [ + { + "id": 38, + "name": "Elton Tucker", + "reportsTo": 69, + "phone": "(988) 930-9331", + "extension": 9216, + "hireDate": new Date(2015, 6, 4), + "fullTime": true, + "position": "Support Officer", + "timeInPosition": 1 + }, + { + "id": 39, + "name": "Iona Brennan", + "reportsTo": 69, + "phone": "(356) 563-0600", + "extension": 5634, + "hireDate": new Date(2010, 9, 23), + "fullTime": true, + "position": "Junior Support Officer", + "timeInPosition": 4 + }, + { + "id": 53, + "name": "Paul Campos", + "reportsTo": 69, + "phone": "(899) 205-1689", + "extension": 8586, + "hireDate": new Date(2011, 3, 17), + "fullTime": true, + "position": "Interaction Designer", + "timeInPosition": 4, + "employees": [ + { + "id": 66, + "name": "Gloria Freeman", + "reportsTo": 53, + "phone": "(344) 950-9168", + "extension": 4738, + "hireDate": new Date(2013, 5, 6), + "fullTime": true, + "position": "Junior Interaction Designer", + "timeInPosition": 0 + } + ] + }, + { + "id": 57, + "name": "Alyssa Hansen", + "reportsTo": 69, + "phone": "(548) 925-4799", + "extension": 4716, + "hireDate": new Date(2011, 1, 19), + "fullTime": true, + "position": "Junior Software Developer", + "timeInPosition": 6 + }, + { + "id": 82, + "name": "Yael Walters", + "reportsTo": 69, + "phone": "(311) 489-8191", + "extension": 6520, + "hireDate": new Date(2013, 7, 4), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 6 + }, + { + "id": 87, + "name": "Dahlia Hunt", + "reportsTo": 69, + "phone": "(720) 339-5202", + "extension": 3690, + "hireDate": new Date(2011, 3, 26), + "fullTime": true, + "position": "Senior Software Developer", + "timeInPosition": 4 + }, + { + "id": 94, + "name": "Adria Stanley", + "reportsTo": 69, + "phone": "(536) 357-6391", + "extension": 3374, + "hireDate": new Date(2014, 7, 26), + "fullTime": true, + "position": "Software Developer", + "timeInPosition": 0 + } + ] + } + ] + } + ] + }, + { + "id": 3, + "name": "Priscilla Frank", + "reportsTo": 1, + "phone": "(278) 927-2684", + "extension": 4183, + "hireDate": new Date(2014, 11, 30), + "fullTime": true, + "position": "Chief Product Officer", + "timeInPosition": 2, + "employees": [ + { + "id": 4, + "name": "Ursula Holmes", + "reportsTo": 3, + "phone": "(302) 760-2034", + "extension": 2226, + "hireDate": new Date(2011, 6, 6), + "fullTime": true, + "position": "EVP, Product Strategy", + "timeInPosition": 4 + }, + { + "id": 24, + "name": "Melvin Carrillo", + "reportsTo": 3, + "phone": "(348) 933-5167", + "extension": 2482, + "hireDate": new Date(2014, 7, 21), + "fullTime": true, + "position": "Director, Developer Relations", + "timeInPosition": 6, + "employees": [ + { + "id": 29, + "name": "Martha Chavez", + "reportsTo": 24, + "phone": "(860) 754-3464", + "extension": 4531, + "hireDate": new Date(2013, 3, 12), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 30, + "name": "Oren Fox", + "reportsTo": 24, + "phone": "(572) 414-3299", + "extension": 4849, + "hireDate": new Date(2013, 5, 14), + "fullTime": false, + "position": "Developer Advocate", + "timeInPosition": 0 + }, + { + "id": 41, + "name": "Amos Barr", + "reportsTo": 24, + "phone": "(470) 381-3718", + "extension": 7643, + "hireDate": new Date(2010, 3, 9), + "fullTime": true, + "position": "Developer Advocate", + "timeInPosition": 2 + } + ] + } + ] + }, + { + "id": 5, + "name": "Anika Vega", + "reportsTo": 1, + "phone": "(910) 714-1802", + "extension": 6353, + "hireDate": new Date(2010, 2, 25), + "fullTime": true, + "position": "Chief Process Officer", + "timeInPosition": 5, + "employees": [ + { + "id": 10, + "name": "Vernon Ballard", + "reportsTo": 5, + "phone": "(702) 185-8890", + "extension": 9242, + "hireDate": new Date(2015, 6, 26), + "fullTime": true, + "position": "Director Facilities", + "timeInPosition": 2, + "employees": [ + { + "id": 16, + "name": "Ali Guy", + "reportsTo": 10, + "phone": "(429) 912-6578", + "extension": 2225, + "hireDate": new Date(2014, 6, 29), + "fullTime": true, + "position": "Operations Manager", + "timeInPosition": 4, + "employees": [ + { + "id": 23, + "name": "Bruce Reilly", + "reportsTo": 16, + "phone": "(995) 243-7302", + "extension": 4815, + "hireDate": new Date(2015, 4, 1), + "fullTime": true, + "position": "Head of Security", + "timeInPosition": 1, + "employees": [ + { + "id": 26, + "name": "Rowan Morin", + "reportsTo": 23, + "phone": "(792) 141-4374", + "extension": 1844, + "hireDate": new Date(2015, 7, 30), + "fullTime": true, + "position": "Building Security", + "timeInPosition": 5 + }, + { + "id": 44, + "name": "Benedict Soto", + "reportsTo": 23, + "phone": "(822) 282-5991", + "extension": 6422, + "hireDate": new Date(2012, 6, 1), + "fullTime": false, + "position": "Building Security", + "timeInPosition": 4 + } + ] + }, + { + "id": 48, + "name": "Maryam Rios", + "reportsTo": 16, + "phone": "(673) 764-6720", + "extension": 531, + "hireDate": new Date(2014, 3, 3), + "fullTime": true, + "position": "Team Lead, Personal Assistants", + "timeInPosition": 1, + "employees": [ + { + "id": 58, + "name": "Rose Mcintyre", + "reportsTo": 48, + "phone": "(771) 615-4590", + "extension": 7094, + "hireDate": new Date(2015, 6, 30), + "fullTime": false, + "position": "Personal Assistant", + "timeInPosition": 6 + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 7, + "name": "Nevada Hart", + "reportsTo": 1, + "phone": "(254) 220-1576", + "extension": 6649, + "hireDate": new Date(2015, 8, 17), + "fullTime": true, + "position": "Chief Financial Officer", + "timeInPosition": 6, + "employees": [ + { + "id": 14, + "name": "Zena Sanford", + "reportsTo": 7, + "phone": "(437) 568-8160", + "extension": 4452, + "hireDate": new Date(2010, 11, 30), + "fullTime": true, + "position": "VP, Finance", + "timeInPosition": 4 + }, + { + "id": 15, + "name": "Quinlan Howe", + "reportsTo": 7, + "phone": "(464) 334-9748", + "extension": 8722, + "hireDate": new Date(2011, 6, 9), + "fullTime": false, + "position": "Senior Director, Finance", + "timeInPosition": 0, + "employees": [ + { + "id": 17, + "name": "Indira Lopez", + "reportsTo": 15, + "phone": "(301) 368-0938", + "extension": 8027, + "hireDate": new Date(2013, 8, 18), + "fullTime": true, + "position": "ERP Team Lead", + "timeInPosition": 4, + "employees": [ + { + "id": 18, + "name": "Lareina Lara", + "reportsTo": 17, + "phone": "(233) 457-7482", + "extension": 1996, + "hireDate": new Date(2010, 4, 30), + "fullTime": true, + "position": "ERP Solutions Consultant", + "timeInPosition": 6 + }, + { + "id": 19, + "name": "Maxwell Wise", + "reportsTo": 17, + "phone": "(570) 494-2531", + "extension": 9865, + "hireDate": new Date(2012, 5, 19), + "fullTime": true, + "position": "Systems Engineer", + "timeInPosition": 0 + } + ] + }, + { + "id": 20, + "name": "Hunter Mcbride", + "reportsTo": 15, + "phone": "(409) 442-7016", + "extension": 4284, + "hireDate": new Date(2012, 10, 20), + "fullTime": true, + "position": "Senior Director, Tax", + "timeInPosition": 3 + }, + { + "id": 21, + "name": "Jana Serrano", + "reportsTo": 15, + "phone": "(910) 718-4620", + "extension": 6970, + "hireDate": new Date(2010, 4, 2), + "fullTime": true, + "position": "Financial Planning & Analysis Manager", + "timeInPosition": 2 + }, + { + "id": 22, + "name": "Zachery Shelton", + "reportsTo": 15, + "phone": "(310) 240-8675", + "extension": 4527, + "hireDate": new Date(2011, 11, 23), + "fullTime": false, + "position": "Corporate Finance Controller", + "timeInPosition": 6, + "employees": [ + { + "id": 28, + "name": "Cullen Freeman", + "reportsTo": 22, + "phone": "(136) 554-8814", + "extension": 9861, + "hireDate": new Date(2014, 3, 15), + "fullTime": true, + "position": "Treasurer Accountant", + "timeInPosition": 2 + }, + { + "id": 31, + "name": "Quinn Dean", + "reportsTo": 22, + "phone": "(152) 613-3507", + "extension": 6621, + "hireDate": new Date(2015, 1, 29), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 6 + }, + { + "id": 34, + "name": "Samantha Brady", + "reportsTo": 22, + "phone": "(206) 398-4328", + "extension": 1157, + "hireDate": new Date(2011, 2, 13), + "fullTime": true, + "position": "Accountant", + "timeInPosition": 2, + "employees": [ + { + "id": 35, + "name": "Tamara Green", + "reportsTo": 34, + "phone": "(219) 248-2789", + "extension": 4880, + "hireDate": new Date(2014, 2, 4), + "fullTime": true, + "position": "Junior Accountant", + "timeInPosition": 6 + } + ] + }, + { + "id": 36, + "name": "Olympia Coleman", + "reportsTo": 22, + "phone": "(944) 853-6383", + "extension": 2136, + "hireDate": new Date(2013, 7, 31), + "fullTime": true, + "position": "Collections Manager", + "timeInPosition": 3 + }, + { + "id": 37, + "name": "Breanna Goodwin", + "reportsTo": 22, + "phone": "(379) 988-9630", + "extension": 5898, + "hireDate": new Date(2010, 5, 23), + "fullTime": false, + "position": "Payroll Specialist", + "timeInPosition": 4 + } + ] + }, + { + "id": 27, + "name": "Curran Travis", + "reportsTo": 15, + "phone": "(438) 135-8033", + "extension": 3841, + "hireDate": new Date(2011, 6, 13), + "fullTime": true, + "position": "Finance Controller", + "timeInPosition": 5 + } + ] + } + ] + }, + { + "id": 8, + "name": "Hunter Fry", + "reportsTo": 1, + "phone": "(766) 358-9858", + "extension": 3741, + "hireDate": new Date(2011, 2, 12), + "fullTime": false, + "position": "General Counsel", + "timeInPosition": 3, + "employees": [ + { + "id": 9, + "name": "Kuame Carrillo", + "reportsTo": 8, + "phone": "(192) 383-1305", + "extension": 9228, + "hireDate": new Date(2011, 2, 22), + "fullTime": true, + "position": "Associate General Councel", + "timeInPosition": 0 + }, + { + "id": 13, + "name": "Stacy Todd", + "reportsTo": 8, + "phone": "(925) 286-3327", + "extension": 8565, + "hireDate": new Date(2014, 7, 5), + "fullTime": true, + "position": "Councel", + "timeInPosition": 0 + }, + { + "id": 33, + "name": "Valentine Wyatt", + "reportsTo": 8, + "phone": "(165) 166-6205", + "extension": 3588, + "hireDate": new Date(2015, 5, 21), + "fullTime": true, + "position": "Councel", + "timeInPosition": 5 + }, + { + "id": 86, + "name": "Daniel Mccarthy", + "reportsTo": 8, + "phone": "(624) 483-6206", + "extension": 9112, + "hireDate": new Date(2013, 12, 3), + "fullTime": false, + "position": "Staff Attorney", + "timeInPosition": 0 + } + ] + } + ] + } +]; + +export default employees; diff --git a/vue-options-api-demos/treelist/toolbar/main.js b/vue-options-api-demos/treelist/toolbar/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/toolbar/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/toolbar/main.vue b/vue-options-api-demos/treelist/toolbar/main.vue new file mode 100644 index 00000000..7245f4b7 --- /dev/null +++ b/vue-options-api-demos/treelist/toolbar/main.vue @@ -0,0 +1,126 @@ + + + diff --git a/vue-options-api-demos/treelist/virtual-scroll/main.js b/vue-options-api-demos/treelist/virtual-scroll/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treelist/virtual-scroll/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treelist/virtual-scroll/main.vue b/vue-options-api-demos/treelist/virtual-scroll/main.vue new file mode 100644 index 00000000..eea94b04 --- /dev/null +++ b/vue-options-api-demos/treelist/virtual-scroll/main.vue @@ -0,0 +1,77 @@ + + + diff --git a/vue-options-api-demos/treelist/virtual-scroll/treelist-data.js b/vue-options-api-demos/treelist/virtual-scroll/treelist-data.js new file mode 100644 index 00000000..c5ec456c --- /dev/null +++ b/vue-options-api-demos/treelist/virtual-scroll/treelist-data.js @@ -0,0 +1,26 @@ +export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) { + const columns = []; + for (let c = 1; c <= numberOfColumns; c++) { + columns.push({ field: 'Field-' + c.toString(), width: columnWidth }); + } + columns[0].expandable = true; + + const data = []; + const reducer = (acc, cur) => { + acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0]; + return acc; + }; + + for (let r = 1; r <= numberOfRows; r++) { + const row = { id: r }; + for (let c = 1; c <= numberOfColumns; c++) { + row['Field-' + c] = 'R' + r + ':C' + c; + } + + const subItem = Object.entries(row).reduce(reducer, {}); + row[subItemsField] = [subItem, { ...subItem }, { ...subItem }]; + data.push(row); + } + + return { columns, data }; +} diff --git a/vue-options-api-demos/treeview/appearance/StyleConfigurator.vue b/vue-options-api-demos/treeview/appearance/StyleConfigurator.vue new file mode 100644 index 00000000..aa2b048c --- /dev/null +++ b/vue-options-api-demos/treeview/appearance/StyleConfigurator.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/treeview/appearance/main.js b/vue-options-api-demos/treeview/appearance/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/appearance/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/appearance/main.vue b/vue-options-api-demos/treeview/appearance/main.vue new file mode 100644 index 00000000..4f818459 --- /dev/null +++ b/vue-options-api-demos/treeview/appearance/main.vue @@ -0,0 +1,112 @@ + + + diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.vue new file mode 100644 index 00000000..6b07ac25 --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.vue @@ -0,0 +1,113 @@ + + + diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.vue new file mode 100644 index 00000000..ddfe1e65 --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.vue @@ -0,0 +1,101 @@ + + + diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.vue new file mode 100644 index 00000000..336120e4 --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.vue @@ -0,0 +1,70 @@ + + + diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.vue new file mode 100644 index 00000000..33679c39 --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.vue @@ -0,0 +1,71 @@ + + + diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.vue new file mode 100644 index 00000000..a68b1d55 --- /dev/null +++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.vue @@ -0,0 +1,113 @@ + + + diff --git a/vue-options-api-demos/treeview/custom/main.js b/vue-options-api-demos/treeview/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/custom/main.vue b/vue-options-api-demos/treeview/custom/main.vue new file mode 100644 index 00000000..6fee39f4 --- /dev/null +++ b/vue-options-api-demos/treeview/custom/main.vue @@ -0,0 +1,106 @@ + + + diff --git a/vue-options-api-demos/treeview/data-binding/basic/main.js b/vue-options-api-demos/treeview/data-binding/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/data-binding/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/data-binding/basic/main.vue b/vue-options-api-demos/treeview/data-binding/basic/main.vue new file mode 100644 index 00000000..c0203515 --- /dev/null +++ b/vue-options-api-demos/treeview/data-binding/basic/main.vue @@ -0,0 +1,51 @@ + + + diff --git a/vue-options-api-demos/treeview/data-binding/item-fields/main.js b/vue-options-api-demos/treeview/data-binding/item-fields/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/data-binding/item-fields/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/data-binding/item-fields/main.vue b/vue-options-api-demos/treeview/data-binding/item-fields/main.vue new file mode 100644 index 00000000..bacf50da --- /dev/null +++ b/vue-options-api-demos/treeview/data-binding/item-fields/main.vue @@ -0,0 +1,50 @@ + + + diff --git a/vue-options-api-demos/treeview/data-binding/remote-data/main.js b/vue-options-api-demos/treeview/data-binding/remote-data/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/data-binding/remote-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/data-binding/remote-data/main.vue b/vue-options-api-demos/treeview/data-binding/remote-data/main.vue new file mode 100644 index 00000000..3c7589f6 --- /dev/null +++ b/vue-options-api-demos/treeview/data-binding/remote-data/main.vue @@ -0,0 +1,68 @@ + + + diff --git a/vue-options-api-demos/treeview/data-reload/main.js b/vue-options-api-demos/treeview/data-reload/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/data-reload/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/data-reload/main.vue b/vue-options-api-demos/treeview/data-reload/main.vue new file mode 100644 index 00000000..95853129 --- /dev/null +++ b/vue-options-api-demos/treeview/data-reload/main.vue @@ -0,0 +1,12 @@ + + + diff --git a/vue-options-api-demos/treeview/drag/multiple/main.js b/vue-options-api-demos/treeview/drag/multiple/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/drag/multiple/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/drag/multiple/main.vue b/vue-options-api-demos/treeview/drag/multiple/main.vue new file mode 100644 index 00000000..eef742b2 --- /dev/null +++ b/vue-options-api-demos/treeview/drag/multiple/main.vue @@ -0,0 +1,191 @@ + + + diff --git a/vue-options-api-demos/treeview/drag/single/main.js b/vue-options-api-demos/treeview/drag/single/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/drag/single/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/drag/single/main.vue b/vue-options-api-demos/treeview/drag/single/main.vue new file mode 100644 index 00000000..4ed58adf --- /dev/null +++ b/vue-options-api-demos/treeview/drag/single/main.vue @@ -0,0 +1,167 @@ + + + diff --git a/vue-options-api-demos/treeview/events/drag/Logger.vue b/vue-options-api-demos/treeview/events/drag/Logger.vue new file mode 100644 index 00000000..7d9e1695 --- /dev/null +++ b/vue-options-api-demos/treeview/events/drag/Logger.vue @@ -0,0 +1,45 @@ + + + + diff --git a/vue-options-api-demos/treeview/events/drag/main.js b/vue-options-api-demos/treeview/events/drag/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/events/drag/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/events/drag/main.vue b/vue-options-api-demos/treeview/events/drag/main.vue new file mode 100644 index 00000000..a4ff0afa --- /dev/null +++ b/vue-options-api-demos/treeview/events/drag/main.vue @@ -0,0 +1,190 @@ + + + diff --git a/vue-options-api-demos/treeview/events/select-check/Logger.vue b/vue-options-api-demos/treeview/events/select-check/Logger.vue new file mode 100644 index 00000000..7d9e1695 --- /dev/null +++ b/vue-options-api-demos/treeview/events/select-check/Logger.vue @@ -0,0 +1,45 @@ + + + + diff --git a/vue-options-api-demos/treeview/events/select-check/main.js b/vue-options-api-demos/treeview/events/select-check/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/events/select-check/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/events/select-check/main.vue b/vue-options-api-demos/treeview/events/select-check/main.vue new file mode 100644 index 00000000..e0449fe0 --- /dev/null +++ b/vue-options-api-demos/treeview/events/select-check/main.vue @@ -0,0 +1,121 @@ + + + diff --git a/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.js b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.vue b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.vue new file mode 100644 index 00000000..835b8e34 --- /dev/null +++ b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.vue @@ -0,0 +1,101 @@ + + + diff --git a/vue-options-api-demos/treeview/expand/items-expanded-all/main.js b/vue-options-api-demos/treeview/expand/items-expanded-all/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/expand/items-expanded-all/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/expand/items-expanded-all/main.vue b/vue-options-api-demos/treeview/expand/items-expanded-all/main.vue new file mode 100644 index 00000000..cd8f941d --- /dev/null +++ b/vue-options-api-demos/treeview/expand/items-expanded-all/main.vue @@ -0,0 +1,132 @@ + + + diff --git a/vue-options-api-demos/treeview/expand/items-expanded-directly/main.js b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/expand/items-expanded-directly/main.vue b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.vue new file mode 100644 index 00000000..68e84347 --- /dev/null +++ b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.js b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.vue b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.vue new file mode 100644 index 00000000..27c3ce05 --- /dev/null +++ b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.vue @@ -0,0 +1,66 @@ + + + diff --git a/vue-options-api-demos/treeview/get-started/main.js b/vue-options-api-demos/treeview/get-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/get-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/get-started/main.vue b/vue-options-api-demos/treeview/get-started/main.vue new file mode 100644 index 00000000..42c6a121 --- /dev/null +++ b/vue-options-api-demos/treeview/get-started/main.vue @@ -0,0 +1,51 @@ + + + diff --git a/vue-options-api-demos/treeview/keyboard/main.js b/vue-options-api-demos/treeview/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/keyboard/main.vue b/vue-options-api-demos/treeview/keyboard/main.vue new file mode 100644 index 00000000..cfa9b304 --- /dev/null +++ b/vue-options-api-demos/treeview/keyboard/main.vue @@ -0,0 +1,103 @@ + + + diff --git a/vue-options-api-demos/treeview/overview/basic/main.js b/vue-options-api-demos/treeview/overview/basic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/overview/basic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/overview/basic/main.vue b/vue-options-api-demos/treeview/overview/basic/main.vue new file mode 100644 index 00000000..cfa9b304 --- /dev/null +++ b/vue-options-api-demos/treeview/overview/basic/main.vue @@ -0,0 +1,103 @@ + + + diff --git a/vue-options-api-demos/treeview/select/selection-all/main.js b/vue-options-api-demos/treeview/select/selection-all/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/select/selection-all/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/select/selection-all/main.vue b/vue-options-api-demos/treeview/select/selection-all/main.vue new file mode 100644 index 00000000..2e3256f1 --- /dev/null +++ b/vue-options-api-demos/treeview/select/selection-all/main.vue @@ -0,0 +1,91 @@ + + + + diff --git a/vue-options-api-demos/treeview/select/selection-update-helper-function/main.js b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/select/selection-update-helper-function/main.vue b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.vue new file mode 100644 index 00000000..df58f5a9 --- /dev/null +++ b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.vue @@ -0,0 +1,72 @@ + + + diff --git a/vue-options-api-demos/treeview/select/selection-update/main.js b/vue-options-api-demos/treeview/select/selection-update/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/treeview/select/selection-update/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/treeview/select/selection-update/main.vue b/vue-options-api-demos/treeview/select/selection-update/main.vue new file mode 100644 index 00000000..89f492ae --- /dev/null +++ b/vue-options-api-demos/treeview/select/selection-update/main.vue @@ -0,0 +1,61 @@ + + + diff --git a/vue-options-api-demos/upload/action-buttons/main.js b/vue-options-api-demos/upload/action-buttons/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/action-buttons/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/action-buttons/main.vue b/vue-options-api-demos/upload/action-buttons/main.vue new file mode 100644 index 00000000..f8535656 --- /dev/null +++ b/vue-options-api-demos/upload/action-buttons/main.vue @@ -0,0 +1,58 @@ + + + diff --git a/vue-options-api-demos/upload/additional-data/main.js b/vue-options-api-demos/upload/additional-data/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/additional-data/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/additional-data/main.vue b/vue-options-api-demos/upload/additional-data/main.vue new file mode 100644 index 00000000..0fb497b5 --- /dev/null +++ b/vue-options-api-demos/upload/additional-data/main.vue @@ -0,0 +1,31 @@ + + diff --git a/vue-options-api-demos/upload/credentials/main.js b/vue-options-api-demos/upload/credentials/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/credentials/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/credentials/main.vue b/vue-options-api-demos/upload/credentials/main.vue new file mode 100644 index 00000000..742bd021 --- /dev/null +++ b/vue-options-api-demos/upload/credentials/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/upload/custom-complex/CustomList.vue b/vue-options-api-demos/upload/custom-complex/CustomList.vue new file mode 100644 index 00000000..ac7ca35f --- /dev/null +++ b/vue-options-api-demos/upload/custom-complex/CustomList.vue @@ -0,0 +1,41 @@ + + diff --git a/vue-options-api-demos/upload/custom-complex/main.js b/vue-options-api-demos/upload/custom-complex/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/custom-complex/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/custom-complex/main.vue b/vue-options-api-demos/upload/custom-complex/main.vue new file mode 100644 index 00000000..9b2c2b5e --- /dev/null +++ b/vue-options-api-demos/upload/custom-complex/main.vue @@ -0,0 +1,38 @@ + + diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/CustomHint.vue b/vue-options-api-demos/upload/custom-external-drop-zone/CustomHint.vue new file mode 100644 index 00000000..018fab04 --- /dev/null +++ b/vue-options-api-demos/upload/custom-external-drop-zone/CustomHint.vue @@ -0,0 +1,3 @@ + diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/CustomNote.vue b/vue-options-api-demos/upload/custom-external-drop-zone/CustomNote.vue new file mode 100644 index 00000000..45bfc42a --- /dev/null +++ b/vue-options-api-demos/upload/custom-external-drop-zone/CustomNote.vue @@ -0,0 +1,3 @@ + diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/main.js b/vue-options-api-demos/upload/custom-external-drop-zone/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/custom-external-drop-zone/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/main.vue b/vue-options-api-demos/upload/custom-external-drop-zone/main.vue new file mode 100644 index 00000000..4c5dca59 --- /dev/null +++ b/vue-options-api-demos/upload/custom-external-drop-zone/main.vue @@ -0,0 +1,47 @@ + + diff --git a/vue-options-api-demos/upload/custom/CustomList.vue b/vue-options-api-demos/upload/custom/CustomList.vue new file mode 100644 index 00000000..9f80635e --- /dev/null +++ b/vue-options-api-demos/upload/custom/CustomList.vue @@ -0,0 +1,15 @@ + + + diff --git a/vue-options-api-demos/upload/custom/main.js b/vue-options-api-demos/upload/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/custom/main.vue b/vue-options-api-demos/upload/custom/main.vue new file mode 100644 index 00000000..2347a311 --- /dev/null +++ b/vue-options-api-demos/upload/custom/main.vue @@ -0,0 +1,34 @@ + + diff --git a/vue-options-api-demos/upload/disabled/main.js b/vue-options-api-demos/upload/disabled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/disabled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/disabled/main.vue b/vue-options-api-demos/upload/disabled/main.vue new file mode 100644 index 00000000..0c618759 --- /dev/null +++ b/vue-options-api-demos/upload/disabled/main.vue @@ -0,0 +1,37 @@ + + diff --git a/vue-options-api-demos/upload/drag-drop/main.js b/vue-options-api-demos/upload/drag-drop/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/drag-drop/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/drag-drop/main.vue b/vue-options-api-demos/upload/drag-drop/main.vue new file mode 100644 index 00000000..75e6cd6b --- /dev/null +++ b/vue-options-api-demos/upload/drag-drop/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/upload/events/main.js b/vue-options-api-demos/upload/events/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/events/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/events/main.vue b/vue-options-api-demos/upload/events/main.vue new file mode 100644 index 00000000..a5a99f37 --- /dev/null +++ b/vue-options-api-demos/upload/events/main.vue @@ -0,0 +1,102 @@ + + diff --git a/vue-options-api-demos/upload/external-drop-zone/main.js b/vue-options-api-demos/upload/external-drop-zone/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/external-drop-zone/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/external-drop-zone/main.vue b/vue-options-api-demos/upload/external-drop-zone/main.vue new file mode 100644 index 00000000..6ec9bdc3 --- /dev/null +++ b/vue-options-api-demos/upload/external-drop-zone/main.vue @@ -0,0 +1,28 @@ + + diff --git a/vue-options-api-demos/upload/file-processing/automatic/main.js b/vue-options-api-demos/upload/file-processing/automatic/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/file-processing/automatic/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/file-processing/automatic/main.vue b/vue-options-api-demos/upload/file-processing/automatic/main.vue new file mode 100644 index 00000000..954b031e --- /dev/null +++ b/vue-options-api-demos/upload/file-processing/automatic/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/upload/file-processing/batch/main.js b/vue-options-api-demos/upload/file-processing/batch/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/file-processing/batch/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/file-processing/batch/main.vue b/vue-options-api-demos/upload/file-processing/batch/main.vue new file mode 100644 index 00000000..327d52e7 --- /dev/null +++ b/vue-options-api-demos/upload/file-processing/batch/main.vue @@ -0,0 +1,20 @@ + + diff --git a/vue-options-api-demos/upload/file-processing/single/main.js b/vue-options-api-demos/upload/file-processing/single/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/file-processing/single/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/file-processing/single/main.vue b/vue-options-api-demos/upload/file-processing/single/main.vue new file mode 100644 index 00000000..2e0b326e --- /dev/null +++ b/vue-options-api-demos/upload/file-processing/single/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/upload/getting-started/main.js b/vue-options-api-demos/upload/getting-started/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/getting-started/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/getting-started/main.vue b/vue-options-api-demos/upload/getting-started/main.vue new file mode 100644 index 00000000..a0b7f370 --- /dev/null +++ b/vue-options-api-demos/upload/getting-started/main.vue @@ -0,0 +1,122 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/upload/globalization/main.js b/vue-options-api-demos/upload/globalization/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/globalization/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/globalization/main.vue b/vue-options-api-demos/upload/globalization/main.vue new file mode 100644 index 00000000..4bc14a0f --- /dev/null +++ b/vue-options-api-demos/upload/globalization/main.vue @@ -0,0 +1,50 @@ + + diff --git a/vue-options-api-demos/upload/keyboard/main.js b/vue-options-api-demos/upload/keyboard/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/keyboard/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/keyboard/main.vue b/vue-options-api-demos/upload/keyboard/main.vue new file mode 100644 index 00000000..954b031e --- /dev/null +++ b/vue-options-api-demos/upload/keyboard/main.vue @@ -0,0 +1,21 @@ + + diff --git a/vue-options-api-demos/upload/modes/controlled/main.js b/vue-options-api-demos/upload/modes/controlled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/modes/controlled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/modes/controlled/main.vue b/vue-options-api-demos/upload/modes/controlled/main.vue new file mode 100644 index 00000000..fb5534cc --- /dev/null +++ b/vue-options-api-demos/upload/modes/controlled/main.vue @@ -0,0 +1,46 @@ + + diff --git a/vue-options-api-demos/upload/modes/uncontrolled/main.js b/vue-options-api-demos/upload/modes/uncontrolled/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/modes/uncontrolled/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/modes/uncontrolled/main.vue b/vue-options-api-demos/upload/modes/uncontrolled/main.vue new file mode 100644 index 00000000..e1d75197 --- /dev/null +++ b/vue-options-api-demos/upload/modes/uncontrolled/main.vue @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/upload/restrictions/custom/main.js b/vue-options-api-demos/upload/restrictions/custom/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/custom/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/restrictions/custom/main.vue b/vue-options-api-demos/upload/restrictions/custom/main.vue new file mode 100644 index 00000000..ce2d1018 --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/custom/main.vue @@ -0,0 +1,75 @@ + + + \ No newline at end of file diff --git a/vue-options-api-demos/upload/restrictions/extension/main.js b/vue-options-api-demos/upload/restrictions/extension/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/extension/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/restrictions/extension/main.vue b/vue-options-api-demos/upload/restrictions/extension/main.vue new file mode 100644 index 00000000..c4ac2689 --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/extension/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/upload/restrictions/max-file-size/main.js b/vue-options-api-demos/upload/restrictions/max-file-size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/max-file-size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/restrictions/max-file-size/main.vue b/vue-options-api-demos/upload/restrictions/max-file-size/main.vue new file mode 100644 index 00000000..83ca0b52 --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/max-file-size/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/upload/restrictions/min-file-size/main.js b/vue-options-api-demos/upload/restrictions/min-file-size/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/min-file-size/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/restrictions/min-file-size/main.vue b/vue-options-api-demos/upload/restrictions/min-file-size/main.vue new file mode 100644 index 00000000..5963f9f6 --- /dev/null +++ b/vue-options-api-demos/upload/restrictions/min-file-size/main.vue @@ -0,0 +1,22 @@ + + diff --git a/vue-options-api-demos/upload/rtl/main.js b/vue-options-api-demos/upload/rtl/main.js new file mode 100644 index 00000000..be9e20ae --- /dev/null +++ b/vue-options-api-demos/upload/rtl/main.js @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './main.vue' + +createApp(App).mount('#app') diff --git a/vue-options-api-demos/upload/rtl/main.vue b/vue-options-api-demos/upload/rtl/main.vue new file mode 100644 index 00000000..25dd0778 --- /dev/null +++ b/vue-options-api-demos/upload/rtl/main.vue @@ -0,0 +1,21 @@ + +