精华内容
下载资源
问答
  • 扩展Angular CLI的默认构建行为而不弹出: :page_facing_up: 通过提供仅包含其他设置的部分配置来扩展默认行为 :page_facing_up: 替代方法:通过提供自定义功能来扩展默认行为 :package: 可选:构建单个捆绑包...
  • Karabiner-Elements开机时弹出窗口 Karabiner是mac下一个很好的修改按键映射软件,但是有一个问题就是它需要一直开着,设置的按键才会有效,比如我设置了capslock切换不同输入法。所以我必须设置开机自启,当我设置...

    一、取消Karabiner-Elements开机时弹出窗口

    Karabiner-Elements下载地址:https://karabiner-elements.pqrs.org/

    Karabiner是mac下一个很好的修改按键映射软件,但是有一个问题就是它需要一直开着,设置的按键才会有效,比如我设置了capslock切换不同输入法。所以我必须设置开机自启,当我设置后,我发现每次都会弹出下面的窗口,即使我在登录项设置了隐藏也无济于事

    我的登录项设置如下:

    解决方法

    • 打开mac启动台中的脚本编辑器
    • 新建脚本,将如下代码添加到脚本中-
    • do shell script "launchctl load -w /Library/LaunchAgents/org.pqrs.karabiner.karabiner_console_user_server.plist"
    • 如下图所示
    • 保存脚本,取名为Karabiner-Loader,同时选择文件格式为应用程序,保存在任意目录均可
    • 最后在登录项时将这个app设置为开机自启,至此以后电脑开机就不会弹出烦人的窗口了

    二、用 Capslock 切换输入法

    在这里插入图片描述
    详见 Karabiner 按键设置方法:https://ke-complex-modifications.pqrs.org/
    在这里插入图片描述

    在这里插入图片描述
    设置完成后就可以用 Capslock 切换中英文输入法了(长按 caps lock 会显示输入法选单)

    三、Karabiner 配置文件

    Karabiner 的所有配置都以 JSON 格式文件保存在:~/.config/karabiner/karabiner.json 目录,如果在网上看到别人给出的配置需要编辑 karabiner.json 文件加到其中,如果需要备份配置则可以直接备份这个目录。

    利用 Karabiner 将Capslock映射为command+control+option+shift+p

    配置文件地址在 ~/.config/karabiner/karabiner.json,这里只贴出关键配置

    "complex_modifications": {
      "parameters": {
        "basic.simultaneous_threshold_milliseconds": 50,
        "basic.to_delayed_action_delay_milliseconds": 500,
        "basic.to_if_alone_timeout_milliseconds": 1000,
        "basic.to_if_held_down_threshold_milliseconds": 500
      },
      "rules": [
        {
          "manipulators": [
            {
              "description": "Change caps_lock to command+control+option+shift+p.",
              "from": {
                "key_code": "caps_lock",
                "modifiers": {
                  "optional": ["any"]
                }
              },
              "to": [
                {
                  "key_code": "p",
                  "modifiers": [
                    "left_command",
                    "left_control",
                    "left_option",
                    "left_shift"
                  ]
                }
              ],
              "type": "basic"
            }
          ]
        }
      ]
    }
    

    单击左右Shift切换输入法 (参考:macOS 快速切换中英文输入法的快捷键

    	{
    	    "manipulators": [
    	        {
    	            "description": "单击左右Shift切换输入法",
    	            "from": {
    	                "key_code": "left_shift"
    	            },
    	            "to": [
    	                {
    	                    "key_code": "left_shift"
    	                }
    	            ],
    	            "to_if_alone": [
    	                {
    	                    "key_code": "p",
    	                    "modifiers": [
    	                        "left_command",
    	                        "left_control",
    	                        "left_option",
    	                        "left_shift"
    	                    ]
    	                }
    	            ],
    	            "type": "basic"
    	        },
    	        {
    	            "from": {
    	                "key_code": "right_shift"
    	            },
    	            "to": [
    	                {
    	                    "key_code": "right_shift"
    	                }
    	            ],
    	            "to_if_alone": [
    	                {
    	                    "key_code": "p",
    	                    "modifiers": [
    	                        "left_command",
    	                        "left_control",
    	                        "left_option",
    	                        "left_shift"
    	                    ]
    	                }
    	            ],
    	            "type": "basic"
    	        }
    	    ]
    	}
    

    以后再添加按键映射,只要按照和这个模块去设置就行了
    在这里插入图片描述
    在这里插入图片描述

    删除 rules 需谨慎,因为 json 中对应的代码也会被删除
    在这里插入图片描述
    karabiner.json 备份注意事项

    在这里插入图片描述

    Karabiner 配置文件示例:https://github.com/babyking/KarabinerConfiguration

    在这里插入图片描述

    四、外接机械键盘 option 和 cmd 互换

    交换 cmd/opt

    保证外接键盘的键位和内置键盘一样,不然会疯掉

    img](https://trainspott.in/pic/20181206/switch.jpg)

    Reference

    展开全文
  • 下表概述了UnityEngine.UIElements和UnityEditor.UIElements名称空间中可用的UXML元素。 基本要素 元件 功能 命名空间 允许的子元素 属性 VisualElement 所有视觉元素的基类。 UnityEngine.UI...

    UXML元素参考

    下表概述了UnityEngine.UIElementsUnityEditor.UIElements名称空间中可用的UXML元素。

    基本要素

    元件功能命名空间允许的子元素属性
    VisualElement所有视觉元素的基类。UnityEngine.UIElements任意数量的VisualElementclass:空格分隔名称列表。
    style:USS指令来设置元素的样式。
    name:此元素的唯一字符串标识符。
    picking-mode:设为PositionIgnore。默认值为Position
    tooltip:当鼠标悬停元素时,会显示一个字符串。
    focusable:一个布尔值,指示元素是否可聚焦。默认设置为false(不可聚焦)。这取代了过时的focus-index元素。
    tabindex:一个整数,用于定义元素的Tab键位置和树中的位置。正值会增加标签优先级。默认值为0.这将替换过时的focus-index元素。
    view-data-key:一个字符串,用于定义用于序列化元素的键。
    此元素还接受任何其他属性。
    BindableElement一个可以绑定到的元素SerializedProperty。属性的值和显示的值是同步的。UnityEngine.UIElements任意数量的VisualElementbinding-path:此元素绑定的属性的路径。

    公用事业

    元件功能命名空间允许的子元素属性
    Box此元素类似于VisualElement但在其内容周围绘制一个框。UnityEngine.UIElements任意数量的VisualElementVisualElement所有属性 
    TextElement显示文本的元素。UnityEngine.UIElements没有VisualElement所有属性
    text:元素应显示的文本。
    Label文字标签。UnityEngine.UIElements没有 TextElement所有属性
    Image显示图像。UnityEngine.UIElements没有VisualElement所有属性 
    IMGUIContainer绘制IMGUI内容UnityEngine.UIElements没有VisualElement
    focus-index默认值的所有属性都是0
    focusable默认值true
    Foldout具有切换按钮以显示或隐藏其内容的元素。UnityEngine.UIElements任意数量的VisualElementBindableElement所有属性 

    模板

    元件功能命名空间允许的子元素属性
    Template对可以使用该Instance元素实例化的另一个UXML模板的引用。UnityEngine.UIElements没有name:此元素的唯一字符串标识符
    path:要加载的UXML文件的路径
    Instance一个实例 TemplateUnityEngine.UIElements没有template:的nameTemplate实例
    TemplateContainer模板容器。UnityEngine.UIElements没有BindableElement所有属性
    template:此模板的字符串标识符

    控件

    元件功能命名空间允许的子元素属性
    BaseField<T>所有字段的抽象基类。UnityEngine.UIElements没有BindableElement
    focus-index默认值的所有属性都是0
    focusable默认值是true
    label:与该字段关联的标签的文本
    BaseFieldTraits<ValueType, UxmlType> UnityEngine.UIElements没有BaseField<ValueType>所有属性
    value:字段的基本值,类型ValueType
    Button标准按钮。UnityEngine.UIElements没有TextElement所有属性 
    RepeatButton按下时反复执行操作的按钮。UnityEngine.UIElements没有TextElement所有属性
    delay:执行元素执行操作之前的初始延迟(以毫秒为单位)。默认值为0
    interval:重复每个操作之间的间隔(以毫秒为单位)。默认值为0
    Toggle切换按钮,显示为复选框。UnityEngine.UIElements没有BaseFieldTraits<bool, UxmlBoolAttributeDescription>所有属性
    text:切换的右侧标签。
    Scroller滚动条。UnityEngine.UIElements没有VisualElement所有属性
    low-value:滚动条的最小值:滚动条
    high-value的最大值
    direction:设置为HorizontalVertical。默认是Vertical
    value:滚动条光标的位置
    Slider一个滑块。UnityEngine.UIElements没有BaseFieldTraits<float, UxmlFloatAttributeDescription>所有属性
    low-value:滑块的最小值:滑块
    high-value的最大值
    direction:设置为HorizontalVertical。默认是Horizontal
    page-size:滑块的页面大小
    SliderInt整数值的滑块。UnityEngine.UIElements没有BaseFieldTraits<int, UxmlIntAttributeDescription>所有属性
    low-value:滑块的最小值:滑块
    high-value的最大值
    direction:设置为HorizontalVertical。默认是Horizontal
    page-size:滑块的页面大小
    MinMaxSlider一个滑块,允许用户指定最小值和最大值。UnityEngine.UIElements没有BaseField<Vector2>所有属性
    low-limit:滚动条的最小值:滚动条
    high-limit的最大值
    min-value:滑块光标的最小值
    max-value:滑块光标的最大值
    EnumField获取底层字符串值的字段EnumUnityEditor.UIElements没有所有属性BaseField<Enum>
    type:表示底层的C#类型的字符串Enum。如果类型在用户程序集中,则必须将程序集名称添加到类型名称:MyNamespace.MyEnum, MyAssemblytype始终需要该字符串。
    value:表示字段值的字符串
    MaskField一个弹出菜单,用户可以从中选择一组值。UnityEditor.UIElements没有BaseField<int>所有属性
    choices:弹出菜单中最多显示32个选项的逗号分隔列表
    value:一个整数,表示该字段的值为32位掩码。
    LayerField用户可以选择一个一个弹出式菜单
    UnityEditor.UIElements没有BaseField<int>所有属性
    value:表示字段值(选定图层编号)的整数。
    LayerMaskField一个弹出菜单,用户可以从中选择一组图UnityEditor.UIElements没有 MaskField所有属性
    TagField用户可以选择标记
    的弹出菜单。
    UnityEditor.UIElements没有BaseField<string>所有属性
    value:表示字段值的字符串(选定的标记名称)。
    ProgressBar显示操作进度的进度条。UnityEditor.UIElements没有BindableElement所有属性
    low-value:表示进度条最低值的浮点数。默认值为0 
    high-value.:表示进度条最高值的浮点数。默认值为100.:
    title表示进度条标题的字符串。

    文本输入

    元件功能命名空间允许的子元素属性
    TextInputBaseField<TValueType>所有文本字段的抽象基类。UnityEngine.UIElements没有BaseFieldTraits<string, UxmlStringAttributeDescription>所有属性
    text:字段的文本值
    max-length:字段可包含的最大字符数。默认值-1设置文本长度没有限制。
    password:一个布尔值,指示是否应使用该maskCharacter字符显示或显示字段内容。false是默认设置。
    mask-character:当显示所述字段的内容的字符passwordtrue。默认是角色*
    readonly:一个布尔值,表示该字段是只读的。默认值为false
    TextField可编辑的文本字段。UnityEngine.UIElements没有TextInputBaseField<string>所有属性
    multiline:一个布尔值,指示文本字段是否在多行上显示其文本。设置为true在多行上显示,或设置为false显示或在一行上,忽略文本中的任何换行符。false是默认值。
    IntegerField接受整数(32位)值的文本字段。UnityEditor.UIElements没有 BaseFieldTraits<int, UxmlIntAttributeDescription>所有属性
    LongField接受长整数(64位)值的文本字段。UnityEditor.UIElements没有 BaseFieldTraits<long, UxmlLongAttributeDescription>所有属性
    FloatField接受单精度浮点值的文本字段。UnityEditor.UIElements没有 BaseFieldTraits<float, UxmlFloatAttributeDescription>所有属性
    DoubleField接受双精度浮点值的文本字段。UnityEditor.UIElements没有BaseFieldTraits<double, UxmlDoubleAttributeDescription>所有属性 
    Vector2Field一组两个文本字段,接受浮点值来编辑a的值Vector2UnityEditor.UIElements没有BaseField<Vector2>所有属性
    x:X坐标
    y的值:Y坐标的值
    Vector2IntField一组两个文本字段,接受整数值来编辑a的值Vector2IntUnityEditor.UIElements没有BaseField<Vector2Int>所有属性
    x:X坐标
    y的值:Y坐标的值
    Vector3Field一组三个文本字段,接受浮点值以编辑a的值Vector3UnityEditor.UIElements没有BaseField<Vector3>所有属性
    x:X坐标
    y的值:Y坐标
    z的值:Z坐标的值
    Vector3IntField一组三个文本字段,接受整数值来编辑a的值Vector3IntUnityEditor.UIElements没有BaseField<Vector3Int>所有属性
    x:X坐标
    y的值:Y坐标
    z的值:Z坐标的值
    Vector4Field一组四个文本字段,接受浮点值以编辑a的值Vector4UnityEditor.UIElements没有BaseField<Vector4>所有属性
    x:X坐标
    y的值:Y坐标
    z的值:Z坐标
    w的值:W坐标的值
    RectField一组四个文本字段,它们接受浮点值以编辑矩形的值。UnityEditor.UIElements没有BaseField<Rect>所有属性
    x:左上角
    y的值X坐标:左上角的值Y坐标
    w:矩形的宽度:矩形
    h的高度
    RectIntField一组四个文本字段,接受整数值以编辑矩形的值。UnityEditor.UIElements没有BaseField<RectInt>所有属性
    x:左上角
    y的值X坐标:左上角的值Y坐标
    w:矩形的宽度:矩形
    h的高度
    BoundsField一组六个文本字段,它们接受浮点值以编辑边界矩形的值。UnityEditor.UIElements没有BaseField<Bounds>所有属性
    cx:中心X坐标
    cy的值:中心Y坐标
    cz的值:中心Z坐标
    ex的值:范围X坐标
    ey的值:范围Y坐标
    ez的值:范围Z的值坐标
    BoundsIntField一组六个文本字段,它们接受整数值以编辑边界矩形的值。UnityEditor.UIElements没有BaseField<BoundsInt>所有属性
    px:位置X坐标
    py值:位置Y坐标
    pz值:位置Z坐标
    sx值:大小X坐标
    sy值:大小Y坐标
    sz值:大小Z值坐标

    复合控件

    元件功能命名空间允许的子元素属性
    PropertyField用于编辑值的标签和字段。UnityEditor.UIElements没有VisualElement所有属性
    binding-path:此元素绑定的属性的路径
    label:字段的标签
    PropertyControl<int>用于编辑类型值的标签和字段intUnityEditor.UIElements没有BaseField<int>所有属性
    value-type:表示值类型的字符串
    value:字段的值
    PropertyControl<long>用于编辑类型值的标签和字段longUnityEditor.UIElements没有BaseField<long>所有属性
    value-type:表示值类型的字符串
    value:字段的值
    PropertyControl<float>用于编辑类型值的标签和字段floatUnityEditor.UIElements没有BaseField<float>所有属性
    value-type:表示值类型的字符串
    value:字段的值
    PropertyControl<double>用于编辑类型值的标签和字段doubleUnityEditor.UIElements没有所有属性BaseField<double>
    value-type:表示值类型的字符串
    value:字段的值
    PropertyControl<string>用于编辑类型值的标签和字段stringUnityEditor.UIElements没有BaseField<string>所有属性
    value-type:表示值类型的字符串
    value:字段的值
    ColorField颜色选择器字段。UnityEditor.UIElements没有BaseFieldTraits<Color, UxmlColorAttributeDescription>所有属性
    show-eye-dropper:一个布尔值,指示是否显示滴管。设置为true显示滴管,并false隐藏它。默认设置为true
    show-alpha:一个布尔值,指示是否显示alpha控件。设置为true显示控件或false隐藏它。默认设置为true
    hdr:一个布尔值,指示是否使用高动态范围颜色选择器。设置为true使用选择器。默认设置为false
    CurveField曲线编辑器字段。UnityEditor.UIElements没有BaseField<AnimationCurve>所有属性 
    GradientField渐变编辑器字段。UnityEditor.UIElements没有BaseField<Gradient>所有属性 
    ObjectField对象选择器字段。UnityEditor.UIElements没有BaseField<Object>所有属性
    allow-scene-objects:一个布尔值,指示是否可以选择场景中的对象。设置为true启用对象选择或false禁用它。默认设置为true
    InspectorElement在检查器中显示属性的元素窗口。UnityEditor.UIElements任意数量的VisualElementBindableElement所有属性 

    工具栏

    元件功能命名空间允许的子元素属性
    Toolbar用于保存工具栏
    的容器项目。
    UnityEditor.UIElements任何 VisualElementVisualElement所有属性 
    ToolbarButton工具栏的按钮。UnityEditor.UIElements没有Button的所有属性 
    ToolbarToggle工具栏的单选按钮。UnityEditor.UIElements没有Toggle所有属性 
    ToolbarMenu工具栏的下拉菜单。菜单有一个向下的箭头。UnityEditor.UIElements没有TextElement所有属性 
    ToolbarSearchField工具栏的搜索框。UnityEditor.UIElements没有 VisualElement所有属性
    ToolbarPopupSearchField带有搜索选项弹出菜单的搜索框。UnityEditor.UIElements没有 VisualElement所有属性
    ToolbarSpacer在工具栏按钮之间插入固定数量的空白的元素。UnityEditor.UIElements没有VisualElement所有属性 

    视图和窗口

    元件功能命名空间允许的子元素属性
    ListView显示元素列表。UnityEngine.UIElements没有所有属性VisualElement
    item-height:列表中每个项目的高度(以像素为单位)
    ScrollView可滚动视图,带有水平和垂直滚动条。UnityEngine.UIElements任意数量的VisualElement所有属性VisualElement
    mode:滚动视图的模式。默认情况下,它设置为ScrollViewMode.Vertical
    show-horizontal-scroller:一个布尔值,指示是否显示水平滚动条。默认情况下,它设置为false
    show-vertical-scroller:一个布尔值,指示是否显示垂直滚动条。默认情况下,它设置为false
    horizontal-page-size:水平滚动条的页面大小值
    vertical-page-size:垂直滚动条的页面大小
    TreeView用于在树层次结构中显示元素的视图。UnityEngine.UIElements任意数量的VisualElement所有属性VisualElement
    item-height:显示的基础列表中项目的高度
    PopupWindowUIElements窗口,显示在其他内容之上。UnityEditor.UIElements没有所有属性 TextElement
    展开全文
  • 选择一个元素后,将出现一个包含加载程序图像的弹出窗口。 操作完成后,加载程序将替换为屏幕截图。 现在,您可以通过单击下载按钮将图像下载到计算机上。 如果要关闭屏幕快照的弹出窗口,请单击左上角的关闭按钮。 ...
  • vcwb-pro-elements-源码

    2021-05-31 13:46:45
    proModalBox(弹出) 附加元素使用 proModalBox(弹出) 添加此元素后,您将看不到它,因为默认情况下它是隐藏的。 您必须使用参数“打开模态元素选择器”来查找将触发打开模态框的元素。 Selector 将通过 ...
  • Delete Elements-crx插件

    2021-04-03 10:57:06
    您可以删除不想看到的网站上的弹出窗口,标题或其他任何内容! 我的chrome扩展程序允许您使用alt + click删除您不想在网站上看到的任何元素。 安装此扩展程序后,您可以专注于网站的内容,而不是导航栏,侧边栏和不...
  • 这是 Jerry 2021 年的第 33 篇文章,也是汪子熙公众号总共第 309 篇原创文章。 Jerry 的日常工作内容从 2020 年 8 月转到 Angular 前端开发之后,算是领略...同 Angular 相比,使用 SAP Fiori Elements 的从业者的绝对

    这是 Jerry 2021 年的第 33 篇文章,也是汪子熙公众号总共第 309 篇原创文章。

    Jerry 的日常工作内容从 2020 年 8 月转到 Angular 前端开发之后,算是领略到了这个流行前端框架繁荣生态圈的风采:在开发过程中遇到 Angular 技术问题时,很容易在社区里找到大量相关文章。除了每天我都要浏览的 Angular 官网之外,我也经常阅读一些国内外大神写的关于 Angular 源代码分析的博客。

    同 Angular 相比,使用 SAP Fiori Elements 的从业者的绝对人数没有 Angular 多,除了 SAP 官网文档之外,介绍 Fiori Elements 源代码实现和工作原理的文章不多,中文材料就更少了。

    因此 Jerry 试着用中文写了一些 SAP Fiori Elements 使用和工作原理介绍的文章,希望对这个开发框架的中文生态圈贡献一点微薄之力:

    在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用

    答网友提问:使用 SAP Fiori Tools 创建的 Fiori Elements 应用,如何进行二次开发?

    本地开发好的 SAP Fiori Elements 应用,如何部署到 ABAP 服务器上

    深入掌握 SAP Fiori Elements 工作原理的前提条件:理解 Smart Field

    本文继续通过 SAP Fiori Elements 应用一个实际增强的例子,来阐述其工作原理。

    Jerry 上述列举的文章,介绍了如何基于 SAP ES5 Demo 系统上部署的一个 OData 服务,创建一个类型为 List Report 的 SAP Fiori Elements 应用。其界面如下:

    其中表格区域的工具栏里,黑色高亮框内为 Fiori Elements 表格控件自带的按钮,提供了表格行项目的复制,创建,删除等功能。而红色的按钮则是我通过 Fiori Elements 应用增强的方式绘制出来的。

    本文我们会分享:如何在 SAP Fiori Elements 表格控件的工具栏里,添加新的自定义按钮。

    本系列后续文章,Jerry 会介绍,如何在自定义按钮的点击事件处理函数里,用代码取得当前选中行项目的明细信息。

    Jerry 之前的文章 答网友提问:使用 SAP Fiori Tools 创建的 Fiori Elements 应用,如何进行二次开发?,曾经提到了在 Fiori Elements 项目工程的 manifest.json 文件里,通过声明并实现 sap.ui.controllerExtensions 的方式来进行二次开发。sap.ui.controllerExtensions 可以理解成 ABAP 里的 BAdI definition,而我们基于 sap.ui.controllerExtensions 创建的自定义控制器 (controller.js), 则可类比成 ABAP BAdI 增强的具体实现。

    在 manifest.json 的 extends 区域里维护如下代码:

    上述代码的关键点解释:

    1. 为该项目声明一个 sap.ui.controllerExtension 的实现,其源代码位于我们新建的控制器里。

    2. 声明自定义控制器的 id,稍后我们会手动创建这个控制器:com.sap.jerry.jerryfioriapp.ext.controller.ListReportExtension.

    3. 声明这个自定义控制器工作的 OData EntitySet 名称。

    4. 声明按钮明细,在 SAP Fiori Elements 里按钮实现的模型称为 Action.

    上图声明了自定义 Action 的若干属性:

    id 属性值,最后会作为渲染出的 HTML 原生代码中 button 标签 id 值的一部分。
    text 属性值,即 UI 显示按钮的标签值。
    press 属性值即该按钮的点击处理函数的名称,我们稍后需要在自定义控制器里实现一个同名函数。
    requiresSelection 属性,顾名思义,如果为 true,表明该按钮只有当表格某行项目被选中时才能够被点击。例如下图所示,表格区域没有任何一行被选中,此时我的自定义按钮,处于不可点击状态。

    manifest.json 里的增强定义完毕后,接着我们新建一个控制器 ListReportExtension.controller.js,在这个文件里编写 manifest.json 里声明的函数,即按钮点击事件处理函数
    onCustomAction1

    目前,点击自定义按钮后,只是弹出一个对话框而已:

    如上图所示,点击自定义按钮之后,看到了期望的弹出框。我们再修改按钮的属性,进行一些额外的测试。

    给自定义按钮添加一个 global 为 true 的属性:

    重新打开页面,发现该按钮跑到应用右上方,成为一个全局按钮了。

    把 global 属性换成 determining,这次自定义按钮跑到 footer 区域了:

    想知道我是如何知道 global,determining 这些属性的名称吗?答案是阅读 SAP Fiori Elements XML 视图的源代码实现。

    Jerry 之前的文章 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用 曾经提到,SAP Fiori Elements 预置了很多页面模板:

    List Report Object Page

    Worklist

    Analytical List Page

    Overview Page

    这些页面模板的布局,均采取 XML 视图实现。

    以调试模式启动 SAP Fiori Elements 应用,即可在 Chrome 开发者工具 network 标签页里,观察到这些 XML 视图的加载:

    上面这张图信息量很大。首先左边列表里,红色高亮的 ListReport.view.xml, 当然就是 List Report 模板的 XML 视图实现了。这个 XML 视图实现里包含了两个页面片段 (fragment),即上图右边标号为 1 和 2 的元素:

    FullscreenPage.fragment.xml
    CreateWithDialog.xml

    一个页面片段又可以包含若干个页面片段。换言之,List Report (以及 SAP Fiori Elements 的其他页面模板) 的 XML 视图实现,是以 ListReport.view.xml 为根节点的一棵树状结构,叶节点为不同的页面片段。

    上图不同高亮颜色的页面片段,均和 SAP Fiori Elements 自定义按钮的渲染相关,绘制成树状结构如下:

    箭头符号表示包含关系,比如 SmartTable.fragment.xml 源代码里,包含了名为 SmartTableToolbar 的视图片段。

    为什么本文之前提到的在 manifest.json 里添加的 determining = true 的自定义按钮,会出现在 List Report 的 footer 区域?答案就在 FullscreenPage 页面片段的源代码里。

    如上图所示,在绿色的 footer 标签里,使用 XML 视图指令,template:repeat ,遍历绑定到该页面片段的 Actions 结构,将结构里每一个元素,赋给模板变量 customaction, 该变量此时包含的就是 manifest.json extends 区域里声明的自定义按钮的明细。 然后用另一个模板指令,template:if, 判断当前自定义按钮的属性,如果 determining 属性为 true,且 global 属性为 false,则在当前区域即 footer 区域渲染该自定义按钮。

    因此最后在 footer 区域渲染的自定义按钮效果如下:

    而 List Report 表格的工具栏区域的按钮,实现在页面片段 BreakoutActions.fragment.xml 里:

    第 7 行的注释写得很清楚了,使用 template: if 指令,判断下列布尔表达式的值:

    !KaTeX parse error: Expected 'EOF', got '&' at position 28: …n>determining} &̲& !{customaction>global}

    如果表达式的值为 true,则渲染被 template: if 包裹的 button 元素。

    上图 template:if, 是 SAP UI5 针对 XML 视图实现的自定义指令,在需要满足根据某种判断条件来显示或隐藏 UI 元素此类需求时特别有用。其效果和使用方式,和 Angular 里的结构型指令 ngIf 非常类似。

    比如下图是SAP Commerce Cloud (Spartacus UI) Organization Unit 明细页面视图实现的部分截图,54 行的 div 标签上,施加了一个 ngIf 指令,分配的布尔表达式是 model.approvalProcess.name, 语义是:当且仅当 model.approvalProcess.name 的值不为空时,才渲染这个 div 标签及其子元素。

    最后一个问题:例如 BreakoutActions 页面片段里,UI5 自定义指令绑定的这些 Actions 模型,数据来自哪里?

    当然是来自 Fiori Elements 工程里的 manifest.json 文件里定义的同名属性 Actions:

    在 SAP Fiori Elements 应用启动时,manifest.json 文件会被框架代码 Component.js 的 loadManifests 方法加载,其文本内容会被反序列化成 JSON 对象:

    manifest.json 文件的 Actions 区域的内容,会被绑定到 List Report 相关的页面片段里,参与各种自定义指令 template: xxx 的执行流程中。

    希望通过本文的介绍,大家对于 SAP Fiori Elements List Report 里自定义按钮的渲染逻辑,能够有进一步的理解。

    本系列后续文章,Jerry 会介绍,如何让 SAP Fiori Elements 应用表格区域里,选中的行项目的明细信息,包含在自定义按钮点击后显示的弹出对话框里。敬请期待。

    更多阅读

    更多Jerry的原创文章,尽在:“汪子熙”:

    展开全文
  • Top K Frequent Elements

    2016-10-24 15:58:11
    Top K Frequent Elements Total Accepted: 35802Total Submissions: 80109Difficulty: MediumContributors: Admin Given a non-empty array of integers, return the k most f

    题目:

    Top K Frequent Elements

    • Total Accepted: 35802
    • Total Submissions: 80109
    • Difficulty: Medium
    • Contributors: Admin

    Given a non-empty array of integers, return the k most frequent elements.

    For example,
    Given [1,1,1,2,2,3] and k = 2, return [1,2].

    Note:

    • You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
    • Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

    Subscribe to see which companies asked this question

    代码:

    class Solution {
    public:
        vector<int> topKFrequent(vector<int>& nums, int k) {
            unordered_map<int,int> map;
            for(int i=0; i<nums.size(); i++)
            {
                map[nums[i]]++;
            }
            vector<int> res;
            priority_queue<pair<int,int>> pq;
            for(auto it=map.begin(); it!=map.end(); it++)
            {
                pq.push(make_pair(it->second,it->first));
            }
            
            int nn=pq.size();
            for(int i=0; i<k; i++)
            {
                res.push_back(pq.top().second);
                pq.pop();
               
            }
            return res;
            
        }
    };

    分析:挺有借鉴意义的一个题,能想到最简单的方法,单复杂度高,慢慢的习惯使用unorder_map与priority_queue等有时能有效的解决问题。

               这里先将数组遍历,找到相同的元素放到map中,然后再放入priority_queue中根据第二个元素排序,数组元素多的优先被弹出,弹出k

               的元素即为要求的结果。

         

    展开全文
  • Remove Linked List Elements

    2015-07-13 10:29:34
    class Solution { public:  ListNode* removeElements(ListNode* head, int val) {  if(head==NULL) return NULL;  ListNode *head1,*p,*pre;  head1=head;  while(head1&&hea
  • Photoshop elements包含了专业版的绝大多数特性并作出提升,这个程序允许用户在同一产品中创建、编辑、组织和共享图像。 最初ps elements与 Photoshop 7一起发行,面向摄影爱好者,因此缺少许多对于专业出版环境有用...
  • 在用startuml画类图时,老是出现 connect elements exactly。错误图片为: 翻译过来为:“连接元素要完全”。也就是连接时候没有对好元素。 解决办法是:画连接线的时候从元素中间开始,也就是线的连接两端一定要在...
  • QT Demo 之 imageelements

    千次阅读 2014-11-12 09:27:06
    通过学习imageelements示例代码,我们来了解一下Qt Quick程序中如何来多样的显示image。
  • Jerry 之前写的 SAP Fiori Elements 系列文章: 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用 答网友提问:使用 SAP Fiori Tools 创建的 Fiori Elements 应用,如何进行二次开发? ...
  • 347. Top K Frequent Elements

    2019-10-02 14:58:18
    问题描述: ...Given a non-empty array of integers, return thekmost frequent elements. For example,Given[1,1,1,2,2,3]and k = 2, return[1,2]. Note: You may assumekis always valid, 1 ≤k≤...
  • Karabiner Elements for Mac一款非常不错的键盘改建神器,Karabiner Elements mac能将普通键映射到任意键功能,支持创建用户可以在其间切换的多个配置文件。测试环境:MacOS 10.15.2 Karabiner Elements for Mac...
  • 令人惊讶的是,基本的交互式UI模式(如弹出菜单,工具提示和模式)很难在网上获得。 组件库往往很笨重,自以为是,并且与不需要的样式紧密结合在一起。 另一方面,滚动自己的组件感觉就像是在重新发明轮子,并使可...
  • 《The Elements of Programming Style 》是一本很古老的书。尽管 Fortran 我们不太使用,尽管新奇的语言层出不穷,但这些,30 年的岁月依旧无法掩盖其中的真知灼见。 英文版的 google 一下到处有,云风试着摘译几条...
  • Chrome开发者工具详解(1)-Elements、Console、Sources面板Chrome开发者工具面板面板上包含了Elements面板、Console面板、Sources面板、Network面板、 Timeline面板、Profiles面板、Application面板、Security面板、...
  • Remove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5给一条单链表,删除指定值的节点...
  • 在使用starUML 画use case diagrams 时,当画actor 和 use case 之间的 directedAssosiation时, ...经常会出现connect elements exactly 的弹出框,这是什么原因呢? 原因:是因为你拉线的时候没有从起点到终...
  • Is there a method in JDK or apache commons to "pop" a list of elements from a java.util.List? I mean, remove the list of elements and return it, like this method:public Collection pop(Collection eleme...
  • 您可能已经知道, Envato Elements是一个巨大的创意数字资产存储库。 通过订阅它,您可以获得无限制的下载和商业权利,可以访问超过一百万个高级主题,模板,插件和其他便于网站开发的便捷项目。 Elements ...
  • 转载:Chrome开发者工具详解(1)-Elements、Console、Sources面板 Chrome开发者工具面板: 面板上包含了Elements面板、Console面板、Sources面板、Network面板、 performance面板、Memory面板、Application面板、...
  • 如下图所示,这是 SAP Fiori Elements List Report 一个例子,我们想在表格工具栏里,新增一个自定义按钮: 实现方式 在 SAP Fiori Elements 项目工程里,修改 manifest.json,添加如下代码: "extends": { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,957
精华内容 13,582
关键字:

弹出elements