`

[预告+更新视频+下载]近期打算开源一个基于Eclipse的 ExtJS可视化开发工具.

阅读更多
12月17日 更新下载

对开源ExtJS可视化开发工具(Eclipse版) 感兴趣的同学可以去这里看看 
NazcaIDE 简要安装说明
  http://code.google.com/p/nazca-ide/w/list

NazcaIDE 下载地址
  http://code.google.com/p/nazca-ide/downloads/list

结合我在JE论坛里发的视频 大家可以简单的用一用

不过这个版本目前还有很多不足 例如 开发出来的东西还不是纯粹的ExtJS的代码 等等 这些问题 计划在春节前解决

--------------------
12月16日 更新三个视频

视频目前还是初版,没有说明,大家先凑活着看吧

视频1:
演示了 如何在J2EE项目中,使用该工具开发一个简单的页面,并运行.

视频2:
在视频1的基础上,演示了如何利用JavaBean快速创建页面中的datastore.
并演示了如何通过"直接调用服务端Java方法来加载数据".

视频3:
在视频2的基础上,演示了如何通过servlet加载数据.


-----------------------


该项目是一个Eclipse插件.在很久以前 我提到过这个项目
最近我在忙什么: 参与开发一个Ext可视化编辑器

-------------------------

这个项目最初是 我的几个同事发起的, 我后来也参与其中.
最初的定位是做一个开源免费的 Eclipse下的Web页面可视化开发工具,
帮助开发人员在J2EE项目中,快速的实现基于Ajax技术的展现层页面.

目前展现层解决方案是基于ExtJS的,但未来将不仅仅局限于ExtJS.
该工具生成的其实是一份xml格式的中间代码(也可以生成最终代码), 在运行时(也可以在设计时)转换成ExtJS的代码.
其中这个转换器是可替换的. 例如替换成dojo的 那么展现层就是Dojo了, 替换成yui 那么就是yui的...
不过 目前还没有人力和时间去实现其他的转换器.

(当然 此工具主要面向的还是企业/行业的B/S应用软件开发,而不适用于互联网应用)
-------------------------

后来 我所在的公司觉得这个项目对于公司自有产品也有很大的帮助,
为此就专门成立了一个小的项目组,为公司的EOS产品开发一个 ExtJS Designer for EOS的版本.


于是 这个开源项目的计划就暂时搁浅了.
前段时间这个 for eos 版本的开发结束了,
我们几个开发者希望能够继续之前的开源免费计划.
此事也得到了公司的支持.
(这个项目就是我在这篇帖子里提到的项目)


先放出两张截图吧




doubanclaim5baff1fbf005fc2a


分享到:
评论
91 楼 aliancexuan 2012-01-06  
刚看到这个插件,非常喜欢,现在是不是不提供源码了啊?
90 楼 yugiohboy 2011-12-16  
这个一定要看看,最近j2ee太忙了
89 楼 xiexjbailx 2011-08-10  
源代码 地址 : http://210.22.154.195/nazca_dev.zip
失效啊,那位同仁能帮忙解决一下啊!谢谢了!
88 楼 ldlzp 2010-01-07  
是我找到的第一个ext可视化开发工具,熟悉一下先。
87 楼 fins 2010-01-07  
关注这个项目的朋友 可以去

http://fins.iteye.com/blog/564476

看看

以后我会不定时更新最新动态.
86 楼 stkfordgk 2010-01-05  
先看看,学习,学习
85 楼 windFeng 2009-12-29  
谢谢goldduck,已经搞定了
在之前的回帖中,fins已经提示过的,粗心啊
原文:
需要设置一下 "Debug..."和 "Run..." 里的New_configuration相关属性.

点击主菜单中的 Run.  选择 "Debug..."或 "Run..."
选中 New_configuration

在右边 找到 Configuration选项卡

选中里面的 "Clear  configuration area lanuching ".

84 楼 goldduck 2009-12-28  
windFeng 写道
下载之后,放到c盘下,运行eclipse,启动之后发现nazca视图窗口未加载(图一),导入demo后,ui文件不是以视频中的方式打开的(图二)。
因为以前一直是用的myeclipse,所以对eclipse集成插件不怎么了解,希望已经成功的指点一下







如果你是用原代码方式,需要运行 debug->debug as ->eclipse appliaction
83 楼 windFeng 2009-12-28  
下载之后,放到c盘下,运行eclipse,启动之后发现nazca视图窗口未加载(图一),导入demo后,ui文件不是以视频中的方式打开的(图二)。
因为以前一直是用的myeclipse,所以对eclipse集成插件不怎么了解,希望已经成功的指点一下




82 楼 upup1000 2009-12-28  
支持小胖,哈哈。原来在搞ext4eclipse的插件,我说你怎么消失了那么久呢
81 楼 wkek 2009-12-27  
czpae86 写道
EXT可视化并不能提高太大的效率,建议初学者不要使用,


能讲讲为什么可视化工具没有帮助?什么样的工具对初学者有帮助?
初学者怎么才能学好EXT
80 楼 czpae86 2009-12-27  
EXT可视化并不能提高太大的效率,建议初学者不要使用,
79 楼 zhaozhongwei 2009-12-25  
对了,我不知道什么原因,导致对其它几个插件版本有较强的依赖~~~这个不怎么好,对用户限制太大了,小建议呵呵
78 楼 zhaozhongwei 2009-12-25  
下载看看,顺便支持一下fins,我也做开源,eclipse上一个非常非常小的项目的committer 。有时间研究研究,可以改改bug啥的呵呵
77 楼 fins 2009-12-25  


补充 :

由于我的失误 这个开发整合包有点小问题

已经下载的同学 需要设置一下 "Debug..."和 "Run..." 里的New_configuration相关属性.


点击主菜单中的 Run.  选择 "Debug..."或 "Run..."
选中 New_configuration

在右边 找到 Configuration选项卡

选中里面的 "Clear  configuration area lanuching ".

OK
76 楼 tide2046 2009-12-25  
谢谢楼主分享。正在做一个类似的开发平台。这个东西对我帮助很大,谢谢
75 楼 fins 2009-12-24  
"Resource is out of sync with the file system: /NazcaDemo/WebContent/form.ui"

刷新一下 NazaDemo 这个项目 就ok了.
74 楼 elementstorm 2009-12-24  
fins,报错了,无法运行...
18:17:41,937 ERROR WebEditorPlugin:223 -
org.eclipse.core.internal.resources.ResourceException: Resource is out of sync with the file system: /NazcaDemo/WebContent/form.ui.
at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:606)
at org.eclipse.core.internal.resources.File.getContents(File.java:290)
at org.eclipse.core.internal.resources.File.getContents(File.java:279)
at org.nazca.ide.designer.page.WebUIEditor.reloadUI(WebUIEditor.java:404)
at org.nazca.ide.designer.page.WebUIEditor.reloadUI(WebUIEditor.java:424)
at org.nazca.ide.designer.page.WebUIEditor.setInput(WebUIEditor.java:578)
at org.eclipse.ui.forms.editor.FormEditor.init(FormEditor.java:132)
at org.nazca.ide.designer.page.WebUIEditor.init(WebUIEditor.java:196)
at org.eclipse.ui.internal.EditorManager.createSite(EditorManager.java:842)
at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:583)
at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:372)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566)
at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:214)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2595)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2528)
at org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPage.java:2520)
at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:2505)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2500)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2485)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:388)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:350)
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:275)
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:139)
at org.eclipse.jdt.internal.ui.actions.OpenActionUtil.open(OpenActionUtil.java:49)
at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:190)
at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:174)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:267)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:243)
at org.eclipse.jdt.internal.ui.navigator.OpenAndExpand.run(OpenAndExpand.java:50)
at org.eclipse.ui.actions.RetargetAction.run(RetargetAction.java:220)
at org.eclipse.ui.internal.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:114)
at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:817)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:843)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:44)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:149)
at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:815)
at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1069)
at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:353)
at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1168)
at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:249)
at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:243)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:283)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
java.lang.NullPointerException
at org.nazca.base.engine.translator.parser.ParserManager.getWidgetParser(ParserManager.java:62)
at org.nazca.base.engine.translator.parser.impl.WebGuiParser.parseWidget(WebGuiParser.java:74)
at org.nazca.base.engine.translator.parser.impl.WebGuiParser.parseRootWidget(WebGuiParser.java:78)
at org.nazca.base.engine.translator.UITranslator.parseRootWidget(UITranslator.java:79)
at org.nazca.base.engine.translator.UITranslator.generateJSCode(UITranslator.java:311)
at org.nazca.base.engine.translator.UITranslator.generateJSCode(UITranslator.java:118)
at org.nazca.ide.engine.translator.DesigntimeTranslator.generatePageCode(DesigntimeTranslator.java:120)
at org.nazca.base.engine.HtmlEngine.write(HtmlEngine.java:66)
at org.nazca.base.engine.helper.EngineHelper.translate(EngineHelper.java:50)
at org.nazca.ide.designer.page.WebUIEditor.generate(WebUIEditor.java:659)
at org.nazca.ide.designer.page.WebUIEditor.resetContent(WebUIEditor.java:636)
at org.nazca.ide.designer.page.WebUIEditor.loadEditor(WebUIEditor.java:598)
at org.nazca.ide.designer.page.WebUIEditor.setInput(WebUIEditor.java:581)
at org.eclipse.ui.forms.editor.FormEditor.init(FormEditor.java:132)
at org.nazca.ide.designer.page.WebUIEditor.init(WebUIEditor.java:196)
at org.eclipse.ui.internal.EditorManager.createSite(EditorManager.java:842)
at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:583)
at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:372)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566)
at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:214)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2595)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2528)
at org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPage.java:2520)
at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:2505)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2500)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2485)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:388)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:350)
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:275)
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:139)
at org.eclipse.jdt.internal.ui.actions.OpenActionUtil.open(OpenActionUtil.java:49)
at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:190)
at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:174)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:267)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:243)
at org.eclipse.jdt.internal.ui.navigator.OpenAndExpand.run(OpenAndExpand.java:50)
at org.eclipse.ui.actions.RetargetAction.run(RetargetAction.java:220)
at org.eclipse.ui.internal.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:114)
at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:817)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:843)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:44)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:149)
at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:815)
at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1069)
at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:353)
at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1168)
at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:249)
at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:243)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:283)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
73 楼 raojunscu 2009-12-24  
非常感谢!真的很佩服你们!谢谢!
72 楼 fins 2009-12-24  
对NazcaIDE 的开发感兴趣的同学 注意了

现在放出 NazcaIDE的开发环境 以及 源代码
这次放出的也是一个整合安装包 大小302M 其中包含 WTP all in one (Eclipse 3.2.2 +WTP 1.5) Nazca源代码 Nazca依赖的第三方插件/组件 若干开发的辅助小插件(properties文件编辑器 easyShell 等)


地址 : http://210.22.154.195/nazca_dev.zip

下载时请 不要使用多线程下载工具,否则服务器容易挂掉 谢谢合作

下载后 解压到C盘根目录后 (解压后 目录结构为 c:\nazca_dev\eclipse , c:\nazca_dev\src 等) 运行c:\nazca_dev\eclipse\eclipse.exe 启动eclipse 进入后 应该可以看到 里面已经导入了源代码 (源代码在c:\nazca_dev\src 内)

以插件方式运行工作空间 即可启动NazcaIDE.

启动后的 NazcaIDE 里,也已经包含了一个Nazca的Demo项目,供大家测试.

开发环境要求: 安装环境: windows xp 32位 (或兼容环境) jdk 1.5 以上版本 内存1G 硬盘空间600M

为了便于统计下载人次   希望下载的同学可以在此帖后面跟帖 谢谢了.

相关推荐

    ExtJs可视化开发工具

    ExtJs可视化开发工具,或尽然拖放控件轻松实现页面布局,很好用

    extjs可视化开发工具

    extjs可视化开发工具,希望可以帮助大家

    ExtJs可视化开发工具3.0

    这是一个为了节时和方便的ExtJs可视化开发工具

    ExtJS 可视化开发工具大全

    ExtJS 可视化开发工具大全 在线使用地址:http://ux.extjs.org.cn/GuiDesigner/#

    Extjs 可视化开发工具(中文)

    ExtJS开发工具,首先安装xds_preview.air文件。然后把Ext_Designer_Preview.rar解压覆盖刚刚的安装目录。覆盖的目的是实现汉化。

    extjs可视化开发软件

    extjs可视化开发软件

    ExtJs可视化工具

    ExtJs 推出了ExtJs 可视化开发工具,这里是所需的三个文件:AdobeAIRInstaller.zip,Ext_Disigner_Preview.rar,xds_preview.air。请按说明文档一次安装

    extjs 可视化开发工具

    大于20m分成2个压缩包(此处为包2),下载两个压缩包到同一目录解压,安装前将主机系统系统时间往前调如2003年6月2日,安装完后,运行程序,系统提示需要用户名和密码,点击注册可以完成用户名密码的获得,填入后...

    EXTJS 可视化开发工具

    EXTJS 可视化开发工具,拖动得到所需要的效果可生成extjs代码,非常方便。

    ExtJS可视化开发工具

    ExtJS可视化开发工具,布局仿VS2008,对于ExtJS的开发效率大大提高

    基于EXTJS的可视化Web页面设计工具的研究与开发

    基于EXTJS的可视化Web页面设计工具的研究与开发基于EXTJS的可视化Web页面设计工具的研究与开发基于EXTJS的可视化Web页面设计工具的研究与开发基于EXTJS的可视化Web页面设计工具的研究与开发

    EXTJS可视化编辑工具 Ext_Designer_Preview 汉化破解版

    EXTJS可视化编辑工具,Ext_Designer_Preview汉化破解版。 安装顺序: 1.AdobeAIRInstaller.exe; 2.xds_preview.air; 3.汉化包%2B变正式版.rar 解压这个包,然后覆盖原来的。

    ExtJS3.0可视化开发工具

    真正的ExtJS 3.0可视化开发工具,支持WebUI和Code可视化设计.

    Extjs4.0后 可视化开发工具

    Extjs4.0后 可视化开发工具 绝对值10分 让你轻松完成样式布局

    ExtJS可视化工具

    这是是一款开源的跨平台、数据库和浏览器的可视化ExtJS应用开发平台。 特色: .基于浏览器的集成开发环境 .丰富的组件库,可自定义扩展ExtJS组件 .开发应用简单快速 .高效率和高稳定性 .跨平台、数据库和...

    extjs可视化工具

    extjs可视化工具extjs可视化工具extjs可视化工具extjs可视化工具

    好不容易找的extjs可视化编辑器

    前几天介绍过在2.X中可以使用extbuilder这个Eclipse插件来可视化开发ExtJs,今天又发现了一个在线版,唯一不同的是,在线版本只能导出json格式数据.最难得的是这一个项目也是采用ExtJs开发,并且全部代码开源. 设计器的...

    CooliteToolkit(ExtJS可视化控件)Demo

    Coolite Toolkit 是一个支持ASP.NET AJAX的Web控件,Coolite Toolkit非常适合做web应用程序的开发,它提供了很多专业的Asp.net输入/验证/显示控件,和页面布局的框架,同时完全支持ajax,因为它是所有的组件是居于...

    extjs可视化设计器

    ext可视化设计工具,可以生成代码. 操作说明: 1、解压后运行xds_preview.air安装 2、将Ext_Designer_Preview文件夹下文件覆盖第一步安装目录中的文件

Global site tag (gtag.js) - Google Analytics