用于表单设计的视图转换方法、装置和电子设备与流程

文档序号:14869030发布日期:2018-07-06 12:33阅读:170来源:国知局

本公开涉及信息技术领域,具体地,涉及一种用于表单设计的视图转换方法、装置和电子设备。



背景技术:

随着互联网等信息技术的迅猛发展,应用于工业、政务、管理等领域的表单业务都开始使用电子表单。电子表单能够收集大量的数据信息、并且能够存储在本地或云端的数据库中,便于对数据进行分析、检索和统计。现有的电子表单设计器通常分为两种视图:设计视图和源码视图,其中设计视图展现的是经过渲染后的表单,可以通过拖拽、录入等方式对表单直接进行编辑,源码视图展现的是表单对应的源码,为表单设计提供了更加多样的编辑途径。

现有的电子表单设计器中,每一次源码视图向设计视图的转换过程,不论源码视图中的源码是否发生改变,都需要对源码重新进行编译,对表单重新进行渲染生成设计视图,消耗了硬件资源和时间。



技术实现要素:

本公开的目的是提供一种用于表单设计的视图转换方法、装置和电子设备,用以解决源码视图向设计视图的转换过程中时间和硬件资源的消耗的问题。

为了实现上述目的,根据本公开实施例的第一方面,提供一种用于表单设计的视图转换方法,所述方法包括:

当从第一表单的源码视图向设计视图切换时,获取所述源码视图中当前源码的第一哈希值;

将所述第一哈希值和历史源码的第二哈希值进行对比,所述历史源码是上一次从所述源码视图向所述设计视图切换时的所述源码视图中的源码;

当所述第一哈希值和所述第二哈希值相同时,显示上一次渲染的所述设计视图。

可选地,所述获取所述源码视图中当前源码的第一哈希值,包括:

通过对所述当前源码进行格式处理,去除所述当前源码中的空格和空行;

对格式处理后的所述当前源码进行哈希计算得到所述第一哈希值。

可选的,所述方法还包括:

当所述第一哈希值和所述第二哈希值不相同时,重新渲染所述设计视图。

可选的,所述当所述第一哈希值和所述第二哈希值不相同时,重新渲染所述设计视图,包括:

当所述第一哈希值和所述第二哈希值不相同时,根据所述当前源码获取与所述当前源码对应的第一表单控件树,所述第一表单控件树的每个节点对应所述第一表单中的一个控件;

根据所述第一表单控件树的每个节点所对应控件的属性,获取所述第一表单控件树的每个节点的哈希值;

根据所述第一表单控件树中每个节点的哈希值和第二表单控件树中每个节点的哈希值,确定需要重新渲染的控件,所述第二表单控件树为根据所述历史源码获取的表单控件树。

可选的,所述根据所述第一表单控件树中每个节点的哈希值和第二表单控件树中每个节点的哈希值,确定需要重新渲染的控件,包括:

通过将所述第一表单控件树中每个节点的哈希值和所述第二表单控件树中的对应节点的哈希值进行对比,确定所述第一表单控件树中每个节点的哈希值是否有变化;

获取所述第一表单控件树中哈希值有变化的节点作为目标节点;

确定所述目标节点为所述需要重新渲染的控件。

可选的,所述根据所述第一表单控件树中每个节点的哈希值和第二表单控件树中每个节点的哈希值,确定需要重新渲染的控件,还包括:

当第一节点的所有子节点均属于所述目标节点,将所述第一节点作为所述目标节点,所述第一节点为所述第一表单控件树中任一节点。

根据本公开实施例的第二方面,提供一种用于表单设计的视图转换装置,所述装置包括:

获取模块,用于当从第一表单的源码视图向设计视图切换时,获取所述源码视图中当前源码的第一哈希值;

对比模块,用于将所述第一哈希值和历史源码的第二哈希值进行对比,所述历史源码是上一次从所述源码视图向所述设计视图切换时的所述源码视图中的源码;

判断模块,用于当所述第一哈希值和所述第二哈希值相同时,显示上一次渲染的所述设计视图。

可选的,所述获取模块包括:

处理子模块,用于通过对所述当前源码进行格式处理,去除所述当前源码中的空格和空行;

计算子模块,用于对格式处理后的所述当前源码进行哈希计算得到所述第一哈希值。

可选的,所述判断模块还用于:

当所述第一哈希值和所述第二哈希值不相同时,重新渲染所述设计视图。

可选的,所述判断模块包括:

控件树获取子模块,用于当所述第一哈希值和所述第二哈希值不相同时,根据所述当前源码获取与所述当前源码对应的第一表单控件树,所述第一表单控件树的每个节点对应所述第一表单中的一个控件;

哈希值获取子模块,用于根据所述第一表单控件树的每个节点所对应控件的属性,获取所述第一表单控件树的每个节点的哈希值;

判断子模块,用于根据所述第一表单控件树中每个节点的哈希值和第二表单控件树中每个节点的哈希值,确定需要重新渲染的控件,所述第二表单控件树为根据所述历史源码获取的表单控件树。

可选的,所述判断子模块用于:

通过将所述第一表单控件树中每个节点的哈希值和所述第二表单控件树中的对应节点的哈希值进行对比,确定所述第一表单控件树中每个节点的哈希值是否有变化;

获取所述第一表单控件树中哈希值有变化的节点作为目标节点;

确定所述目标节点为所述需要重新渲染的控件。

可选的,所述判断子模块还用于:

当第一节点的所有子节点均属于所述目标节点,将所述第一节点作为所述目标节点,所述第一节点为所述第一表单控件树中任一节点。

根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面提供的用于表单设计的视图转换方法的步骤。

根据本公开实施例的第四方面,提供一种电子设备,包括:第三方面提供的计算机可读存储介质;以及一个或多个处理器,用于执行所述计算机可读存储介质中的计算机程序。

通过上述技术方案,在从源码视图向设计视图切换的过程中,本公开通过获取源码视图中当前源码对应的哈希值,并将获得的哈希值与上一次从源码视图向设计视图切换过程中获得的哈希值进行对比,当对比结果一致时,确定源码视图中的源码没有发生改变,不需要对表单进行重新渲染,可以保留切换至源码视图之前的设计视图。能够减少视图转换过程中频繁渲染对硬件资源的消耗,提高视图转换的速度。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是根据一示例性实施例示出的一种用于表单设计的视图转换方法的流程图;

图2是根据一示例性实施例示出的另一种用于表单设计的视图转换方法的流程图;

图3是根据一示例性实施例示出的另一种用于表单设计的视图转换方法的流程图;

图4是根据一示例性实施例示出的另一种用于表单设计的视图转换方法的流程图;

图5是根据一示例性实施例示出的一种用于表单设计的视图转换装置的框图;

图6是根据一示例性实施例示出的另一种用于表单设计的视图转换装置的框图;

图7是根据一示例性实施例示出的另一种用于表单设计的视图转换装置的框图;

图8是根据一示例性实施例示出的一种电子设备的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在介绍本公开提供的用于表单设计的视图转换方法、装置和电子设备之前,首先对本公开各个实施例所涉及应用场景进行介绍。该应用场景为电子表单设计器,包括设计视图和源码视图两种视图。用户可以通过在源码视图中拖拽、录入等方式进行表单设计,还可以切换到源码视图,通过编写源码来对表单中的不同控件进行操作,操作完成后,将源码视图切换到设计视图,可以在设计视图中查看源码对应的表单。

图1是根据一示例性实施例示出的一种用于表单设计的视图转换方法的流程图,如图1所示,该方法包括:

步骤101,当从第一表单的源码视图向设计视图切换时,获取源码视图中当前源码的第一哈希值。

举例来说,用户通过电子表单设计器设计第一表单,可以分为两种场景:用户先通过设计视图,对第一表单中的不同控件进行设计,之后,将第一表单从设计视图切换为源码视图,对第一表单对应的源码进行进一步的编辑,例如可以编辑第一表单中某个控件的属性(背景颜色、计算公式、顺序或数据格式等)。另一种场景可以是用户直接在源码视图中进行源码编写,设置第一表单中不同控件的属性。当用户在源码视图中完成源码的编写后,需要从第一表单的源码视图向设计视图切换,以查看设计视图中第一表单的展现状态即。在从源码视图向设计视图切换的过程中,对源码视图中当前源码进行哈希计算,获得第一哈希值。

步骤102,将第一哈希值和历史源码的第二哈希值进行对比,历史源码是上一次从源码视图向设计视图切换时的源码视图中的源码。

示例的,在上一次从源码视图向设计视图切换过程中,获得并存储源码视图中上一次的历史源码对应的哈希值,作为该第二哈希值。由于一段数据的哈希值是唯一的,如果这段数据发生了一个字节或多个字节的改变,都会造成改变后的数据对应的哈希值也发生了变化,因此可以通过对比第一哈希值和第二哈希值,来判断源码视图中的当前源码相对于上一次的历史源码是否发生了改变。

步骤103,当第一哈希值和第二哈希值相同时,显示上一次渲染的设计视图。

示例的,当第一哈希值和第二哈希值相同时,能够确定源码视图中当前源码和历史源码完全一致,没有产生任何改变,那么对应的设计视图也不会产生改变,因此不需要对表单进行重新渲染,可以显示上一次渲染的设计视图,也就是保留切换至当前的源码视图之前的设计视图对应的展示状态即可,其中上一次渲染的设计视图是根据上一次修改的源码(可以理解为在当前时刻之前,距离当前时刻最近一次修改的源码)渲染得到的。因此,该上一次修改的源码可能是上述的历史源码,也可以是该历史源码之前的源码。即可以理解为,无论在源码视图和设计视图之间切换多少次,只要在向设计视图转换时该第一哈希值和第二哈希值相同,就说明源码没有变化,无需重新渲染设计视图,直至该第一哈希值和第二哈希值不同时,再重新渲染设计视图。

综上所述,在从源码视图向设计视图切换的过程中,本公开通过获取源码视图中当前源码对应的哈希值,并将获得的哈希值与上一次从源码视图向设计视图切换过程中获得的哈希值进行对比,当对比结果一致时,确定源码视图中的源码没有发生改变,不需要对表单进行重新渲染,可以保留切换至源码视图之前的设计视图。能够减少视图转换过程中频繁渲染对硬件资源的消耗,提高视图转换的速度。

图2是根据一示例性实施例示出的另一种用于表单设计的视图转换方法的流程图,如图2所示,步骤101包括:

步骤1011,通过对当前源码进行格式处理,去除当前源码中的空格和空行。

步骤1012,对格式处理后的当前源码进行哈希计算得到第一哈希值。

举例来说,当用户将第一表单从设计视图切换为源码视图后,对源码视图中的源码只做了格式的修改,没有进行有关第一表单属性的实质性修改,例如:删除了空格、空行,或者添加了空格、空行,再或者在不改变原有语句含义的前提下,将长语句进行换行等处理,都只是修改了源码的格式,对第一表单并没有实际影响,相应的也不需要重新渲染设计视图,因此要避免因为源码格式修改而对第一表单重新进行渲染造成的硬件资源和时间的浪费,在对当前源码进行哈希计算之前,可以先对当前源码进行格式处理,去除当前源码中的空格和空行之后,再进行哈希计算获得第一哈希值。

图3是根据一示例性实施例示出的另一种用于表单设计的视图转换方法的流程图,如图3所示,该方法还包括:

步骤104,当第一哈希值和第二哈希值不相同时,重新渲染设计视图。

示例的,当第一哈希值和第二哈希值不相同时,能够确定当前源码和历史源码不一致,即当前源码与历史源码相比发生了改变,因此需要对表单进行重新渲染。

图4是根据一示例性实施例示出的另一种用于表单设计的视图转换方法的流程图,如图4所示,步骤104包括:

步骤1041,当第一哈希值和第二哈希值不相同时,根据当前源码获取与当前源码对应的第一表单控件树,第一表单控件树的每个节点对应第一表单中的一个控件。

举例来说,根据当前源码获取对应的第一表单控件树,其中第一表单控件树中的每个节点都表示第一表单的一个控件,例如根节点可以表示为第一表单本身(可以看作是第一表单中最顶层的控件),第一表单控件树中的任一子节点对应的控件均属于该节点的父节点对应的控件。

步骤1042,根据第一表单控件树的每个节点所对应控件的属性,获取第一表单控件树的每个节点的哈希值。

示例的,第一表单的每个控件都有相应的属性,根据第一表单控件树中的每个节点所对应控件,和当前源码中第一表单的每个控件相应的属性值,获取每个节点的哈希值。例如,第一节点为第一表单控件树中的任一节点,首先确定第一节点对应第一表单的第一控件,再对当前源码中第一控件相应的属性值进行哈希计算,获得的哈希值作为第一节点的哈希值。

步骤1043,根据第一表单控件树中每个节点的哈希值和第二表单控件树中每个节点的哈希值,确定需要重新渲染的控件,第二表单控件树为根据历史源码获取的表单控件树。

示例的,在上一次从源码视图向设计视图切换过程中,根据历史源码获得了第二表单控件树和第二表单控件树中每个节点的哈希值并进行保存,在得到第一表单控件树中每个节点的哈希值后,对比第一表单控件树中每个节点的哈希值和第二表单控件树中每个节点的哈希值,确定第一表单控件树中哈希值有变化的节点所对应的控件为需要重新渲染的控件。

示例的,步骤1043可以通过以下步骤来实现:

首先,通过将第一表单控件树中每个节点的哈希值和第二表单控件树中的对应节点的哈希值进行对比,确定第一表单控件树中每个节点的哈希值是否有变化。其次,获取第一表单控件树中哈希值有变化的节点作为目标节点。最后,确定目标节点为需要重新渲染的控件。

举例来说,以第一表单控件树和中第二表单控件树中的第一节点(可以理解为本次编辑的当前源码与上次编辑的历史源码中都存在该第一节点对应的控件)为例,将第一表单控件树中的第一节点的哈希值与第二表单控件树的第一节点的哈希值做对比,当第一节点在第一表单控件树中的哈希值与第二表单控件树中第一节点的哈希值不相同时,确定该第一节点的哈希值发生变化,并将该第一节点作为目标节点,同理可以确定第一表单控件树中每个节点的哈希值是否有变化。进一步的,根据目标节点确定对应的控件,并将对应的控件作为需要重新渲染的控件。需要说明的是,目标节点可以是一个集合,其中包括一个或多个节点,并记录了目标节点在第一表单控件树中的位置或序号,或者也可以通过在目标节点上做标记来进行识别目标节点在第一表单控件树中的位置或序号。

即可以理解为每次完成源码编辑,向设计视图切换之前,根据本次编辑的源码生成并保存一个表单控件树,以记录该表单控件树的每个节点的哈希值,以便在下一次向设计视图切换时,利用上一次保存的表单控件树及其每个节点的哈希值来判断哪些节点哈希值有变化,从而在切换到设计视图时对哈希值发生变化的节点所对应的控件进行重新渲染。

另外,在另一种实现方式中,每次向设计视图切换时也可以不保存表单控件树,仅计算和保存每个节点的哈希值,从而在下一次向设计视图切换时,利用上一次保存的每个节点的哈希值来判断哪些节点哈希值有变化。以上述的第一节点为例,可以在上一次向设计视图切换时,将上一次生成的该第二表单控件树中每个节点的哈希值记录在一个哈希值表格中。从而在本次向设计视图切换时,可以将该第一节点的当前的哈希值与该哈希值表格中记录的第一节点的哈希值进行对比,当第一节点的当前的哈希值与哈希值表格中第一节点的哈希值不相同时,确定该第一节点的哈希值发生变化,并将该第一节点作为目标节点,同理可以确定每个节点的哈希值是否有变化。

进一步的,步骤1043还包括:

当第一节点的所有子节点均属于目标节点,将第一节点作为目标节点,第一节点为第一表单控件树中任一节点。

示例的,如果一个控件包括了多个控件,对应在第一表单控件树中,即为一个节点包含了多个子节点,以第一节点为例,当第一节点的所有子节点均属于目标节点时,表示该第一节点下的所有子节点对应的控件均需要重新渲染,也就相当于需要将第一节点对应的控件重新渲染,因此可以直接将第一节点作为目标节点。进一步的,将第一节点作为目标节点后可以将第一节点的所有子节点从目标节点中删除。例如,当目标节点是集合时,将这个集合中第一节点的所有子节点删除,当目标节点是通过标记的方式来识别的,那么将第一节点的所有子节点的标记去除。

综上所述,在从源码视图向设计视图切换的过程中,本公开通过获取源码视图中当前源码对应的哈希值,并将获得的哈希值与上一次从源码视图向设计视图切换过程中获得的哈希值进行对比,当对比结果一致时,确定源码视图中的源码没有发生改变,不需要对表单进行重新渲染,可以保留切换至源码视图之前的设计视图。能够减少视图转换过程中频繁渲染对硬件资源的消耗,提高视图转换的速度。

图5是根据一示例性实施例示出的一种用于表单设计的视图转换装置的框图,如图5所示,该装置200包括:

获取模块201,用于当从第一表单的源码视图向设计视图切换时,获取源码视图中当前源码的第一哈希值。

对比模块202,用于将第一哈希值和历史源码的第二哈希值进行对比,历史源码是上一次从源码视图向设计视图切换时的源码视图中的源码。

判断模块203,用于当第一哈希值和第二哈希值相同时,显示上一次渲染的设计视图。

图6是根据一示例性实施例示出的另一种用于表单设计的视图转换装置的框图,如图6所示,获取模块201包括:

处理子模块2011,用于通过对当前源码进行格式处理,去除当前源码中的空格和空行。

计算子模块2012,用于对格式处理后的当前源码进行哈希计算得到第一哈希值。

可选的,判断模块203还用于:

当第一哈希值和第二哈希值不相同时,重新渲染设计视图。

图7是根据一示例性实施例示出的另一种用于表单设计的视图转换装置的框图,如图7所示,判断模块203包括:

控件树获取子模块2031,用于当第一哈希值和第二哈希值不相同时,根据当前源码获取与当前源码对应的第一表单控件树,第一表单控件树的每个节点对应第一表单中的一个控件。

哈希值获取子模块2032,用于根据第一表单控件树的每个节点所对应控件的属性,获取第一表单控件树的每个节点的哈希值。

判断子模块2033,用于根据第一表单控件树中每个节点的哈希值和第二表单控件树中每个节点的哈希值,确定需要重新渲染的控件,第二表单控件树为根据历史源码获取的表单控件树。

可选的,判断子模块2033用于:

通过将第一表单控件树中每个节点的哈希值和第二表单控件树中的对应节点的哈希值进行对比,确定第一表单控件树中每个节点的哈希值是否有变化。

获取第一表单控件树中哈希值有变化的节点作为目标节点。

确定目标节点为需要重新渲染的控件。

进一步的,判断子模块2033还用于:

当第一节点的所有子节点均属于目标节点,将第一节点作为目标节点,第一节点为第一表单控件树中任一节点。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

综上所述,在从源码视图向设计视图切换的过程中,本公开通过获取源码视图中当前源码对应的哈希值,并将获得的哈希值与上一次从源码视图向设计视图切换过程中获得的哈希值进行对比,当对比结果一致时,确定源码视图中的源码没有发生改变,不需要对表单进行重新渲染,可以保留切换至源码视图之前的设计视图。能够减少视图转换过程中频繁渲染对硬件资源的消耗,提高视图转换的速度。

图8是根据一示例性实施例示出的一种电子设备800的框图。如图8所示,该电子设备800可以包括:处理器801,存储器802,多媒体组件803,输入/输出(i/o)接口804,以及通信组件805。

其中,处理器801用于控制该电子设备800的整体操作,以完成上述的用于表单设计的视图转换方法中的全部或部分步骤。存储器802用于存储各种类型的数据以支持在该电子设备800的操作,这些数据例如可以包括用于在该电子设备800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器802可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,简称eprom),可编程只读存储器(programmableread-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件803可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器802或通过通信组件805发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口804为处理器801和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件805用于该电子设备800与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(nearfieldcommunication,简称nfc),2g、3g或4g,或它们中的一种或几种的组合,因此相应的该通信组件805可以包括:wi-fi模块,蓝牙模块,nfc模块。

在一示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器(digitalsignalprocessor,简称dsp)、数字信号处理设备(digitalsignalprocessingdevice,简称dspd)、可编程逻辑器件(programmablelogicdevice,简称pld)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的用于表单设计的视图转换方法。

在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器802,上述程序指令可由电子设备800的处理器801执行以完成上述的用于表单设计的视图转换方法。

综上所述,在从源码视图向设计视图切换的过程中,本公开通过获取源码视图中当前源码对应的哈希值,并将获得的哈希值与上一次从源码视图向设计视图切换过程中获得的哈希值进行对比,当对比结果一致时,确定源码视图中的源码没有发生改变,不需要对表单进行重新渲染,可以保留切换至源码视图之前的设计视图。能够减少视图转换过程中频繁渲染对硬件资源的消耗,提高视图转换的速度。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,本领域技术人员在考虑说明书及实践本公开后,容易想到本公开的其它实施方案,均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。同时本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。本公开并不局限于上面已经描述出的精确结构,本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1