From 5f161d21b6c29a8e2324ac184cd1bcf8667cc6b9 Mon Sep 17 00:00:00 2001 From: Shu Muto Date: Wed, 21 Dec 2016 14:51:02 +0900 Subject: [PATCH] Add track-by for updating hz-resource-table hz-resource-table needs track-by attribute for refreshing rows. And the identifier for track-by in each items needs timestamp (created_at, updated_at or somthing) to detect difference between old and new records. This patch adds track-by attribute for hz-resource-table tag, and set ID and timestamp into trackBy attribute for each items. Change-Id: I6217b1397bf4448f21b0bb1663d09bd552c0280a --- .../{{cookiecutter.module_folder}}/api/client.py | 3 +++ .../{{cookiecutter.panel}}s/panel.html | 3 ++- .../{{cookiecutter.panel}}s.service.js | 12 +++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/api/client.py b/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/api/client.py index 53657f6..ada1ca1 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/api/client.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/api/client.py @@ -21,6 +21,7 @@ from openstack_dashboard.api import base # for stab, should remove when use CLI API import copy +from datetime import datetime import uuid @@ -78,6 +79,7 @@ def {{cookiecutter.panel}}_create(request, **kwargs): # create dummy response args["uuid"] = uuid.uuid1().hex + args["created_at"] = datetime.now().isoformat() created = StubResponse(args) for k in args: setattr(created, k, args[k]) @@ -98,6 +100,7 @@ def {{cookiecutter.panel}}_update(request, id, **kwargs): # update dummy response args["uuid"] = id + args["updated_at"] = datetime.now().isoformat() updated = StubResponse(args) for k in args: setattr(updated, k, args[k]) diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/panel.html b/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/panel.html index dc79820..04a3684 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/panel.html +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/panel.html @@ -1,5 +1,6 @@ - + diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/{{cookiecutter.panel}}s.service.js b/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/{{cookiecutter.panel}}s.service.js index 01331e6..a5dd213 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/{{cookiecutter.panel}}s.service.js +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_folder}}/static/dashboard/{{cookiecutter.panel_group}}/{{cookiecutter.panel}}s/{{cookiecutter.panel}}s.service.js @@ -41,7 +41,17 @@ }; function getPromise(params) { - return api.get{{cookiecutter.panel_func}}s(params); + return api.get{{cookiecutter.panel_func}}s(params).then(modifyResponse); + } + + function modifyResponse(response) { + return {data: {items: response.data.items.map(modifyItem)}}; + + function modifyItem(item) { + var timestamp = item.updated_at ? item.updated_at : item.created_at; + item.trackBy = item.id.concat(timestamp); + return item; + }; } function urlFunction(item) {