product-admin
Version:
EA admin screens
123 lines (104 loc) • 3.17 kB
HTML
<link rel="import" href="../admin-shared-styles/admin-shared-styles.html">
<link rel="import" href="../bms-behaviors-util/bms-behaviors-util.html">
<link rel="import" href="../product-table-view/product-table-view.html" />
<link rel="import" href="../edit-product/edit-product.html" />
<dom-module id="admin-products-view">
<template>
<style>
:host ::content {
background-color: white;
display: block;
height: inherit;
}
</style>
<product-table-view
id="products"
assets="{{ assets }}"
language="[[ language ]]"
resources="[[ resources ]]"
></product-table-view>
<iron-ajax
auto
method="GET"
headers='{"accept": "application/json", "timeout": 10000, "Cache-Control": "no-cache"}'
url="[[ assetsUrl ]]"
content-type="application/json"
handle-as="json"
on-error="_handleAssetsError"
on-response="_handleAssetsResponse"
loading="{{loading}}"
></iron-ajax>
</template>
<script>
(function (Polymer, util, undefined) {
"use strict";
return Polymer({
is: "admin-products-view",
behaviors: [
Polymer.AppLocalizeBehavior,
bms.behaviors.util
],
// listeners: {
// "app-localize-resources-loaded": "appLocalizeResourcesLoaded"
// },
properties: {
assetsUrl: {
type: String,
value: function () {
return util.properties.BASE_PATH.value.concat("/assets");
}
},
productData: {
type: Array,
value: function () {
return [];
}
},
language: {
type: String,
value: window.navigator.language
// value: "es" // testing
},
},
attached: attached,
_handleAssetsResponse: _handleAssetsResponse,
_handleAssetsError: _handleAssetsError
});
function _handleAssetsError(errResponse){
//TODO: localize and put proper wording when we get proper messages.
errResponse.messageTitle = this.localize("error");
errResponse.errorMessage = this.localize("getAssetsError");
this.fire('alert-error-message', errResponse);
console.error("Failed to get response", errResponse);
}
function _handleAssetsResponse (data) {
data = data.detail.__data__.response.map(function (assetResponse) {
return {
value: assetResponse.uri.split("/")[2],
name: assetResponse.name,
selected: false
};
});
data = _sortByNameAsc(data);
this.set("assets", data);
}
function _sortByNameAsc (arr) {
return arr.sort(function (a, b) {
var nameA = a.name.toLowerCase();
var nameB = b.name.toLowerCase();
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
});
}
function attached () {
this.language = this.language.slice(0, 2).toLowerCase();
this.loadResources(this.resolveUrl("../../resources/locales-".concat(this.language, ".json")));
}
})(Polymer, bms.behaviors.util);
</script>
</dom-module>