使用 angularjs 保存网格布局
Save gridster layout using angularjs
我正在使用 Gridster 创建仪表板应用程序:https://github.com/ManifestWebDesign/angular-gridster
我想使用 JSON 将我的布局保存到数据库中。我所知道的是,我将图表数组存储到数据库并获取它。是否可以将小部件列、行和大小存储到特定小部件,这样我就可以使用 angular 样式 {{chart.xsize}} 给出 size-x 和 size-y。创建小部件时,我可以分配默认大小值并仅在用户调整大小或拖动小部件后保存。或者这是完全错误的方法吗?我还能如何将小部件大小和位置存储到数据库中?
我的小部件有 ng-repeat,如下所示:
<div ng-if="chart.type === settings.types.LINEAR_GAUGE">
<div class="panel c8y" gridster-item size-x="2" size-y="1">
<div class="panel-heading">
<h3 class="panel-title">{{chart.title}}</h3>
<button class="btn btn-danger pull-right btn-xs" ng-click="onClickDelete($index)"><span class="glyphicon glyphicon-remove"/></button>
</div>
<div class="panel-body">
<c8y-linear-gauge dp="chart.dp" measurement="chart.data[0].measurement"/>
</div>
</div>
</div>
我实际上已经使用 angular-gridster 构建了几个 angular 仪表板,并将布局保存回数据库。这是我的做法:
<div gridster="gridsterOpts">
<ul>
<li
gridster-item
row="element.posY"
col="element.posX"
size-x="element.width"
size-y="element.height"
ng-repeat="element in elements track by $index">
<div class="element-title">
<!--some header stuff goes here-->
</div>
<div class="element-useable-area">
<!--Main widget stuff goes here-->
</div>
</li>
</ul>
</div>
所以我有一个名为 elements
的数组,用于存储小部件对象。数组中的每个对象都包含高度、宽度和大小的属性。所以,像这样:
{
posY: 0,
posX: 0,
width: 100,
height: 100,
templateUrl: ...,
data: ...
}
幸运的是,由于 angular 绑定,当用户更改 gidster 项目大小或位置时,它也会更改 属性 值!重要的是要注意 elements
数组附加到我使用的 ngStorage 框架中的 $sessionStorage 对象,因此如果页面刷新,所有更改都将保留。
最后,当用户保存仪表板时,我将一个对象写入数据库,其中包含 elements
数组。从而保存所有位置和大小信息。下次您从数据库中调用该对象并使用其数据填充 elements
数组时,您会得到相同的仪表板。
我正在使用 Gridster 创建仪表板应用程序:https://github.com/ManifestWebDesign/angular-gridster
我想使用 JSON 将我的布局保存到数据库中。我所知道的是,我将图表数组存储到数据库并获取它。是否可以将小部件列、行和大小存储到特定小部件,这样我就可以使用 angular 样式 {{chart.xsize}} 给出 size-x 和 size-y。创建小部件时,我可以分配默认大小值并仅在用户调整大小或拖动小部件后保存。或者这是完全错误的方法吗?我还能如何将小部件大小和位置存储到数据库中?
我的小部件有 ng-repeat,如下所示:
<div ng-if="chart.type === settings.types.LINEAR_GAUGE">
<div class="panel c8y" gridster-item size-x="2" size-y="1">
<div class="panel-heading">
<h3 class="panel-title">{{chart.title}}</h3>
<button class="btn btn-danger pull-right btn-xs" ng-click="onClickDelete($index)"><span class="glyphicon glyphicon-remove"/></button>
</div>
<div class="panel-body">
<c8y-linear-gauge dp="chart.dp" measurement="chart.data[0].measurement"/>
</div>
</div>
</div>
我实际上已经使用 angular-gridster 构建了几个 angular 仪表板,并将布局保存回数据库。这是我的做法:
<div gridster="gridsterOpts">
<ul>
<li
gridster-item
row="element.posY"
col="element.posX"
size-x="element.width"
size-y="element.height"
ng-repeat="element in elements track by $index">
<div class="element-title">
<!--some header stuff goes here-->
</div>
<div class="element-useable-area">
<!--Main widget stuff goes here-->
</div>
</li>
</ul>
</div>
所以我有一个名为 elements
的数组,用于存储小部件对象。数组中的每个对象都包含高度、宽度和大小的属性。所以,像这样:
{
posY: 0,
posX: 0,
width: 100,
height: 100,
templateUrl: ...,
data: ...
}
幸运的是,由于 angular 绑定,当用户更改 gidster 项目大小或位置时,它也会更改 属性 值!重要的是要注意 elements
数组附加到我使用的 ngStorage 框架中的 $sessionStorage 对象,因此如果页面刷新,所有更改都将保留。
最后,当用户保存仪表板时,我将一个对象写入数据库,其中包含 elements
数组。从而保存所有位置和大小信息。下次您从数据库中调用该对象并使用其数据填充 elements
数组时,您会得到相同的仪表板。