From d1c58f113d26d62669fa730c6e9ae60429701ac4 Mon Sep 17 00:00:00 2001 From: z00797030 Date: Thu, 13 Jul 2023 15:55:27 +0800 Subject: [PATCH] commit calendardata framework Signed-off-by: z00797030 --- .editorconfig | 524 ++++++++++++++++++ .gitignore | 19 + AppScope/app.json5 | 11 + AppScope/resources/en_US/element/string.json | 8 + AppScope/resources/zh_CN/element/string.json | 8 + LICENSE | 176 ++++++ OAT.xml | 87 +++ README.en.md | 36 -- README.md | 106 ++-- README_zh.md | 77 +++ build-profile.json5 | 60 ++ bundle.json | 37 ++ common/.gitignore | 3 + common/build-profile.json5 | 5 + common/hvigorfile.ts | 3 + common/package.json | 14 + common/src/main/ets/utils/Log.ets | 48 ++ common/src/main/module.json5 | 12 + datamanager/.gitignore | 3 + datamanager/build-profile.json5 | 5 + datamanager/hvigorfile.ts | 3 + datamanager/package.json | 18 + datamanager/src/main/module.json5 | 12 + dataprovider/.gitignore | 3 + dataprovider/build-profile.json5 | 5 + dataprovider/hvigorfile.ts | 3 + dataprovider/package.json | 18 + dataprovider/src/main/module.json5 | 12 + datastructure/.gitignore | 3 + datastructure/build-profile.json5 | 5 + datastructure/hvigorfile.ts | 3 + datastructure/package.json | 14 + datastructure/src/main/module.json5 | 12 + entry/.gitignore | 3 + entry/build-profile.json5 | 11 + entry/hvigorfile.js | 1 + entry/package.json | 17 + entry/proguard-rules.pro | 1 + .../src/main/ets/Application/Application.ets | 59 ++ .../src/main/ets/MainAbility/MainAbility.ets | 54 ++ entry/src/main/ets/pages/index.ets | 29 + entry/src/main/module.json5 | 49 ++ .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/string.json | 16 + entry/src/main/resources/base/media/icon.png | Bin 0 -> 8561 bytes .../resources/base/profile/data_config.json | 23 + .../resources/base/profile/main_pages.json | 5 + figures/architecture.png | Bin 0 -> 10599 bytes figures/build_haps.png | Bin 0 -> 4498 bytes figures/build_output_dir_release.png | Bin 0 -> 8170 bytes figures/calendar_install.png | Bin 0 -> 2487 bytes gradlew | 23 + hvigorfile.js | 1 + package.json | 18 + rrule/.gitignore | 3 + rrule/build-profile.json5 | 5 + rrule/hvigorfile.ts | 3 + rrule/package.json | 16 + rrule/src/main/module.json5 | 12 + signature/OpenHarmony.cer | 29 + signature/OpenHarmony.p12 | Bin 0 -> 8252 bytes signature/calendardata.p7b | Bin 0 -> 3659 bytes .../ac/2414e0c961364455b65852f0a25c9ae3 | 1 + .../ce/0fbd9335b2684b6f989729ef91a537f7 | Bin 0 -> 48 bytes .../fd/0/a3716aae34ff42fc9c59ba058380be54 | 1 + .../fd/1/b58cea655c3a489fac614ad24e5119d7 | 1 + .../fd/2/93b27032ebb94fb3a6ce540e778f5835 | 1 + 67 files changed, 1673 insertions(+), 70 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 AppScope/app.json5 create mode 100644 AppScope/resources/en_US/element/string.json create mode 100644 AppScope/resources/zh_CN/element/string.json create mode 100644 LICENSE create mode 100644 OAT.xml delete mode 100644 README.en.md create mode 100644 README_zh.md create mode 100644 build-profile.json5 create mode 100644 bundle.json create mode 100644 common/.gitignore create mode 100644 common/build-profile.json5 create mode 100644 common/hvigorfile.ts create mode 100644 common/package.json create mode 100644 common/src/main/ets/utils/Log.ets create mode 100644 common/src/main/module.json5 create mode 100644 datamanager/.gitignore create mode 100644 datamanager/build-profile.json5 create mode 100644 datamanager/hvigorfile.ts create mode 100644 datamanager/package.json create mode 100644 datamanager/src/main/module.json5 create mode 100644 dataprovider/.gitignore create mode 100644 dataprovider/build-profile.json5 create mode 100644 dataprovider/hvigorfile.ts create mode 100644 dataprovider/package.json create mode 100644 dataprovider/src/main/module.json5 create mode 100644 datastructure/.gitignore create mode 100644 datastructure/build-profile.json5 create mode 100644 datastructure/hvigorfile.ts create mode 100644 datastructure/package.json create mode 100644 datastructure/src/main/module.json5 create mode 100644 entry/.gitignore create mode 100644 entry/build-profile.json5 create mode 100644 entry/hvigorfile.js create mode 100644 entry/package.json create mode 100644 entry/proguard-rules.pro create mode 100644 entry/src/main/ets/Application/Application.ets create mode 100644 entry/src/main/ets/MainAbility/MainAbility.ets create mode 100644 entry/src/main/ets/pages/index.ets create mode 100644 entry/src/main/module.json5 create mode 100644 entry/src/main/resources/base/element/color.json create mode 100644 entry/src/main/resources/base/element/string.json create mode 100644 entry/src/main/resources/base/media/icon.png create mode 100644 entry/src/main/resources/base/profile/data_config.json create mode 100644 entry/src/main/resources/base/profile/main_pages.json create mode 100644 figures/architecture.png create mode 100644 figures/build_haps.png create mode 100644 figures/build_output_dir_release.png create mode 100644 figures/calendar_install.png create mode 100644 gradlew create mode 100644 hvigorfile.js create mode 100644 package.json create mode 100644 rrule/.gitignore create mode 100644 rrule/build-profile.json5 create mode 100644 rrule/hvigorfile.ts create mode 100644 rrule/package.json create mode 100644 rrule/src/main/module.json5 create mode 100644 signature/OpenHarmony.cer create mode 100644 signature/OpenHarmony.p12 create mode 100644 signature/calendardata.p7b create mode 100644 signature/material/ac/2414e0c961364455b65852f0a25c9ae3 create mode 100644 signature/material/ce/0fbd9335b2684b6f989729ef91a537f7 create mode 100644 signature/material/fd/0/a3716aae34ff42fc9c59ba058380be54 create mode 100644 signature/material/fd/1/b58cea655c3a489fac614ad24e5119d7 create mode 100644 signature/material/fd/2/93b27032ebb94fb3a6ce540e778f5835 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..4fad2fa --- /dev/null +++ b/.editorconfig @@ -0,0 +1,524 @@ +[*] +charset = utf-8 +end_of_line = crlf +indent_size = 2 +indent_style = space +insert_final_newline = false +max_line_length = 120 +tab_width = 2 +ij_continuation_indent_size = 8 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = false +ij_smart_tabs = false +ij_visual_guides = none +ij_wrap_on_typing = false + +[*.css] +ij_css_align_closing_brace_with_properties = false +ij_css_align_values = 1 +ij_css_blank_lines_around_nested = 1 +ij_css_blank_lines_around_top = 1 +ij_css_braces_placement = 1 +ij_css_enforce_on_format = false +ij_css_keep_blank_lines_in_code = 2 +ij_css_keep_indents_on_empty_lines = false +ij_css_keep_single_line_blocks = false +ij_css_quote_marks = 1 +ij_css_space_after_colon = true +ij_css_space_opening_brace = true + +[*.ets] +ij_extendtypescript_align_multiline_array_initializer_expression = false +ij_extendtypescript_align_multiline_for = true +ij_extendtypescript_align_multiline_parameters = true +ij_extendtypescript_align_multiline_ternary_operation = false +ij_extendtypescript_align_union_types = false +ij_extendtypescript_array_initializer_new_line_after_left_brace = false +ij_extendtypescript_array_initializer_right_brace_on_new_line = false +ij_extendtypescript_array_initializer_wrap = off +ij_extendtypescript_assignment_wrap = off +ij_extendtypescript_binary_operation_sign_on_next_line = false +ij_extendtypescript_binary_operation_wrap = off +ij_extendtypescript_blank_lines_after_imports = 1 +ij_extendtypescript_blank_lines_around_class = 1 +ij_extendtypescript_blank_lines_around_component_statement_in_struct = 1 +ij_extendtypescript_blank_lines_around_field = 0 +ij_extendtypescript_blank_lines_around_field_in_interface = 0 +ij_extendtypescript_blank_lines_around_field_in_struct = 1 +ij_extendtypescript_blank_lines_around_function = 1 +ij_extendtypescript_blank_lines_around_method = 1 +ij_extendtypescript_blank_lines_around_method_in_interface = 1 +ij_extendtypescript_block_brace_style = end_of_line +ij_extendtypescript_block_comment_at_first_column = true +ij_extendtypescript_brace_style = 1 +ij_extendtypescript_call_parameters_new_line_after_left_paren = false +ij_extendtypescript_call_parameters_right_paren_on_new_line = false +ij_extendtypescript_call_parameters_wrap = off +ij_extendtypescript_catch_on_new_line = false +ij_extendtypescript_class_brace_style = 1 +ij_extendtypescript_do_while_brace_force = never +ij_extendtypescript_else_on_new_line = false +ij_extendtypescript_extends_keyword_wrap = off +ij_extendtypescript_finally_on_new_line = false +ij_extendtypescript_for_brace_force = never +ij_extendtypescript_for_statement_new_line_after_left_paren = false +ij_extendtypescript_for_statement_right_paren_on_new_line = false +ij_extendtypescript_for_statement_wrap = off +ij_extendtypescript_function_expression_brace_style = 1 +ij_extendtypescript_if_brace_force = never +ij_extendtypescript_indent_case_from_switch = true +ij_extendtypescript_keep_blank_lines_in_code = 2 +ij_extendtypescript_keep_indents_on_empty_lines = false +ij_extendtypescript_keep_line_breaks = true +ij_extendtypescript_label_indent_absolute = false +ij_extendtypescript_label_indent_size = 0 +ij_extendtypescript_line_comment_add_space = false +ij_extendtypescript_line_comment_at_first_column = true +ij_extendtypescript_method_brace_style = end_of_line +ij_extendtypescript_method_call_chain_wrap = on_every_item +ij_extendtypescript_method_parameters_new_line_after_left_paren = false +ij_extendtypescript_method_parameters_right_paren_on_new_line = false +ij_extendtypescript_method_parameters_wrap = off +ij_extendtypescript_parentheses_expression_new_line_after_left_paren = false +ij_extendtypescript_parentheses_expression_right_paren_on_new_line = false +ij_extendtypescript_place_assignment_sign_on_next_line = false +ij_extendtypescript_space_after_colon = true +ij_extendtypescript_space_after_comma = true +ij_extendtypescript_space_after_dots_in_rest_parameter = false +ij_extendtypescript_space_after_quest = true +ij_extendtypescript_space_after_type_colon = true +ij_extendtypescript_space_before_catch_keyword = true +ij_extendtypescript_space_before_catch_left_brace = true +ij_extendtypescript_space_before_catch_parentheses = true +ij_extendtypescript_space_before_class_left_brace = true +ij_extendtypescript_space_before_colon = true +ij_extendtypescript_space_before_comma = false +ij_extendtypescript_space_before_do_left_brace = true +ij_extendtypescript_space_before_else_keyword = true +ij_extendtypescript_space_before_else_left_brace = true +ij_extendtypescript_space_before_finally_keyword = true +ij_extendtypescript_space_before_finally_left_brace = true +ij_extendtypescript_space_before_for_left_brace = true +ij_extendtypescript_space_before_for_parentheses = true +ij_extendtypescript_space_before_for_semicolon = false +ij_extendtypescript_space_before_if_left_brace = true +ij_extendtypescript_space_before_if_parentheses = true +ij_extendtypescript_space_before_method_call_parentheses = false +ij_extendtypescript_space_before_method_left_brace = true +ij_extendtypescript_space_before_method_parentheses = false +ij_extendtypescript_space_before_parent_in_async_arrow_function = true +ij_extendtypescript_space_before_parent_in_function_expression = true +ij_extendtypescript_space_before_quest = true +ij_extendtypescript_space_before_switch_left_brace = true +ij_extendtypescript_space_before_switch_parentheses = true +ij_extendtypescript_space_before_try_left_brace = true +ij_extendtypescript_space_before_type_colon = false +ij_extendtypescript_space_before_while_keyword = true +ij_extendtypescript_space_before_while_left_brace = true +ij_extendtypescript_space_before_while_parentheses = true +ij_extendtypescript_space_other_after_asterisk_generator = true +ij_extendtypescript_space_other_after_dot_dot_dot = false +ij_extendtypescript_space_other_after_key_value_separator = true +ij_extendtypescript_space_other_before_asterisk_generator = false +ij_extendtypescript_space_other_before_key_value_separator = false +ij_extendtypescript_spaces_around_additive_operators = true +ij_extendtypescript_spaces_around_assignment_operators = true +ij_extendtypescript_spaces_around_bitwise_operators = true +ij_extendtypescript_spaces_around_equality_operators = true +ij_extendtypescript_spaces_around_logical_operators = true +ij_extendtypescript_spaces_around_multiplicative_operators = true +ij_extendtypescript_spaces_around_operators_after_unary = false +ij_extendtypescript_spaces_around_operators_arrow_function = true +ij_extendtypescript_spaces_around_operators_before_unary = false +ij_extendtypescript_spaces_around_relational_operators = true +ij_extendtypescript_spaces_around_shift_operators = true +ij_extendtypescript_spaces_around_unary_operator = false +ij_extendtypescript_spaces_within_array_brackets = false +ij_extendtypescript_spaces_within_brackets = false +ij_extendtypescript_spaces_within_catch_parentheses = false +ij_extendtypescript_spaces_within_es6_import_export_braces = true +ij_extendtypescript_spaces_within_for_parentheses = false +ij_extendtypescript_spaces_within_if_parentheses = false +ij_extendtypescript_spaces_within_interpolation_expressions = false +ij_extendtypescript_spaces_within_method_call_parentheses = false +ij_extendtypescript_spaces_within_method_parentheses = false +ij_extendtypescript_spaces_within_object_literal_braces = true +ij_extendtypescript_spaces_within_object_type_braces = true +ij_extendtypescript_spaces_within_parentheses = false +ij_extendtypescript_spaces_within_switch_parentheses = false +ij_extendtypescript_spaces_within_type_assertions = true +ij_extendtypescript_spaces_within_union_types = true +ij_extendtypescript_spaces_within_while_parentheses = false +ij_extendtypescript_special_else_if_treatment = true +ij_extendtypescript_ternary_operation_signs_on_next_line = false +ij_extendtypescript_ternary_operation_wrap = off +ij_extendtypescript_use_relative_indents = false +ij_extendtypescript_while_brace_force = never +ij_extendtypescript_while_on_new_line = false +ij_extendtypescript_wrapping_call_chain_dot = true +ij_extendtypescript_wrapping_es6_import_export = 5 +ij_extendtypescript_wrapping_objects = 5 +ij_extendtypescript_wrapping_union_types = 0 +ij_extendtypescript_wrapping_variable_declarations = 1 + +[*.hml] +ij_hml_add_new_line_before_tags = none +ij_hml_align_attributes = true +ij_hml_align_text = false +ij_hml_attribute_wrap = normal +ij_hml_block_comment_at_first_column = true +ij_hml_do_not_align_children_of_min_lines = 0 +ij_hml_do_not_break_if_inline_tags = none +ij_hml_do_not_indent_children_of_tags = none +ij_hml_expression_wrap = normal +ij_hml_inline_tags = none +ij_hml_keep_blank_lines = 2 +ij_hml_keep_indents_on_empty_lines = false +ij_hml_keep_line_breaks = true +ij_hml_keep_line_breaks_in_expression = true +ij_hml_keep_line_breaks_in_text = true +ij_hml_keep_whitespaces = true +ij_hml_line_comment_at_first_column = true +ij_hml_new_line_after_last_attribute = never +ij_hml_new_line_before_first_attribute = never +ij_hml_remove_new_line_before_tags = none +ij_hml_space_after_tag_name = false +ij_hml_space_around_equality_in_attribute = false +ij_hml_space_inside_empty_tag = false +ij_hml_text_wrap = normal + +[*.js] +ij_javascript_align_multiline_array_initializer_expression = false +ij_javascript_align_multiline_for = true +ij_javascript_align_multiline_parameters = true +ij_javascript_align_multiline_ternary_operation = false +ij_javascript_align_union_types = false +ij_javascript_array_initializer_new_line_after_left_brace = false +ij_javascript_array_initializer_right_brace_on_new_line = false +ij_javascript_array_initializer_wrap = off +ij_javascript_assignment_wrap = off +ij_javascript_binary_operation_sign_on_next_line = false +ij_javascript_binary_operation_wrap = off +ij_javascript_blank_lines_after_imports = 1 +ij_javascript_blank_lines_around_class = 1 +ij_javascript_blank_lines_around_component_statement_in_struct = 1 +ij_javascript_blank_lines_around_field = 0 +ij_javascript_blank_lines_around_field_in_interface = 0 +ij_javascript_blank_lines_around_field_in_struct = 0 +ij_javascript_blank_lines_around_function = 1 +ij_javascript_blank_lines_around_method = 1 +ij_javascript_blank_lines_around_method_in_interface = 1 +ij_javascript_block_brace_style = end_of_line +ij_javascript_block_comment_at_first_column = true +ij_javascript_brace_style = 1 +ij_javascript_call_parameters_new_line_after_left_paren = false +ij_javascript_call_parameters_right_paren_on_new_line = false +ij_javascript_call_parameters_wrap = off +ij_javascript_catch_on_new_line = false +ij_javascript_class_brace_style = 1 +ij_javascript_do_while_brace_force = never +ij_javascript_else_on_new_line = false +ij_javascript_extends_keyword_wrap = off +ij_javascript_finally_on_new_line = false +ij_javascript_for_brace_force = never +ij_javascript_for_statement_new_line_after_left_paren = false +ij_javascript_for_statement_right_paren_on_new_line = false +ij_javascript_for_statement_wrap = off +ij_javascript_function_expression_brace_style = 1 +ij_javascript_if_brace_force = never +ij_javascript_indent_case_from_switch = true +ij_javascript_keep_blank_lines_in_code = 2 +ij_javascript_keep_indents_on_empty_lines = false +ij_javascript_keep_line_breaks = true +ij_javascript_label_indent_absolute = false +ij_javascript_label_indent_size = 0 +ij_javascript_line_comment_add_space = false +ij_javascript_line_comment_at_first_column = true +ij_javascript_method_brace_style = end_of_line +ij_javascript_method_call_chain_wrap = off +ij_javascript_method_parameters_new_line_after_left_paren = false +ij_javascript_method_parameters_right_paren_on_new_line = false +ij_javascript_method_parameters_wrap = off +ij_javascript_parentheses_expression_new_line_after_left_paren = false +ij_javascript_parentheses_expression_right_paren_on_new_line = false +ij_javascript_place_assignment_sign_on_next_line = false +ij_javascript_space_after_colon = true +ij_javascript_space_after_comma = true +ij_javascript_space_after_dots_in_rest_parameter = false +ij_javascript_space_after_quest = true +ij_javascript_space_after_type_colon = true +ij_javascript_space_before_catch_keyword = true +ij_javascript_space_before_catch_left_brace = true +ij_javascript_space_before_catch_parentheses = true +ij_javascript_space_before_class_left_brace = true +ij_javascript_space_before_colon = true +ij_javascript_space_before_comma = false +ij_javascript_space_before_do_left_brace = true +ij_javascript_space_before_else_keyword = true +ij_javascript_space_before_else_left_brace = true +ij_javascript_space_before_finally_keyword = true +ij_javascript_space_before_finally_left_brace = true +ij_javascript_space_before_for_left_brace = true +ij_javascript_space_before_for_parentheses = true +ij_javascript_space_before_for_semicolon = false +ij_javascript_space_before_if_left_brace = true +ij_javascript_space_before_if_parentheses = true +ij_javascript_space_before_method_call_parentheses = false +ij_javascript_space_before_method_left_brace = true +ij_javascript_space_before_method_parentheses = false +ij_javascript_space_before_parent_in_async_arrow_function = true +ij_javascript_space_before_parent_in_function_expression = true +ij_javascript_space_before_quest = true +ij_javascript_space_before_switch_left_brace = true +ij_javascript_space_before_switch_parentheses = true +ij_javascript_space_before_try_left_brace = true +ij_javascript_space_before_type_colon = false +ij_javascript_space_before_while_keyword = true +ij_javascript_space_before_while_left_brace = true +ij_javascript_space_before_while_parentheses = true +ij_javascript_space_other_after_asterisk_generator = true +ij_javascript_space_other_after_dot_dot_dot = false +ij_javascript_space_other_after_key_value_separator = true +ij_javascript_space_other_before_asterisk_generator = false +ij_javascript_space_other_before_key_value_separator = false +ij_javascript_spaces_around_additive_operators = true +ij_javascript_spaces_around_assignment_operators = true +ij_javascript_spaces_around_bitwise_operators = true +ij_javascript_spaces_around_equality_operators = true +ij_javascript_spaces_around_logical_operators = true +ij_javascript_spaces_around_multiplicative_operators = true +ij_javascript_spaces_around_operators_after_unary = false +ij_javascript_spaces_around_operators_arrow_function = true +ij_javascript_spaces_around_operators_before_unary = false +ij_javascript_spaces_around_relational_operators = true +ij_javascript_spaces_around_shift_operators = true +ij_javascript_spaces_around_unary_operator = false +ij_javascript_spaces_within_array_brackets = false +ij_javascript_spaces_within_brackets = false +ij_javascript_spaces_within_catch_parentheses = false +ij_javascript_spaces_within_es6_import_export_braces = false +ij_javascript_spaces_within_for_parentheses = false +ij_javascript_spaces_within_if_parentheses = false +ij_javascript_spaces_within_interpolation_expressions = false +ij_javascript_spaces_within_method_call_parentheses = false +ij_javascript_spaces_within_method_parentheses = false +ij_javascript_spaces_within_object_literal_braces = true +ij_javascript_spaces_within_object_type_braces = true +ij_javascript_spaces_within_parentheses = false +ij_javascript_spaces_within_switch_parentheses = false +ij_javascript_spaces_within_type_assertions = true +ij_javascript_spaces_within_union_types = true +ij_javascript_spaces_within_while_parentheses = false +ij_javascript_special_else_if_treatment = true +ij_javascript_ternary_operation_signs_on_next_line = false +ij_javascript_ternary_operation_wrap = off +ij_javascript_use_relative_indents = false +ij_javascript_while_brace_force = never +ij_javascript_while_on_new_line = false +ij_javascript_wrapping_call_chain_dot = true +ij_javascript_wrapping_es6_import_export = 5 +ij_javascript_wrapping_objects = 5 +ij_javascript_wrapping_union_types = 0 +ij_javascript_wrapping_variable_declarations = 1 + +[*.json] +indent_size = 2 +ij_json_keep_blank_lines_in_code = 0 +ij_json_keep_indents_on_empty_lines = false +ij_json_keep_line_breaks = true +ij_json_space_after_colon = true +ij_json_space_after_comma = true +ij_json_space_before_colon = true +ij_json_space_before_comma = false +ij_json_spaces_within_braces = false +ij_json_spaces_within_brackets = false +ij_json_wrap_long_lines = false + +[*.properties] +ij_properties_align_group_field_declarations = false +ij_properties_keep_blank_lines = false +ij_properties_key_value_delimiter = equals +ij_properties_spaces_around_key_value_delimiter = false + +[*.ts] +ij_typescript_align_multiline_array_initializer_expression = false +ij_typescript_align_multiline_for = true +ij_typescript_align_multiline_parameters = true +ij_typescript_align_multiline_ternary_operation = false +ij_typescript_align_union_types = false +ij_typescript_array_initializer_new_line_after_left_brace = false +ij_typescript_array_initializer_right_brace_on_new_line = false +ij_typescript_array_initializer_wrap = off +ij_typescript_assignment_wrap = off +ij_typescript_binary_operation_sign_on_next_line = false +ij_typescript_binary_operation_wrap = off +ij_typescript_blank_lines_after_imports = 1 +ij_typescript_blank_lines_around_class = 1 +ij_typescript_blank_lines_around_component_statement_in_struct = 1 +ij_typescript_blank_lines_around_field = 0 +ij_typescript_blank_lines_around_field_in_interface = 0 +ij_typescript_blank_lines_around_field_in_struct = 0 +ij_typescript_blank_lines_around_function = 1 +ij_typescript_blank_lines_around_method = 1 +ij_typescript_blank_lines_around_method_in_interface = 1 +ij_typescript_block_brace_style = end_of_line +ij_typescript_block_comment_at_first_column = true +ij_typescript_brace_style = 1 +ij_typescript_call_parameters_new_line_after_left_paren = false +ij_typescript_call_parameters_right_paren_on_new_line = false +ij_typescript_call_parameters_wrap = off +ij_typescript_catch_on_new_line = false +ij_typescript_class_brace_style = 1 +ij_typescript_do_while_brace_force = never +ij_typescript_else_on_new_line = false +ij_typescript_extends_keyword_wrap = off +ij_typescript_finally_on_new_line = false +ij_typescript_for_brace_force = never +ij_typescript_for_statement_new_line_after_left_paren = false +ij_typescript_for_statement_right_paren_on_new_line = false +ij_typescript_for_statement_wrap = off +ij_typescript_function_expression_brace_style = 1 +ij_typescript_if_brace_force = never +ij_typescript_indent_case_from_switch = true +ij_typescript_keep_blank_lines_in_code = 2 +ij_typescript_keep_indents_on_empty_lines = false +ij_typescript_keep_line_breaks = true +ij_typescript_label_indent_absolute = false +ij_typescript_label_indent_size = 0 +ij_typescript_line_comment_add_space = false +ij_typescript_line_comment_at_first_column = true +ij_typescript_method_brace_style = end_of_line +ij_typescript_method_call_chain_wrap = off +ij_typescript_method_parameters_new_line_after_left_paren = false +ij_typescript_method_parameters_right_paren_on_new_line = false +ij_typescript_method_parameters_wrap = off +ij_typescript_parentheses_expression_new_line_after_left_paren = false +ij_typescript_parentheses_expression_right_paren_on_new_line = false +ij_typescript_place_assignment_sign_on_next_line = false +ij_typescript_space_after_colon = true +ij_typescript_space_after_comma = true +ij_typescript_space_after_dots_in_rest_parameter = false +ij_typescript_space_after_quest = true +ij_typescript_space_after_type_colon = true +ij_typescript_space_before_catch_keyword = true +ij_typescript_space_before_catch_left_brace = true +ij_typescript_space_before_catch_parentheses = true +ij_typescript_space_before_class_left_brace = true +ij_typescript_space_before_colon = true +ij_typescript_space_before_comma = false +ij_typescript_space_before_do_left_brace = true +ij_typescript_space_before_else_keyword = true +ij_typescript_space_before_else_left_brace = true +ij_typescript_space_before_finally_keyword = true +ij_typescript_space_before_finally_left_brace = true +ij_typescript_space_before_for_left_brace = true +ij_typescript_space_before_for_parentheses = true +ij_typescript_space_before_for_semicolon = false +ij_typescript_space_before_if_left_brace = true +ij_typescript_space_before_if_parentheses = true +ij_typescript_space_before_method_call_parentheses = false +ij_typescript_space_before_method_left_brace = true +ij_typescript_space_before_method_parentheses = false +ij_typescript_space_before_parent_in_async_arrow_function = true +ij_typescript_space_before_parent_in_function_expression = true +ij_typescript_space_before_quest = true +ij_typescript_space_before_switch_left_brace = true +ij_typescript_space_before_switch_parentheses = true +ij_typescript_space_before_try_left_brace = true +ij_typescript_space_before_type_colon = false +ij_typescript_space_before_while_keyword = true +ij_typescript_space_before_while_left_brace = true +ij_typescript_space_before_while_parentheses = true +ij_typescript_space_other_after_asterisk_generator = true +ij_typescript_space_other_after_dot_dot_dot = false +ij_typescript_space_other_after_key_value_separator = true +ij_typescript_space_other_before_asterisk_generator = false +ij_typescript_space_other_before_key_value_separator = false +ij_typescript_spaces_around_additive_operators = true +ij_typescript_spaces_around_assignment_operators = true +ij_typescript_spaces_around_bitwise_operators = true +ij_typescript_spaces_around_equality_operators = true +ij_typescript_spaces_around_logical_operators = true +ij_typescript_spaces_around_multiplicative_operators = true +ij_typescript_spaces_around_operators_after_unary = false +ij_typescript_spaces_around_operators_arrow_function = true +ij_typescript_spaces_around_operators_before_unary = false +ij_typescript_spaces_around_relational_operators = true +ij_typescript_spaces_around_shift_operators = true +ij_typescript_spaces_around_unary_operator = false +ij_typescript_spaces_within_array_brackets = false +ij_typescript_spaces_within_brackets = false +ij_typescript_spaces_within_catch_parentheses = false +ij_typescript_spaces_within_es6_import_export_braces = false +ij_typescript_spaces_within_for_parentheses = false +ij_typescript_spaces_within_if_parentheses = false +ij_typescript_spaces_within_interpolation_expressions = false +ij_typescript_spaces_within_method_call_parentheses = false +ij_typescript_spaces_within_method_parentheses = false +ij_typescript_spaces_within_object_literal_braces = true +ij_typescript_spaces_within_object_type_braces = true +ij_typescript_spaces_within_parentheses = false +ij_typescript_spaces_within_switch_parentheses = false +ij_typescript_spaces_within_type_assertions = true +ij_typescript_spaces_within_union_types = true +ij_typescript_spaces_within_while_parentheses = false +ij_typescript_special_else_if_treatment = true +ij_typescript_ternary_operation_signs_on_next_line = false +ij_typescript_ternary_operation_wrap = off +ij_typescript_use_relative_indents = false +ij_typescript_while_brace_force = never +ij_typescript_while_on_new_line = false +ij_typescript_wrapping_call_chain_dot = true +ij_typescript_wrapping_es6_import_export = 5 +ij_typescript_wrapping_objects = 5 +ij_typescript_wrapping_union_types = 0 +ij_typescript_wrapping_variable_declarations = 1 + +[.editorconfig] +ij_editorconfig_align_group_field_declarations = false +ij_editorconfig_space_after_colon = false +ij_editorconfig_space_after_comma = true +ij_editorconfig_space_before_colon = false +ij_editorconfig_space_before_comma = false +ij_editorconfig_spaces_around_assignment_operators = true + +[{*.htm,*.html,*.sht,*.shtm,*.shtml}] +ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 +ij_html_align_attributes = true +ij_html_align_text = false +ij_html_attribute_wrap = normal +ij_html_block_comment_at_first_column = true +ij_html_do_not_align_children_of_min_lines = 0 +ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p +ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot +ij_html_enforce_quotes = false +ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var +ij_html_keep_blank_lines = 2 +ij_html_keep_indents_on_empty_lines = false +ij_html_keep_line_breaks = true +ij_html_keep_line_breaks_in_text = true +ij_html_keep_whitespaces = false +ij_html_keep_whitespaces_inside = span,pre,textarea +ij_html_line_comment_at_first_column = true +ij_html_new_line_after_last_attribute = never +ij_html_new_line_before_first_attribute = never +ij_html_quote_style = double +ij_html_remove_new_line_before_tags = br +ij_html_space_after_tag_name = false +ij_html_space_around_equality_in_attribute = false +ij_html_space_inside_empty_tag = false +ij_html_text_wrap = normal + +[{*.markdown,*.md}] +ij_markdown_force_one_space_after_blockquote_symbol = true +ij_markdown_force_one_space_after_header_symbol = true +ij_markdown_force_one_space_after_list_bullet = true +ij_markdown_force_one_space_between_words = true +ij_markdown_keep_indents_on_empty_lines = false +ij_markdown_max_lines_around_block_elements = 1 +ij_markdown_max_lines_around_header = 1 +ij_markdown_max_lines_between_paragraphs = 1 +ij_markdown_min_lines_around_block_elements = 1 +ij_markdown_min_lines_around_header = 1 +ij_markdown_min_lines_between_paragraphs = 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c911348 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +/entry/.preview +.cxx +/node_modules +/.idea +package-lock.json +.hvigor \ No newline at end of file diff --git a/AppScope/app.json5 b/AppScope/app.json5 new file mode 100644 index 0000000..c025555 --- /dev/null +++ b/AppScope/app.json5 @@ -0,0 +1,11 @@ +{ + "app": { + "bundleName": "com.ohos.calendardata", + "vendor": "huawei", + "versionCode": 140005130, + "versionName": "14.0.5.130", + "icon": "$media:icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git a/AppScope/resources/en_US/element/string.json b/AppScope/resources/en_US/element/string.json new file mode 100644 index 0000000..d28c99d --- /dev/null +++ b/AppScope/resources/en_US/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "CalendarData" + } + ] +} \ No newline at end of file diff --git a/AppScope/resources/zh_CN/element/string.json b/AppScope/resources/zh_CN/element/string.json new file mode 100644 index 0000000..9f03183 --- /dev/null +++ b/AppScope/resources/zh_CN/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "日历存储" + } + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d0381d6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/OAT.xml b/OAT.xml new file mode 100644 index 0000000..ce87c9b --- /dev/null +++ b/OAT.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.en.md b/README.en.md deleted file mode 100644 index be13a11..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# applications_calendar_data - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md index 5b5af55..750df00 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,77 @@ -# applications_calendar_data +# CalendarData -#### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} +## 1. Introduction -#### 软件架构 -软件架构说明 +The calendardata application is a preset application in OpenHarmony that provides the function of adding, deleting, modifying, and checking the schedule + +## 2. Directory Structure +``` +├─AppScope +│ │ +│ └─resources # resource file +├─common +│ │ +│ └─src +│ └─main +│ └─ets # basic methods +├─datamanager +│ └─src +│ └─main +│ └─ets # data manager +├─dataprovider +│ └─src +│ └─main +│ └─ets # the proxy of data manager +├─datastructure +│ └─src +│ └─main +│ └─ets # data structure +├─entry +│ └─src +│ └─main # the entry of project +├─rrule +│ └─src +│ └─main +│ └─ets # recurrence rule +└─signature # certificate file +``` + +### Architecture + +![](./figures/architecture.png) + +- **product** + Business form layer: Distinguish various forms of applications for different products and screens, including personalized business, component configuration, and personalized resource packages。 + +- **feature** + Common feature layer: An abstract collection of common feature components that can be referenced by various application forms。 + +- **common** + Common capability layer: Basic capability set, modules that each application form must rely on, including tool classes and common resource packages。 + +## 3. Packaging + +Open project engineering by DevEco Studio, choose: Build → Build Haps(s)/APP(s) → Build Hap(s) + +![](./figures/build_haps.png) + +After compilation, the HAP package will be generated in the `\build\outputs` path in the project directory (if no signature is configured, only unsigned HAP packages will be generated) + +![](./figures/build_output_dir_release.png) + +### Install + +Install the compiled hap package using the command: hdc_std install "HAP packet address" + +![](./figures/calendar_install.png) + +## Constraint +- Development Environment + - **DevEco Studio for OpenHarmony**: Version number greater than 3.1.1.101, Download and Install OpenHarmony SDK API Version 10(The initial IDE configuration can refer to the IDE usage documentation) +- Language + - ArkTS +- Limitation + - This example only supports running on standard systems -#### 安装教程 -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 0000000..0ba3b1b --- /dev/null +++ b/README_zh.md @@ -0,0 +1,77 @@ +# 日历存储应用 + +## 1. 项目介绍 + +日历存储应用是OpenHarmony中预置的应用,提供日程的增删改查功能 + +## 2. 目录结构 +``` +├─AppScope +│ │ +│ └─resources # 资源文件 +├─common +│ │ +│ └─src +│ └─main +│ └─ets # 公共方法 +├─datamanager +│ └─src +│ └─main +│ └─ets # 数据处理 +├─dataprovider +│ └─src +│ └─main +│ └─ets # 数据处理代理层 +├─datastructure +│ └─src +│ └─main +│ └─ets # 数据结构 +├─entry +│ └─src +│ └─main # 程序入口 +├─rrule +│ └─src +│ └─main +│ └─ets # 重复规则 +└─signature # 证书文件目录 +``` + +### 整体架构 + +![](./figures/architecture.png) + +- **product** + 业务形态层:区分不同产品、不同屏幕的各形态应用,含有个性化业务,组件的配置,以及个性化资源包。 + +- **feature** + 公共特性层:抽象的公共特性组件集合,可以被各应用形态引用。 + +- **common** + 公共能力层:基础能力集,每个应用形态都必须依赖的模块,包含工具类和通用的资源包 + +## 3. 打包 + +在DevEco Studio打开项目工程,选择Build → Build Haps(s)/APP(s) → Build Hap(s) + +![](./figures/build_haps.png) + +编译完成后,hap包会生成在工程目录下的 `\build\outputs`路径下(如果没有配置签名,则只会生成未签名的hap包) + +![](./figures/build_output_dir_release.png) + +### 安装 + +使用hdc_std install "hap包地址" 命令进行安装编译后的hap包 + +![](./figures/calendar_install.png) + +## 约束 +- 开发环境 + - **DevEco Studio for OpenHarmony**: 版本号大于3.1.1.101,下载安装OpenHarmony SDK API Version 10。(初始的IDE配置可以参考IDE的使用文档) +- 语言版本 + - ArkTS +- 限制 + - 本示例仅支持标准系统上运行 + + + diff --git a/build-profile.json5 b/build-profile.json5 new file mode 100644 index 0000000..b6269f2 --- /dev/null +++ b/build-profile.json5 @@ -0,0 +1,60 @@ +{ + "app": { + "signingConfigs": [ + { + "name": "release", + "material": { + "certpath": "signature/OpenHarmony.cer", + "storePassword": "00000016A43DB287656F9CFA087114488027CD89E3231C93D42EC5194FB828F4371A1E204CD5", + "keyAlias": "OpenHarmony Application Release", + "keyPassword": "000000167CF0026BCB30B41577DAC2A9799D19ECBEE46B840885676FF359D455D3A1D7FACC8C", + "profile": "signature/calendardata.p7b", + "signAlg": "SHA256withECDSA", + "storeFile": "signature/OpenHarmony.p12" + } + } + ], + "compileSdkVersion": 10, + "compatibleSdkVersion": 10, + "products": [ + { + "name": "default", + "signingConfig": "release", + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "common", + "srcPath": "./common" + }, + { + "name": "datastructure", + "srcPath": "./datastructure" + }, + { + "name": "datamanager", + "srcPath": "./datamanager" + }, + { + "name": "rrule", + "srcPath": "./rrule" + }, + { + "name": "dataprovider", + "srcPath": "./dataprovider" + } + ] +} \ No newline at end of file diff --git a/bundle.json b/bundle.json new file mode 100644 index 0000000..7b02a8f --- /dev/null +++ b/bundle.json @@ -0,0 +1,37 @@ +{ + "name": "@ohos/calendardata", + "description": "Calendar manager service for standard system.", + "version": "3.1", + "license": "Apache License 2.0", + "publishAs": "code-segment", + "segment": { + "destPath": "applications/standard/calendardata" + }, + "dirs": {}, + "scripts": {}, + "component": { + "name": "calendardata", + "subsystem": "applications", + "syscap": [], + "features": [], + "adapted_system_type": [ + "standard" + ], + "rom": "", + "ram": "", + "deps": { + "components": [], + "third_party": [] + }, + "build": { + "group_type": { + "service_group": [ + "//applications/standard/calendardata/calendarmanager:calendarmanager" + ] + }, + "test": [ + "//applications/standard/calendardata/calendarmanager/test:unittest" + ] + } + } +} diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 0000000..4f9a973 --- /dev/null +++ b/common/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/common/build-profile.json5 b/common/build-profile.json5 new file mode 100644 index 0000000..35dff6d --- /dev/null +++ b/common/build-profile.json5 @@ -0,0 +1,5 @@ +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/common/hvigorfile.ts b/common/hvigorfile.ts new file mode 100644 index 0000000..42ed4b4 --- /dev/null +++ b/common/hvigorfile.ts @@ -0,0 +1,3 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/common/package.json b/common/package.json new file mode 100644 index 0000000..da97b7a --- /dev/null +++ b/common/package.json @@ -0,0 +1,14 @@ +{ + "name": "@ohos/common", + "description": "a npm package which contains arkUI2.0 page", + "ohos": { + "org": "" + }, + "version": "1.0.0", + "main": "index.ets", + "types": "", + "repository": {}, + "license": "ISC", + "dependencies": {}, + "type": "module" +} diff --git a/common/src/main/ets/utils/Log.ets b/common/src/main/ets/utils/Log.ets new file mode 100644 index 0000000..aae64e8 --- /dev/null +++ b/common/src/main/ets/utils/Log.ets @@ -0,0 +1,48 @@ +/** + * @file Describe the file + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const TAG = 'CalendarData'; + +/** + * Global Log class + * + * @since 2022-04-13 + */ +export class Log { + public static log(classTag: string, msg: string) { + console.log(TAG + "--" + classTag + ":" + msg); + } + + public static debug(classTag: string, msg: string) { + console.debug(TAG + "--" + classTag + ":" + msg); + } + + public static info(classTag: string, msg: string) { + console.info(TAG + "--" + classTag + ":" + msg); + } + + public static warn(classTag: string, msg: string) { + console.warn(TAG + "--" + classTag + ":" + msg); + } + + public static error(classTag: string, msg: string) { + console.error(TAG + "--" + classTag + ":" + msg); + } + + public static stringify(data: object): string { + return JSON.stringify(data, null, 4); + } +} diff --git a/common/src/main/module.json5 b/common/src/main/module.json5 new file mode 100644 index 0000000..cd5693c --- /dev/null +++ b/common/src/main/module.json5 @@ -0,0 +1,12 @@ +{ + "module": { + "name": "common", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "installationFree": false, + "uiSyntax": "ets" + } +} diff --git a/datamanager/.gitignore b/datamanager/.gitignore new file mode 100644 index 0000000..4f9a973 --- /dev/null +++ b/datamanager/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/datamanager/build-profile.json5 b/datamanager/build-profile.json5 new file mode 100644 index 0000000..35dff6d --- /dev/null +++ b/datamanager/build-profile.json5 @@ -0,0 +1,5 @@ +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/datamanager/hvigorfile.ts b/datamanager/hvigorfile.ts new file mode 100644 index 0000000..42ed4b4 --- /dev/null +++ b/datamanager/hvigorfile.ts @@ -0,0 +1,3 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/datamanager/package.json b/datamanager/package.json new file mode 100644 index 0000000..4bad47b --- /dev/null +++ b/datamanager/package.json @@ -0,0 +1,18 @@ +{ + "name": "@ohos/datamanager", + "description": "a npm package which contains arkUI2.0 page", + "ohos": { + "org": "" + }, + "version": "1.0.0", + "main": "index.ets", + "types": "", + "repository": {}, + "license": "ISC", + "dependencies": { + "@ohos/common": "file:../common", + "@ohos/datastructure": "file:../datastructure", + "@ohos/rrule": "file:../rrule" + }, + "type": "module" +} diff --git a/datamanager/src/main/module.json5 b/datamanager/src/main/module.json5 new file mode 100644 index 0000000..ccac603 --- /dev/null +++ b/datamanager/src/main/module.json5 @@ -0,0 +1,12 @@ +{ + "module": { + "name": "datamanager", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "installationFree": false, + "uiSyntax": "ets" + } +} diff --git a/dataprovider/.gitignore b/dataprovider/.gitignore new file mode 100644 index 0000000..4f9a973 --- /dev/null +++ b/dataprovider/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/dataprovider/build-profile.json5 b/dataprovider/build-profile.json5 new file mode 100644 index 0000000..35dff6d --- /dev/null +++ b/dataprovider/build-profile.json5 @@ -0,0 +1,5 @@ +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/dataprovider/hvigorfile.ts b/dataprovider/hvigorfile.ts new file mode 100644 index 0000000..42ed4b4 --- /dev/null +++ b/dataprovider/hvigorfile.ts @@ -0,0 +1,3 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/dataprovider/package.json b/dataprovider/package.json new file mode 100644 index 0000000..8d5e72e --- /dev/null +++ b/dataprovider/package.json @@ -0,0 +1,18 @@ +{ + "name": "@ohos/dataprovider", + "description": "a npm package which contains arkUI2.0 page", + "ohos": { + "org": "" + }, + "version": "1.0.0", + "main": "index.ets", + "types": "", + "repository": {}, + "license": "ISC", + "dependencies": { + "@ohos/common": "file:../common", + "@ohos/datamanager": "file:../datamanager", + "@ohos/datastructure": "file:../datastructure" + }, + "type": "module" +} diff --git a/dataprovider/src/main/module.json5 b/dataprovider/src/main/module.json5 new file mode 100644 index 0000000..54fb279 --- /dev/null +++ b/dataprovider/src/main/module.json5 @@ -0,0 +1,12 @@ +{ + "module": { + "name": "dataprovider", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "installationFree": false, + "uiSyntax": "ets" + } +} diff --git a/datastructure/.gitignore b/datastructure/.gitignore new file mode 100644 index 0000000..4f9a973 --- /dev/null +++ b/datastructure/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/datastructure/build-profile.json5 b/datastructure/build-profile.json5 new file mode 100644 index 0000000..0f5aacb --- /dev/null +++ b/datastructure/build-profile.json5 @@ -0,0 +1,5 @@ +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/datastructure/hvigorfile.ts b/datastructure/hvigorfile.ts new file mode 100644 index 0000000..42ed4b4 --- /dev/null +++ b/datastructure/hvigorfile.ts @@ -0,0 +1,3 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/datastructure/package.json b/datastructure/package.json new file mode 100644 index 0000000..c0d4631 --- /dev/null +++ b/datastructure/package.json @@ -0,0 +1,14 @@ +{ + "name": "@ohos/datastructure", + "description": "a npm package which contains arkUI2.0 page", + "ohos": { + "org": "" + }, + "version": "1.0.0", + "main": "index.ets", + "types": "", + "repository": {}, + "license": "ISC", + "dependencies": {}, + "type": "module" +} diff --git a/datastructure/src/main/module.json5 b/datastructure/src/main/module.json5 new file mode 100644 index 0000000..b41342a --- /dev/null +++ b/datastructure/src/main/module.json5 @@ -0,0 +1,12 @@ +{ + "module": { + "name": "datastructure", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "installationFree": false, + "uiSyntax": "ets" + } +} diff --git a/entry/.gitignore b/entry/.gitignore new file mode 100644 index 0000000..0620a3c --- /dev/null +++ b/entry/.gitignore @@ -0,0 +1,3 @@ +/build +/node_modules +/.preview \ No newline at end of file diff --git a/entry/build-profile.json5 b/entry/build-profile.json5 new file mode 100644 index 0000000..8b2e839 --- /dev/null +++ b/entry/build-profile.json5 @@ -0,0 +1,11 @@ +{ + apiType: 'stageMode', + showInServiceCenter: false, + buildOption: { + }, + "targets": [ + { + "name": "default", + } + ] +} \ No newline at end of file diff --git a/entry/hvigorfile.js b/entry/hvigorfile.js new file mode 100644 index 0000000..7692388 --- /dev/null +++ b/entry/hvigorfile.js @@ -0,0 +1 @@ +module.exports = require('@ohos/hvigor-ohos-plugin'). hapTasks \ No newline at end of file diff --git a/entry/package.json b/entry/package.json new file mode 100644 index 0000000..4cc23ad --- /dev/null +++ b/entry/package.json @@ -0,0 +1,17 @@ +{ + "name": "@ohos/entry", + "description": "a npm package which contains arkUI2.0 page", + "ohos": { + "org": "" + }, + "version": "1.0.0", + "main": "index.ets", + "types": "", + "repository": {}, + "license": "ISC", + "dependencies": { + "@ohos/common": "file:../common", + "@ohos/datamanager": "file:../datamanager", + "@ohos/dataprovider": "file:../dataprovider" + } +} diff --git a/entry/proguard-rules.pro b/entry/proguard-rules.pro new file mode 100644 index 0000000..f7666e4 --- /dev/null +++ b/entry/proguard-rules.pro @@ -0,0 +1 @@ +# config module specific ProGuard rules here. \ No newline at end of file diff --git a/entry/src/main/ets/Application/Application.ets b/entry/src/main/ets/Application/Application.ets new file mode 100644 index 0000000..f752ae8 --- /dev/null +++ b/entry/src/main/ets/Application/Application.ets @@ -0,0 +1,59 @@ +/** + * @file Describe the file + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import { Log } from '@ohos/common/src/main/ets/utils/Log' + +const TAG = 'Application' + +export default class Application extends UIAbility { + onCreate(want, launchParam) { + Log.log(TAG, "MainAbility onCreate"); + globalThis.abilityWant = want; + } + + onDestroy() { + Log.log(TAG, "MainAbility onDestroy"); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + Log.log(TAG, "MainAbility onWindowStageCreate"); + + windowStage.loadContent("pages/index", (err, data) => { + if (err?.code) { + console.error('Failed to load the content. Cause:' + JSON.stringify(err)); + return; + } + console.info('Succeeded in loading the content. Data: ' + JSON.stringify(data)); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Log.log(TAG, "MainAbility onWindowStageDestroy"); + } + + onForeground() { + // Ability has brought to foreground + Log.log(TAG, "MainAbility onForeground"); + } + + onBackground() { + // Ability has back to background + Log.log(TAG, "MainAbility onBackground"); + } +}; diff --git a/entry/src/main/ets/MainAbility/MainAbility.ets b/entry/src/main/ets/MainAbility/MainAbility.ets new file mode 100644 index 0000000..8eed85f --- /dev/null +++ b/entry/src/main/ets/MainAbility/MainAbility.ets @@ -0,0 +1,54 @@ +/** + * @file Describe the file + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import { Log } from '@ohos/common/src/main/ets/utils/Log' + +const TAG = 'MainAbility' + +export default class MainAbility extends UIAbility { + onCreate(want, launchParam) { + Log.log(TAG, "MainAbility onCreate"); + globalThis.abilityWant = want; + globalThis.context = this.context; + } + + onDestroy() { + Log.log(TAG, "MainAbility onDestroy"); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + Log.log(TAG, "MainAbility onWindowStageCreate"); + + windowStage.setUIContent(this.context, "pages/index", null); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Log.log(TAG, "MainAbility onWindowStageDestroy"); + } + + onForeground() { + // Ability has brought to foreground + Log.log(TAG, "MainAbility onForeground"); + } + + onBackground() { + // Ability has back to background + Log.log(TAG, "MainAbility onBackground"); + } +}; diff --git a/entry/src/main/ets/pages/index.ets b/entry/src/main/ets/pages/index.ets new file mode 100644 index 0000000..c788e0b --- /dev/null +++ b/entry/src/main/ets/pages/index.ets @@ -0,0 +1,29 @@ +/** + * @file Describe the file + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct Index { + @State message: string = 'Hello World' + + /** + * In low-code mode, do not add anything to the build function, as it will be + * overwritten by the content generated by the .visual file in the build phase. + */ + build() { + + } +} \ No newline at end of file diff --git a/entry/src/main/module.json5 b/entry/src/main/module.json5 new file mode 100644 index 0000000..41bdb01 --- /dev/null +++ b/entry/src/main/module.json5 @@ -0,0 +1,49 @@ +{ + "module": { + "name": "entry", + "type": "entry", + "srcEntrance": "./ets/Application/Application.ets", + "description": "$string:description_mainability", + "mainElement": "MainAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "installationFree": false, + "deliveryWithInstall": true, + "pages": "$profile:main_pages", + "uiSyntax": "ets", + "abilities": [ + { + "name": "MainAbility", + "srcEntrance": "./ets/MainAbility/MainAbility.ets", + "description": "$string:description_mainability", + "icon": "$media:icon", + "label": "$string:app_name", + "visible": true, + "launchType": "standard", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:yellow" + }, + { + "name": "Application", + "srcEntrance": "./ets/Application/Application.ets", + "icon": "$media:icon", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:yellow", + "visible": true + } + ], + "metadata": [ + { + "name": "hmos.app.quickfix", + "value": "true" + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.PERMISSION_USED_STATS" + }, + ] + } +} \ No newline at end of file diff --git a/entry/src/main/resources/base/element/color.json b/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000..43e8668 --- /dev/null +++ b/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "yellow", + "value": "#FFD700" + } + ] +} \ No newline at end of file diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000..fb9f432 --- /dev/null +++ b/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "entry_MainAbility" + }, + { + "name": "description_mainability", + "value": "eTS_Empty Ability" + }, + { + "name": "app_name", + "value": "CalendarData" + } + ] +} \ No newline at end of file diff --git a/entry/src/main/resources/base/media/icon.png b/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8fac3289fb720ef41ec32e228d7413b12d4a9106 GIT binary patch literal 8561 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/profile/data_config.json b/entry/src/main/resources/base/profile/data_config.json new file mode 100644 index 0000000..1b221c1 --- /dev/null +++ b/entry/src/main/resources/base/profile/data_config.json @@ -0,0 +1,23 @@ +{ + "forms": [ + { + "name": "widget", + "description": "This is a service widget.", + "src": "./js/widget/pages/index/index", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": true, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ], + "formConfigAbility": "ability://xxxxx" + } + ] +} \ No newline at end of file diff --git a/entry/src/main/resources/base/profile/main_pages.json b/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000..feec276 --- /dev/null +++ b/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/index" + ] +} diff --git a/figures/architecture.png b/figures/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..72ce23f82e452b5420b761b87919adf629d68b9e GIT binary patch literal 10599 zcmeHNc~nzZw~taJ5)3#IkO(T&Iv|5q2m*?7?A)8v62uiLzJ&A zR1h4Y6(nF)0z!fbCbkHH4<%HFc)5}Yks%-?5R$x$qOZfZ-g;fn_pSC@{Ua;qCTE>{ z_da|7e!soXJrlg$f0pS2Qy2_3D==W=4j61Y68fxz&wzdj3a&W?eN7|p@ZSI{X+ZZt z7w;YN+2#X-m9Y^M1Y_uWCNbbsG7N?kPJX6|W4_xDgDsl~+~~8565iJqlmTKcUsP4? zlsTNt4LyG0(z(;LOXjmH`a2)azUgM<_41%oaB8hl=V2#{$d7JrTK-wij!iqRYP2WK zF95hX(XJ1iU-UW;K)3l8ZUTdyO(#Obpa1pn1(IdZ@(rlK%;E=gCaw`F2D*Xe5ctVO z;-bLJpG{3N9lpKsR~}+&obkM~4xa9}aknlKF*Pm(7_4InI?o=xglPnOnNFl+5KqrT z!W!KLfQMl54h(F)49-%(SpfhHMzjCRObmsy2x(sBR)N*-URi7Bh`w&M+Y^jI@4GSA zqk!oefh!qEQ+KsLN}vh3bF{t)Q!?qhz_q3H|uf1()xgxcvfC~e+876S40{g>@r-kQ!-@=oQ*EO7G+ z^Hs~x$WkWrr-+23VKVE1`xW1hjHi&^A7xq2Lz=V-HXLyEcK_RqKmBf8r={Wee1>Z{ zO&3`S&ZhIK`P6ut!BwZp8Usg;^#^%{`|Qb1zJ`${szBXHU7fZqU&yEP__X>79cKA& z0`9OaXf;cf;_djAb?Ox&m&B_-hEpUuGkmxHI?k>qh$$b;N!d1`Y&-BR+RAQCRm#)y z&!g}x-&RebxINEv)h*d&ZHdGVF1CuXvs+^qGq(J}F(7GdUFYt)>DV-5`#v5DY_Dvn zARWD5K8s8|FOezYwL`Sro-aPbIxoRYV5`&AOj&w&g{AnrTtd}va_osKR=1M=|{`7lLBrH7-ZG2$w=-cB{Tp5(D(cBl|AxWeAuf zs>{q1x--7fi0DZtKuas**XpZ0(4UZqU=uABlm`7~htG>KNqa1!pAr_QqUz%>q3v>7 zHA24PevCdzeQ$$jN1U!TZUW&r9|>A9d~I%xhqoJI=3pCseo5V~E7{7oDfyM( zc_@Sa@o!-2`V%q6=@=+3NFKg?r)r>E%Z>-a=n)o{ZA#aYa@?NJoEec}Y@Ow*i{KKf zXG=6NA9=gEA9C;wQp0`niv+Dp%&=k@ZHvNEyDTIFBmOot!lBOL-)hyJGynG-|Zh`^iV zom$^0Q`Ux*nMSbZmO$w&U=g%^Q4FCQBN^JglG(^M3na98m428bz8FaKKVR@pCVgmu zG-$*)0mg(y$CI?D+x*+HU8CpLw11CY2U&Q> z0?E4$Yqa@GtTnM9DTzK)YUowkH7{gqhWm8gbxJL}N6dd{$H^ko8&pZuyHy#Sm;qd2 zzJF2`-;bk`mn*GVT70KWpPRH1Wk$X@517>8lb+nNy`dWN92Fb+VXe(5_Z~K#wMR&> zl1im&DMtwps4mGLh{1EpXR>TnAK#z!ZD{LPw2zzY_PUxyZm zaNhFK_Rk~rmK||ggkb|lMA2%p$0&6{J|#Bel&Y*P^B4+;u7i}$I(0rc43azIZwL$L z3PGk((pq8ewm$P4%h9IROU;69f($?9yY-fqg~M%hw<<({g$(O`sQp$U9q+p&cVL`L zvgg}+QmcvHQyM3A(P`^`HrtMWXBVcne5T37p4Wl8KHU-f>4U{j!mbeE^bWDOVqx5T z+qgWt5Chtko=}SI{1UKg!lXRS_9dh-fH+q-54YpVuOr8L>DF$|^~=6_NnOOnUQ0WV z3^0UUuE|0g=*MrbDpYVJ)o@nNKbRWIN0?&%QEnz$+}C`@72WT>8}sr<7yr$(8zzgR zotSwypFL~ef{3g=L_V~pTG!3v;huy^fwL3iPkk_s8vwyLrRf6`Wf1zGIrQG!8x>nR z?dIYvs~4ds<99hacqNGMX_|qJE(QHHb@eBxM>MfbIksfTppDiR0h8bZBB zs@8pk34@Edw%Wd9vXS_mj$!PzXiw`UYli9TEA}Jpfs>Keax#Q{+koH)Q&sJq#b|~R zY}cC<+knwrpT0iktFRmBF+S4@%q{8a4Iz@MT_UrTZ;VB&7@Th0QC)$1vTDygvCyLT=1F3^4f;h;5A*Bo)AN-^Y&xR zINEOANLw8X4hKpp`s3|AZU8aqjR%n3+Z`O;#RRZg-@P#UdJ*xoVMl(xXUdPta=@!d zVa^yfFK6dys8x>(7ZtVPopSUEI11%a}smWWR2{xGKlFrv4<%f zvzC7nC>VoUAd?*WP2R=O?`c#`l!N<^#?5}Tj%7kW&uBr@!Ai}oMPBksQqVMFwKGHT za>9finh|A|bsy|c8yo$xX31e}ig1vtj9Snz-z1>d`%H|DeigdmO&rvmJ0g4U$~Mg% z4^CH?fZ9Gn`(6=LOy{}U+9O$sk$LB8N#vU)&0z2 zsO8ZD1(Bn-Px%h5W>5;xdDhEOnw!}uOXEAYvV=pfs4KIm`qZS(T2%fHvs%D~wqUlM zGgNZUJ(cZ&c53IPgfM-(T9pQkswr^^x%3M09Fc0erx9K0TDonpC+7|J~{1ONVu$-zL_uD9_bs; z3%+m&Jh&1akh%ZPf9lY5th)}CxnEK6I)}{W&VV(pdM5<%?x^ICu5=M@7}j(6hCW>k z{qDF{OD{;Y9m4aW9|jDSURtsypKiFLq!`8yd5!)^KUjTAmHRE*IAi_m=$SZH@Y!j1 z$zu4iE+}pwOuw;fE)ob_jynqg{Lh86)W( zGXf@ref+()b6LXPoo65S@pZbP*1A5vVfPBO(}bGeNxzF8#v8o#R?~rmVr5@BSt1F- zA~6=PE04j{z@wFjg7onP(^V;Grm(B|)L=GgCm(A#fp0A?RNyG>$HF4Hj<%?D58VQh zn5kfp8%XnTNvbo#WbrirSF(g*l;kRuW9aM73QNy$goODhlpHJ>*y2r(&<&?Ao8F(R zBw&h9M-pZuSK4-%d^MFj6A?G{*OBxyc-y!&3z2o=Ff;Mqn5SfnBleorX(3_!!zI{o zG?HX-74O@%^Ggk-8O$OP4WycnURNV0@!L+HVnaf%^il@>vDjv?Mi+$cs;A16AcaWS z7h5&9lc}+?lYDK)dcN}O*o(DggMci~)&vc)_oVvJbf?*l2%h9l-ibCu~>Bnz=~o|#@hK(98O@D4w&B^Cp%JrIB(iLnanVk ztxd=q)R?f1knaXf{#a?b%N8lrJO~e{J~4XebAiX)*Su@%8dx3-F`KgIb7b}aCIZPI zFMXY_#k5N|&t5L{*vA7;dssAlJ4IQe%%3)VnI}IvmSHbnk2wS#J4~wHC#V&ObP|>EX%aW??n%Nq!geO~- z)EnSH4OI5BKi#kId}`$X@C#xCbYgTK62G^de-g8UFz9W4IA(c4Asnbb=G2L;hKm!eCH(AsBbq+ROya!lZG71;?Xk?Tl1T=H&W2md zm_c(&5cjx^?UqcU?AAp`EQvD6HEtHf?xhwO_kb0)=$M2Cu0@bI$Fjb(rt{Q+FgOQs zf-2J_fKt-Js4j|~r5YbJ>4>p3X(ewvFdj}vO5@hzS1V+z&@B@D!z+&l>JK}mMAi&pbDoGLm5uR^gL_J9E#5w!}KrD*p@H4{j^^E zU|mdzl|sST)PKiHl%`mK5{*#g`KX+SHN=S?1;uq$;G0LN+Fs;wf{?enV%Yh-r@6c> zf!BaDACBt$%5GsyV85p2mQG8mrJ5_YPDv8&<*+1b(fwXQ#22QBrUPGaJyy9WiCi_; zSQQZqGzlmJlqSL2(hw`5s!Op|VOow0vDz)EaH>+HdhvBGDd8H(?yBt|Iy798O2~ND zz<*APQ?y-?<+!3-BH`*A8Rb_cGB%KXZRVSM#@9M@2xfz!&M>9%;GMIZ5I-IJC=v2{ z1p-V44>&(lRkVQL(!(8#S7M_G?VEpT*_}mk`c3S_(%Bq^_?W&xZeRw@WRZ1AXjhr= z4Gy*Nmf5Z55y~o@f(d1tor4LpE1X=+p#u=EvDQ*_Uv&&68aywLG!yfjPTJwcUM+*% z9!>sjm!sE4J;uMKilX-73yHKC^8VZ{pbm0lLVL&937~(V{zG;NJEwmO925xpcQ*}?3=kyFDr?h>8Xp5~9 zM#p5)C8eE7@chn-BA(g*Ln!~1{k70+i0UEDHX)c^A>oqI)O%6AO6 z!k+G4gdTm>HG^HWWeAg|S{%v5R?h3b31pOZswoBKAAhQE;)8jy`*q*M8_v>A^-WBG zQvB<_$;iKd(Haf_H9oq>XGvW&BYir>afy8rRXd~~@>ZOSpP0~R()ztb(vflTOVC?S zO{9+vCB(m+tEcFmsV>E4gsA^JkE%SRUT$6y?O`D7K}QYKD8YZq*rz`P#lnWZ+`}$x$yr#*|Cv zM+&_~+eU%H8O?sWQH3TFy?}&a)T=6&r=-UvG~DuVvW-hm?%|Ol^V}wgvcq92D@)1P zgD%ZZ7(aRsNjDUA5Y2F?k#QjpW@*3S@@EH`p@mdSWr(GC8Q~5xjqTNQMU~d z{*l2(v4qvLMty3+xaxH+;wmjS_PtukUH47|5WBrx)~PgS=T;2`qDEcQr-+4Z6w|Gc=97Y89d<@dvZ`bNfx}r1oO(>@l4dNO zJr&v-s%V?D{t;mU;c@$1hK(#%m?I=isE2U-a@`*I11=X5+lgSLvwIiG%L8!nK2g@> zZ!>a1O2VN(VW+a=2uby7v5lUlHDAI4_a-kH$<=ZYvBzpFQE#^Kro6sFUIti$OWneR zO%$UXHwjUDpjjK)xgR8kV4W&;1c)cxz-^;g$X-Hl%%D9ypaR;Q&8em83zGC!E<+p@tz3oiC=Ma{WW>nv>ML(KV7=M zLd*XRu(a4t_FsNwlriiPgir6Xh5X0reqc2rAd{B!Wb&xutiz8-m_~t_4?p>n4|Cwq z8-t&+-)~(Ay$^X22c00m9{6Eku#-prhv74w&S2D-Wr}K%{w#rBRfGj@+P<-5!@g7h E1yA*dCIA2c literal 0 HcmV?d00001 diff --git a/figures/build_haps.png b/figures/build_haps.png new file mode 100644 index 0000000000000000000000000000000000000000..39fd7a1942eaac7fe26e0d3f6e0785e72c2711f0 GIT binary patch literal 4498 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 literal 0 HcmV?d00001 diff --git a/figures/build_output_dir_release.png b/figures/build_output_dir_release.png new file mode 100644 index 0000000000000000000000000000000000000000..0caf8dfeb6f41ca27141021942c336fe9735393e GIT binary patch literal 8170 zcmbVRc{r49+aJjuDj|_w3fT&kC0m40_IcoF}V-*EIZqZtKzG;BitfRtVQl)nBrcp zLl3P8-Zo;^60C}PH7(5Fc_!jEUzCMQ+#j{?9L!|LiVPFlM5qq&=2DRYW(LJ^N=S(^%6oQZZJ?=6!C7wso1cYA2JsCF9~A9|2;+dSyK0Y4Pq?Kk7_Nu*DE zFY3|f{6w^zPeOI@Qj**YkuLt*&xOgCXN+iNaF{TR!2X4$qk#cin4p4cTzs7Y^qzjQ zR+-z|tpBx%r!HOhA-rz!>duoexsr#5@5B?C6=RTdPbauq`ZtE1#x%^a_Z8V!TCCv9 z4P)c+u5|Wu{WT)lnAV!%LzOCZiKX6VnR5ur)AO@H@pkOzulI)n2iNIj_z4qXH^(Ot zbM2%`$t=IgZTuK1^6FM}?(3c14Qlx-@x4u5M1r}NsH9$tfRNbWl@N^m(Jop}(_S5|6N+3AMEVVSV*sUdNlkt-#N*U44?jMGn*|~} z^K`E~%unPz-eWd@I*VR?nlO7kPhus9M#>VIyzVf?l<4H}#os1(ZXG4D99grDx)9a( z_Qr{Ovv-z^HsK*2q=(d&h?Pjt0Xp+^5ugKg6;zbk9I5h04L2vsM%9e9pz! zk!@!&N!Lb`9*Ene-}xckxn_D8rU+R*44{SIQln8`C$QdCew!%-vZ~5r@R(alM87DK z7rlcMPTzx^WVNJV;d4&#?>}wf8&6@i=B8xS>D7?|N=+=;KXP(4(RC4lhd_+a#Zwzq z1s}!;Lj5JPY<*({Y^9m&rFaxC0rU`=Fh79o&m=fOenk34+|W4P)u6@`hM|L8dDoi` zPk8r61@iH@Cis+NzXnAQgSY5j-(pH^&X|k*e1Ean!?ePgj}EC zCv}e+-EoA3Xqd~A!%6dVO;bZoJ9k34q&clVx2QEHqN^TF#o0DVzjkU|CXLrE_r#%JTv!!7I~(P+KKeGg)709+#*F4y$ry%+Azl0z0Jaxi+4>Pspd?Vy>nf ztrak;`?O0@lu;ON?)m`Vmw+$!o~Dj?WJx@EyzZ90)4NP=$U!~1bd1;ce#(QnRwEzs z3c0~Fujj{yPr>UYG2=aB*P6)_!CxD>-_m`25T%Wm@`Qf38o3BQP^6pdg?-)n3mMm9 z3O0k;))h{A^1}%qTw#ZwQ8uG;mg7yPN7BM1H!H3}E?K0aSll9nNt9p)X%KloumuV z_7$HTBIRRVTomWKM(aN_lR(n8P3lrTX<4xD_Ng2Ong20?qKCAKO95=6OYliV@Eu>a z#AIZtGLIB2>3l?;MXfPm8C@2Kt}$K!wm>TRdxGcM;0bofktD6o29Cs9 zh7zCQpA$Ziv-ALy%`{JGz2ouTX!`)j?OI_n#ArOs5^a>c$QU9Os{+xCu;^^K7rB{% z$a)ZIqDJm5ZTiuht}&H4zON}#E)0W&aGZ^Yuaj12<6S8M)NWVWczFi3VS-aApr8*q zvHX5$Rf961!vTTJ8r5N>AH_@td{N)}z>W5hSwz6qmN?2X0!)|mK;LA`?oFpwm-Uh+ z{5vviRA)Jsv=2thFyx84K6T$|2DrncKb=PpLvAZnzX5|`qc$?r*1sS|W0o{|`J9il zc^8e>1I@d+w#GsId;!s2Zz1AtX(`h>nR2kBCyM=brBsu zAa>}e1Mepv^r4yvy?{W_T{A*s9JP!SRv&Y9%T4?H0fgaj2kyg3VGPM1NKy9GK@rO0 zHW+*oj9U*JvJP_%` zygGM0-x#7S6#f=1+=BI;*-dFXZ{t#~lgtFrYnn4kla&vyB-4~fI$R~?yjb#$zoO_z z6?E{;)dr6^2<#O_nt1kugP1CJ;lHH@S6oW07&_*Bf2pewU;PFi2fz5Wcl8w^IP{Im z$2;_Z%17{Ur4As>{ToU#Qy3x7kAjeKR0Pz$u=asR{_;9zt-s(b>G~#HcRs?|uDj}F z!rl#NkO^5XPKj;GbdBzveJu4j3$d)bo;SZuhGN2lq42cd1GQu$)6qbO9AoQu;Q?@W z*sW!klwAYPm3t-2-M>G`5V9dmW?b`@yTJyYqfQIYe$#+<2;G(M990KGm_;U$X7$WB z;lp#)5){QaF|7yp{zG%4``uR81nOv)HS1gvjqwoVeJF;18uxe$;hgWXpd(ZQy)nY9?m)v87lLnDZ<_dz1~^yhm|Rdhym)n?@vi->gRXtQ5S zEnRV}LAiUTRXaRgh7n?;kZMvMtBfHdT6pzrPBF6QSY8UvF0s0jK|K+T_Ko1ofrV@f zlLf!%{SF4hYigN_x9alSmkB)_s*q((yitDH@1Xi&5orSLSZRAxp)+Daa`db&ii3aA z`$-)*95N4@rJqQ}6gU$pSChLLGI|X>`uUr&iI39!fJpDdvki2h$HNXC&>aKBH{}1J zYm*IUP8_!751R^GP^vrcNzNnIu_|6XvDCQv{^Br&chPQ2jvcH(>m9m()M`Bm#>}~n z2FdDUwP3W{)IBU)eh3Vo?-YECUD~OQ_5SkC=;LFA)wb%)TeLY}fvDA2kybPP4^l&ah_@=$_iv9r8d8^j@4vYiZe%;3nF5Selh!mm9i5S4 zO@im?pC2PkaBa&|YVuEj8R~M(ZEn8#(c`Ca4ONb}K5NWoretGE{7mb9ucRM+{ug`p zT^zBDf~8_`W5!+f1vjdS5(u>p_`JFThZrcYurhc|PwC$bJ#{hsg_*mDsm_hbjneuI z5wd1QoB9QMz;rntiVjq_6B5?@r4_1RqS)3mA)8Y|;%A85lyV=B4unH~K&$$NfGZLR z^K+dUgj0>j?$!mULn^~CDs%^t!0Mbz_by8q)^S}Qv&C#(aC!%Yr_;QuiN7hF9;P`C z**(al{$q%!&`rrnrjeXeg4$L04G=Fko0un#4Ab9aq&O)eM_Z2r^q=T|{k5~KkR5U{ zLuPl{$sn9p1WrRRwjxvuQ5W)P#@Ft!|^%2EQy-~7OdF~@8 zuHDS^&W(*ycxAN9B@H$3&x&8o^VUrl#aAFxTYJ6RBBraO&|j?l(ua+EFVCzq4{=;Q zMQ?MWqd{K=$%$hDV%+YN3~U98@&i`u+^?3Sq7fFa{Y%caf0fOY4&+ksF952A!kYBm z75WM%)Hd4I{1z_L&31OpFx?9ULlvfvX9!K`7~@x<<%+GlOkA{1ZrG_+L^B7DP#rD*BQpbP49~RHl#PN9Xr~4td>)h3gi6bYGqNdu{vZ9*)jKIbIuM!%{9o{JG`B*@Mz(hWDct_YdJT*8K$gUCp)5_W<)$W{ zzU6?^Ero1Y_n0CrX_|M0Y+f%^_ej75miSq8=m1XUgM;_5>2*MQH1QP{u_~GuVpU|g z!2>M}!sK8<%Pb0^7$)5#2xn1P$YXFt_CHBisl(LQ zs!p@=OiXKSSAE4=NtcQ(O;ygCg~op=qFstyrLK^tp(&(=r*BOPfNr#`>DP<8b9L)5xHI!%3>J_oK?l^gPX`^^wxCP1g)7iVkYznlYe4*pn`hpZIF zAJ2@>kta8ocR990cR24P&}*vBZh1|-M`n%fu8kPxa!>@1{$AasNZj3gpA^>w+ubZU zRC8bfX)Y;$6j4! z1m%{o!((eLzwA|-eybsOi;}$yYHIJ#HF<-9Yu;PW{qieB1IA$>%;~aJ^26JATp@J>4FXxjL_?dE4X`iBF{GfFDm}=xO%(mW|R4{wPHJ)m-n&kMNo2wLS zH}|t3*^q3x!Dyw{SB3uqTEx(c(kr;MQrIozTP(1qWhz9e_PL}u=*n$l#?xUZZolz; zv2Le!AS*WgPt&pz7bBOs)zve*XSqs5K%iA={+pfj)ZRWPmPFOthLfrM{Lq-ZE1y1Ixn7vKsfsztoiw ze6Hb1POw}zU)ZKt-Fx*yQnv)vx_Dt*O}5`v9VRkYy=dr1SZ1TvPNx zfik(zDCOFVcg(VKFt~ES4zE1{3Ope_BiQW+ojtJcTg?7)OkdspZm@yx3%0qQu%$(P-tnowRR38_dYICBk(y+a6y+5Ha;^H_QvV@ zH_jgGx9JmoYab-vX}WasN3x!KV~$VKmbt87SF0^PEHbkleW=vm(VbemlUgvlUjCjU zU`aLfe+;V+a=`I0{PMN8nBYfKEL2XIps`aE{9z0&O9&;2+TZD>gRc%?Zwy#l!Rw*B zd;O%{nWm(Kr(0i{CbmBo?_?*r0ZE+v8k;b?`8N&BNV*K$#Rm2NiDflkUqCUJMA=Fjc^F)v7}0SC(RbUg|{_+ z{We-CbJaA+G5R1<%Lhq$MC9oI@{RpnVr%Ec&KPWs>Kp1LwrZjL^vH5~%g>b2xrf&DraI4FdaZJS@Cw7!CQ1ZR@OkY%HJo<>1$(VG zZi-Zj+7j~t*E3wn`;rtHY#U)NRJkL47!V_CRh|XV&0Q>C;Gq9^iGnq@?my53yB}_B z!vSXBmK>1faT!nn0(t0-)0slZuO>)_#p3igjTweVlq zEdIfvzgq)->+kremofEYj+nThq-{#w{Q7wgln*=!1q)bI>K$f?jPdrjE{FN@#+={S zai?Bx6pAMIi5^uLrUP_5Hm9w$Xzd!#W7rGP7*nTj)8*b?Dy{)q_|`XYM^I|*vp(Dp zZSo_Q$KHueT+?U>D+E<y;f6B_$#6no-{!^+MY`B||r%k=*m~1W?Eo*0Dhv1i$A6-Je3p(YTUfUI5 za{Z=Au;h7MmFAG>NEMS!AF(}eFQW8i&^4Vl#v9&c zB*W1KgwEYB8(?P`f>P6@+t4CM+hcmAq z;setpsYG3{)Mc$C2oMjkreu~7@UKQ4FOuwUg#?iF4fb9jl$20#LIoocS!_@{~@zz-u-f|*5mAqK2} zJc&y$9$aKuzs~UERZIM>2LiCLjs}em#O=Rl4`rPCc7$_9k-0#_Wowv?QqD;cJemE{ zqpgbt692DVpMTHB*`~gJF6o@4?k(l8wA4f7!6tKt*tC^F_r45k`lJkINT_*w$Lm0n{J)A@F%Dz2BhZb;y(jr8uVbr zqvKJSUUmzt?eJHKZ=(8nNhbg(eU#61-f2m_AhnZx_rPNcAt+Don@ejlUSQ>d>{XntbpIeo%Ir`@YWy9YN$(YRB!GA^U?L$6L+7ss?1Yy{ZBSr%}R`y`c`ZgTg zTIQC$jW+{<{U*nMYUdpoR^|JD@8d@2_T9fbux!8G?-yjkA^)nmlePr5T8GLw$2(n1 z?qE2wF$rkwUWje*EihG`lD`B*S6|&D#7E?V{Uk@QpQHvhK3bh)`_FhY_#AZc0PsD? zv)0>ln6cm0bWveVGD2*2g_3uzHPEb`%k3o9Khh0(IY}-@>i&!856d>Zw`b+hsRJ1{ zL4(nj4&fidUw?)utA_7=q-@Q-Zur&uCw+cJ?Fr;NNYZa9*doO4l?vbBYvd8PcBnQO zO6WbD@~Ks+5XTF2ZU3}V>}+2t#AoI|6Riw0+N-K#-mE*=3FVC45wSR^<=waJF#zt?t@|&xn;~{jw8MX zdqcwswI>PGMLMrXjFM#8raARj@-cFs)-EN%1yP$fABcCWDc^%+Le>U7E<2haNc!y3K!U>CQXg zIRyhd=pY}T{O<1l6X!l3RnZz!5B}x76d14U%*3)%$6B``CP=bMcpP;hTa2`l@GlK` zu$c+D+wzXEyJzZC-?XzC&k~BOd}}l=C-RG&b#p4g|q Z-EiaWr&pmZ;QM)q!8H@za_!q;{{`8IHR1pO literal 0 HcmV?d00001 diff --git a/figures/calendar_install.png b/figures/calendar_install.png new file mode 100644 index 0000000000000000000000000000000000000000..139d21493ae672c9b45e9fb7ad54e9ccd7e2a10d GIT binary patch literal 2487 zcmV;o2}t&dP)X1^@s6V2Y^R00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2~0^uK~#8N?V9;h z6Gv6!ldxEP{$?JU~cH!o-WgU=$@x zyci5dQIZfZLh9ih9)YugUB%|F}rvWy1COFm|4{=InIR`C0Z8QjXSP zAC^7+Fq6U+TCvAJUzq=;?f-F6wvDF#IfQqgp|$MCsXytQL}+gUe-!YKFQa8YAr=gO zj${5>Wmel!phf1K+6A|EAD2>ma7>5r{rmR>@%RF+RqFfq$MXO}(+=hPQRAOE-Ux)8 zMf=zizVcDgR^AIo0dir~f35r%d;L-JnZMNYe;gF?BBnmf@d3E)Wm%mH#g8l=E&B^4 zUTReRW`@OLfu-#UwvH)YM~(lninsbUmg9cBymAp2sJ-TDR23i>M*Y{yf3epeC7=0A zJ^#lcDPE)sf4$)mc+rNkoW*qsw>_)a<-<7Swy-efK&^C_kj3HM=ncHy;J}9h_%z** z`f{n=F%3Q*SJYWi=@l1hq-)V+?0bhX{h5j5nAQNu7c zRFX$(Ix)VujUXR_f5C;p$qez*i@)A@jr=HmwCp?E3fJr>?1m1(bAI^TPMDS0>c=P1 zPi1~1`PZ+%CfpJH`x@jC3T$BRK}X71ZTs}DpRC`T@Y4F_zhTXL6V{5t%%A8}-Hu1T zEpWoBCwjfdNUX-fdnKVI=p=UkzXS)b4Jw$hN zBW!KAFuTKJ;bx80E+(H_b>oKJhNi9&ECs_@xKS;(n`&UST4B8@2o5)ce)^eWK8JEC zQB)ibxesvvbs4ti9*nQ@*njPWDdAilT%Tgt7`-T6uL3>Z18}c8mGKmH`$hZq1p5Z4 zeVs$_abYa}|Gd<$pPb5bb&0!+)wOtJ@gk&BSXy%kufM>bmu+ai@(Az09%S7))$P|F zubZEiaeN7f5spLp{bc<<7wfmfg@wHcmhRLQWPaM`_wj9nSH{p` zt4Bj~Hy$r>SRZXt=A)Eq{^|d_cVZ1(XdCaxjf+^Cc#%pcW`D>_@+RB|?gm>MzEPXe-RuGd! zgOs&niVI@Okqjn9-G0%&<-uCzx64n26`t2AwHr$grSjVRF~sX49&N=i*Dr2c2`R%B zudss15HEH6wa4q`r?MLLv{<^_@W+=i)Fc&;wKj2ckjJEAeDaDoPuh>s3 z{_5lP@}tb7QCu~hkFc;Q%y}q{kH!`Me^&7x#sA~vPfxt^tq(2#OdZd$9p&24uySs5>LI z7hb$FA*2?rl^9lsEVw-W1tHhw!7;^)Qa8Aa=!ch>*x)hKTa~j< zZu>?1)VGb*82k{&(p`CvUxsc^2)phUrN4}(c-53k(I)B$xFr|2n#YfG5rClTcGP(WN+cp}sPv!cBst+yy%E~KHmU5Oww{>yf zt*mWZDdwNfcgEI>(b)}fdxB^Ub>qV6+;gOoEndRX)iK2(C>Sm;+2jL3K5<~$h>P}X z@c6?*vdvPvLGiLZfIs#b;~h=nouSsGv>6dEQhNs<>9UxAi#`?Sa@#N3x4-rx<-k6I z#oNg%(U$W#BW!K64_wFK+f@;-oc3#v*UOJGw_5QEe;DrpkCkyJnj39syZ!>culs5F z(~6HWkBa|FyGH(%K5F$R9oSR<$;y{aa$-@p2Oyx z3pd>UwESqrN9m*Czu2yx|5ViK?~Ye|Rf7MviTRXQB@*q1?8|+9rGDjCX)<1wNc72L zeoC387cZBE{DotP3NiLCK853a`goaA%Re1gkrHd8~W literal 0 HcmV?d00001 diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..adc7c48 --- /dev/null +++ b/gradlew @@ -0,0 +1,23 @@ +npm config set registry http://mirrors.tools.huawei.com/npm/ +npm config set @ohos:registry https://cmc.centralrepo.rnd.huawei.com/artifactory/api/npm/product_npm/ +npm config set strict-ssl false +npm install +cd common +npm install +cd .. +cd datastructure +npm install +cd .. +cd datamanager +npm install +cd .. +cd rrule +npm install +cd .. +cd dataprovider +npm install +cd .. +cd entry +npm install +cd .. +node ./node_modules/@ohos/hvigor/bin/hvigor.js --mode module assembleHap -p debuggable=false diff --git a/hvigorfile.js b/hvigorfile.js new file mode 100644 index 0000000..a94b489 --- /dev/null +++ b/hvigorfile.js @@ -0,0 +1 @@ +module.exports = require('@ohos/hvigor-ohos-plugin').appTasks \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..6da9976 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "CalendarData", + "version": "1.0.0", + "ohos": { + "org": "huawei", + "buildTool": "hvigor", + "directoryLevel": "project" + }, + "description": "example description", + "repository": {}, + "license": "ISC", + "dependencies": { + "hypium": "^1.0.0", + "@ohos/hvigor": "1.4.0", + "@ohos/hvigor-ohos-plugin": "1.4.0", + "@ohos/hypium": "1.0.3" + } +} diff --git a/rrule/.gitignore b/rrule/.gitignore new file mode 100644 index 0000000..4f9a973 --- /dev/null +++ b/rrule/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/rrule/build-profile.json5 b/rrule/build-profile.json5 new file mode 100644 index 0000000..0f5aacb --- /dev/null +++ b/rrule/build-profile.json5 @@ -0,0 +1,5 @@ +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/rrule/hvigorfile.ts b/rrule/hvigorfile.ts new file mode 100644 index 0000000..42ed4b4 --- /dev/null +++ b/rrule/hvigorfile.ts @@ -0,0 +1,3 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/rrule/package.json b/rrule/package.json new file mode 100644 index 0000000..a56eec3 --- /dev/null +++ b/rrule/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ohos/rrule", + "description": "a npm package which contains arkUI2.0 page", + "ohos": { + "org": "" + }, + "version": "1.0.0", + "main": "index.ets", + "types": "", + "repository": {}, + "license": "ISC", + "dependencies": { + "@ohos/common": "file:../common" + }, + "type": "module" +} diff --git a/rrule/src/main/module.json5 b/rrule/src/main/module.json5 new file mode 100644 index 0000000..4db8a3d --- /dev/null +++ b/rrule/src/main/module.json5 @@ -0,0 +1,12 @@ +{ + "module": { + "name": "rrule", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "installationFree": false, + "uiSyntax": "ets" + } +} diff --git a/signature/OpenHarmony.cer b/signature/OpenHarmony.cer new file mode 100644 index 0000000..c6f689d --- /dev/null +++ b/signature/OpenHarmony.cer @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIICMzCCAbmgAwIBAgIIWUnLZ/SCTRowCgYIKoZIzj0EAwMwYzELMAkGA1UEBhMC +Q04xFDASBgNVBAoTC09wZW5IYXJtb255MRkwFwYDVQQLExBPcGVuSGFybW9ueSBU +ZWFtMSMwIQYDVQQDExpPcGVuSGFybW9ueSBBcHBsaWNhdGlvbiBDQTAeFw0yMjA1 +MDcwMjM2MzRaFw0zMjA1MDQwMjM2MzRaMGgxCzAJBgNVBAYTAkNOMRQwEgYDVQQK +EwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVhbTEoMCYGA1UE +AxMfT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gUmVsZWFzZTBZMBMGByqGSM49AgEG +CCqGSM49AwEHA0IABNtg4JBClbl92Rgc3jm/RfcAdrHXaM8F0QOiwVEhnV5ebE5j +NIYnAx+weFRT3QTyUjRNdhmc2aAzWyi+5t5CoBOjUjBQMB0GA1UdDgQWBBT7ca7o +ZXEQULCXcHGai7vaDVFYGjAOBgNVHQ8BAf8EBAMCB4AwHwYDVR0jBBgwFoAU24a3 +IhbVC6FLt90le7nxBX2iLUcwCgYIKoZIzj0EAwMDaAAwZQIwTkX4EoMKxWLBFAQx +Sbg1+nr9tWojKWBvsc87Hq+Ekvb25QN2MCrpWr4oc29smktcAjEA2DNZQyvfTmRQ +JAIGSyJXIeOSnvhJ5rXn2A0qurNyQegWovvyCv+jr5/SlB7nmDLU +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICYTCCAeWgAwIBAgIEHmXAPTAMBggqhkjOPQQDAwUAMGgxCzAJBgNVBAYTAkNO +MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh +bTEoMCYGA1UEAxMfT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gUm9vdCBDQTAeFw0y +MTAyMDIxMjE1MzJaFw00OTEyMzExMjE1MzJaMGMxCzAJBgNVBAYTAkNOMRQwEgYD +VQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVhbTEjMCEG +A1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwdjAQBgcqhkjOPQIBBgUr +gQQAIgNiAAQhnu7Hna8XNa2KyqRf5+lBJScE4xqf89N0g0OuqAb2re8nGsvWkw26 +uDekfnBYicd+G3Cydqa2zFIwV7Talyg2ULW3r8KbGpyl84mJEPPRmCGJ+H9gtCsf ++OrJ4Y76LVWjYzBhMB8GA1UdIwQYMBaAFBc6EKGrGXzlAE+s0Zgnsphadw7NMA8G +A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTbhrciFtUL +oUu33SV7ufEFfaItRzAMBggqhkjOPQQDAwUAA2gAMGUCMG3cXjiDmXTvf7D4Omhf +qcc2nuO+EMfWE+N9ZhBP5UhV34mAGWi3SfLU6rcV0urWEQIxAMYIb3epOnKhUrcm +Lfu1WKzFlpYQwmw73RaCHP2I3k6NcuWOYeNwWXSNZ8o0nzvaLg== +-----END CERTIFICATE----- diff --git a/signature/OpenHarmony.p12 b/signature/OpenHarmony.p12 new file mode 100644 index 0000000000000000000000000000000000000000..60f9bb48e677960e9dd7257e9f55c80915417ecf GIT binary patch literal 8252 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 DQ^kNQ literal 0 HcmV?d00001 diff --git a/signature/material/ac/2414e0c961364455b65852f0a25c9ae3 b/signature/material/ac/2414e0c961364455b65852f0a25c9ae3 new file mode 100644 index 0000000..f3a39f0 --- /dev/null +++ b/signature/material/ac/2414e0c961364455b65852f0a25c9ae3 @@ -0,0 +1 @@ +PTr&lV|>?̔ \ No newline at end of file diff --git a/signature/material/ce/0fbd9335b2684b6f989729ef91a537f7 b/signature/material/ce/0fbd9335b2684b6f989729ef91a537f7 new file mode 100644 index 0000000000000000000000000000000000000000..b1f99fe2962a8f8e666b23d7d00bafa3f9f13a4d GIT binary patch literal 48 zcmV-00MGvb001CmH#;t>T?A~A9toWox0p8|?GnjugS8~BknflG)Qku$PGjl3CrA>t Gw*3H{coWY6 literal 0 HcmV?d00001 diff --git a/signature/material/fd/0/a3716aae34ff42fc9c59ba058380be54 b/signature/material/fd/0/a3716aae34ff42fc9c59ba058380be54 new file mode 100644 index 0000000..32c1e4c --- /dev/null +++ b/signature/material/fd/0/a3716aae34ff42fc9c59ba058380be54 @@ -0,0 +1 @@ +W9[7FaM8Ŷ \ No newline at end of file diff --git a/signature/material/fd/1/b58cea655c3a489fac614ad24e5119d7 b/signature/material/fd/1/b58cea655c3a489fac614ad24e5119d7 new file mode 100644 index 0000000..4483b18 --- /dev/null +++ b/signature/material/fd/1/b58cea655c3a489fac614ad24e5119d7 @@ -0,0 +1 @@ +a=0ׂj%2,õ \ No newline at end of file diff --git a/signature/material/fd/2/93b27032ebb94fb3a6ce540e778f5835 b/signature/material/fd/2/93b27032ebb94fb3a6ce540e778f5835 new file mode 100644 index 0000000..1e1a286 --- /dev/null +++ b/signature/material/fd/2/93b27032ebb94fb3a6ce540e778f5835 @@ -0,0 +1 @@ +?|9EcW \ No newline at end of file