Skip to content
Snippets Groups Projects
Commit c440fa08 authored by Benoit Lavenier's avatar Benoit Lavenier
Browse files

[fix] remove unused files and code (market place)

parent a25c5316
No related branches found
No related tags found
No related merge requests found
Showing
with 4 additions and 1762 deletions
...@@ -176,52 +176,3 @@ ...@@ -176,52 +176,3 @@
padding-top: 8px; padding-top: 8px;
padding-bottom: 8px; padding-bottom: 8px;
} }
/**
* Market record screen
*/
.market.view-record h1 {
font-size: 25px;
margin-top: 5px;
}
/**
* Add specific Icons
*/
/* Association */
.cion-registry-association:before {
font-family: "Ionicons";
content: "\f212";
}
/* institution */
.cion-registry-company:before {
font-family: "Cesiumicons";
content: "\e903";
}
/* institution */
.cion-registry-institution:before {
font-family: "Cesiumicons";
content: "\e921";
}
/* shop */
.cion-registry-shop:before {
font-family: "Ionicons";
content: "\f110";
}
/* offer*/
.cion-market-offer:before {
font-family: "Ionicons";
content: "\f48d";
}
/* need */
.cion-market-need:before {
font-family: "Ionicons";
content: "\f27c";
}
...@@ -13,10 +13,6 @@ angular.module('cesium.es.app.controllers', ['ngResource', 'cesium.es.services'] ...@@ -13,10 +13,6 @@ angular.module('cesium.es.app.controllers', ['ngResource', 'cesium.es.services']
templateUrl: "plugins/es/templates/menu_extend.html", templateUrl: "plugins/es/templates/menu_extend.html",
controller: "ESMenuExtendCtrl" controller: "ESMenuExtendCtrl"
}, },
'menu-main': {
templateUrl: "plugins/es/templates/menu_extend.html",
controller: "ESMenuExtendCtrl"
},
'menu-user': { 'menu-user': {
templateUrl: "plugins/es/templates/menu_extend.html", templateUrl: "plugins/es/templates/menu_extend.html",
controller: "ESMenuExtendCtrl" controller: "ESMenuExtendCtrl"
...@@ -80,10 +76,6 @@ function ESMenuExtendController($scope, $state, PluginService, esSettings, UIUti ...@@ -80,10 +76,6 @@ function ESMenuExtendController($scope, $state, PluginService, esSettings, UIUti
$scope.extensionPoint = PluginService.extensions.points.current.get(); $scope.extensionPoint = PluginService.extensions.points.current.get();
$scope.enable = esSettings.isEnable(); $scope.enable = esSettings.isEnable();
$scope.showMarketLookupView = function() {
$state.go(UIUtils.screen.isSmall() ? 'app.market_lookup': 'app.market_lookup_lg');
};
$scope.showRegistryLookupView = function() { $scope.showRegistryLookupView = function() {
$state.go(UIUtils.screen.isSmall() ? 'app.registry_lookup': 'app.registry_lookup_lg'); $state.go(UIUtils.screen.isSmall() ? 'app.registry_lookup': 'app.registry_lookup_lg');
}; };
......
This diff is collapsed.
...@@ -184,7 +184,8 @@ angular.module('cesium.es.comment.services', ['ngResource', 'cesium.bma.services ...@@ -184,7 +184,8 @@ angular.module('cesium.es.comment.services', ['ngResource', 'cesium.bma.services
// Open websocket // Open websocket
var time = new Date().getTime(); var time = new Date().getTime();
console.info("[ES] [comment] Starting websocket to listen comments on [{0}/record/{1}]".format(index, recordId.substr(0,8))); console.info("[ES] [comment] Starting websocket to listen comments on [{0}/record/{1}]".format(index, recordId.substr(0,8)));
return exports.raw.wsChanges.open() var wsChanges = exports.raw.wsChanges();
return wsChanges.open()
// Define source filter // Define source filter
.then(function(sock) { .then(function(sock) {
...@@ -194,7 +195,7 @@ angular.module('cesium.es.comment.services', ['ngResource', 'cesium.bma.services ...@@ -194,7 +195,7 @@ angular.module('cesium.es.comment.services', ['ngResource', 'cesium.bma.services
// Listen changes // Listen changes
.then(function(){ .then(function(){
console.debug("[ES] [comment] Websocket opened in {0} ms".format(new Date().getTime() - time)); console.debug("[ES] [comment] Websocket opened in {0} ms".format(new Date().getTime() - time));
exports.raw.wsChanges.on(function(change) { wsChanges.on(function(change) {
if (!change) return; if (!change) return;
var comment = data.mapById[change._id]; var comment = data.mapById[change._id];
if (change._operation === 'DELETE') { if (change._operation === 'DELETE') {
...@@ -303,7 +304,7 @@ angular.module('cesium.es.comment.services', ['ngResource', 'cesium.bma.services ...@@ -303,7 +304,7 @@ angular.module('cesium.es.comment.services', ['ngResource', 'cesium.bma.services
comment.cleanAllListeners(); comment.cleanAllListeners();
}); });
// Close previous // Close previous
exports.raw.wsChanges.close(); exports.raw.wsChanges().close();
}; };
// Expose functions // Expose functions
......
angular.module('cesium.es.market.services', ['ngResource', 'cesium.services', 'cesium.es.http.services', 'cesium.es.comment.services'])
.factory('esMarket', function($q, csSettings, BMA, esHttp, esComment, esUser) {
'ngInject';
function EsMarket() {
var
fields = {
commons: ["category", "title", "description", "issuer", "time", "location", "price", "unit", "currency", "thumbnail._content_type", "picturesCount", "type"]
},
exports = {
_internal: {}
};
exports._internal.category= {
get: esHttp.get('/market/category/:id'),
all: esHttp.get('/market/category/_search?sort=order&from=0&size=1000&_source=name,parent')
};
function getCategories() {
if (exports._internal.categories && exports._internal.categories.length) {
var deferred = $q.defer();
deferred.resolve(exports._internal.categories);
return deferred.promise;
}
return exports._internal.category.all()
.then(function(res) {
if (res.hits.total === 0) {
exports._internal.categories = [];
}
else {
var categories = res.hits.hits.reduce(function(result, hit) {
var cat = hit._source;
cat.id = hit._id;
return result.concat(cat);
}, []);
// add as map also
_.forEach(categories, function(cat) {
categories[cat.id] = cat;
});
exports._internal.categories = categories;
}
return exports._internal.categories;
});
}
function getCategory(params) {
return exports._internal.category.get(params)
.then(function(hit) {
var res = hit._source;
res.id = hit._id;
return res;
});
}
function readRecordFromHit(hit, categories, currentUD, convertPriceToUnit) {
var record = hit._source;
if (record.category && record.category.id) {
record.category = categories[record.category.id];
}
if (record.price && convertPriceToUnit) {
if (!record.unit || record.unit==='UD') {
record.price = record.price * currentUD;
}
}
if (hit.highlight) {
if (hit.highlight.title) {
record.title = hit.highlight.title[0];
}
if (hit.highlight.description) {
record.description = hit.highlight.description[0];
}
if (hit.highlight.location) {
record.location = hit.highlight.location[0];
}
if (record.category && hit.highlight["category.name"]) {
record.category.name = hit.highlight["category.name"][0];
}
}
// thumbnail
record.thumbnail = esHttp.image.fromHit(hit, 'thumbnail');
// pictures
if (hit._source.pictures && hit._source.pictures.reduce) {
record.pictures = hit._source.pictures.reduce(function(res, pic) {
return res.concat(esHttp.image.fromAttachment(pic.file));
}, []);
}
return record;
}
exports._internal.searchText = esHttp.get('/market/record/_search?q=:search');
exports._internal.search = esHttp.post('/market/record/_search');
exports._internal.get = esHttp.get('/market/record/:id');
exports._internal.getCommons = esHttp.get('/market/record/:id?_source=' + fields.commons.join(','));
function search(request) {
request = request || {};
request.from = request.from || 0;
request.size = request.size || 20;
request._source = request._source || fields.commons;
request.highlight = request.highlight || {
fields : {
title : {},
description : {},
"category.name" : {}
}
};
return $q.all([
// load categories
exports.category.all(),
// Get last UD
BMA.blockchain.lastUd()
.then(function (currentUD) {
return currentUD;
})
.catch(function(err) {
console.error(err);
return 1;
}),
// Do search
exports._internal.search(request)
])
.then(function(res) {
var categories = res[0];
var currentUD = res[1];
res = res[2];
if (!res || !res.hits || !res.hits.total) {
return [];
}
return res.hits.hits.reduce(function(result, hit) {
var record = readRecordFromHit(hit, categories, currentUD, true);
record.id = hit._id;
return result.concat(record);
}, []);
});
}
function loadData(id, options) {
options = options || {};
options.fetchPictures = angular.isDefined(options.fetchPictures) ? options.fetchPictures : true;
options.convertPrice = angular.isDefined(options.convertPrice) ? options.convertPrice : false;
return $q.all([
// load categories
exports.category.all(),
// Get last UD
BMA.blockchain.lastUd()
.then(function (currentUD) {
return currentUD;
})
.catch(function(err) {
console.error(err);
return 1;
}),
// Do get source
options.fetchPictures ?
exports._internal.get({id: id}) :
exports._internal.getCommons({id: id})
])
.then(function(res) {
var categories = res[0];
var currentUD = res[1];
var hit = res[2];
var record = readRecordFromHit(hit, categories, currentUD, options.convertPrice);
// Load issuer (avatar, name, uid, etc.)
return esUser.profile.fillAvatars([{pubkey: record.issuer}])
.then(function(idties) {
var data = {
id: hit._id,
issuer: idties[0],
record: record
};
// Make sure currency if present (fix old data)
if (!record.currency) {
return csCurrency.get()
.then(function (currency) {
record.currency = currency.name;
return data;
});
}
return data;
});
});
}
exports.category = {
all: getCategories,
get: getCategory,
searchText: esHttp.get('/market/category/_search?q=:search'),
search: esHttp.post('/market/category/_search'),
};
exports.record = {
search: search,
load: loadData,
add: esHttp.record.post('/market/record'),
update: esHttp.record.post('/market/record/:id/_update'),
remove: esHttp.record.remove('market', 'record'),
fields: {
commons: fields.commons
},
picture: {
all: esHttp.get('/market/record/:id?_source=pictures')
},
comment: esComment.instance('market')
};
return exports;
}
return EsMarket();
})
;
<ion-view left-buttons="leftButtons" id="editMarket">
<ion-nav-title>
<span class="visible-xs" ng-if="id" ng-bind-html="formData.title"></span>
<span class="visible-xs" ng-if="!loading && !id" translate>MARKET.EDIT.TITLE_NEW</span>
</ion-nav-title>
<ion-nav-buttons side="secondary">
<button class="button button-clear button-icon icon visible-xs visible-sm"
ng-class="{'ion-android-send':!id, 'ion-android-done': id}"
ng-click="save()">
</button>
</ion-nav-buttons>
<ion-content scroll="true">
<div class="row no-padding">
<div class="col col-20 hidden-xs hidden-sm">&nbsp;</div>
<div class="col">
<!-- loading -->
<div class="center padding" ng-if="loading">
<ion-spinner icon="android"></ion-spinner>
</div>
<form name="recordForm" novalidate="" ng-submit="save()">
<div class="list animate-ripple" ng-init="setForm(recordForm)">
<div class="item hidden-xs item-text-wrap">
<h1 ng-if="id" ng-bind-html="formData.title"></h1>
<h1 ng-if="!id" translate>MARKET.EDIT.TITLE_NEW</h1>
</div>
<div class="item">
<h4 class="gray" ng-if="id">
<i class="icon ion-calendar"></i>
{{'COMMON.LAST_MODIFICATION_DATE'|translate}}&nbsp;{{formData.time | formatDate}}
</h4>
<div class="badge badge-balanced badge-editable" ng-click="showRecordTypeModal()">
<span>{{'MARKET.TYPE.'+formData.type|upper|translate}}</span>
</div>
</div>
<!-- pictures -->
<ng-include src="'plugins/es/templates/common/edit_pictures.html'"></ng-include>
<!-- category -->
<a class="item item-icon-right ink"
ng-class="{'item-input-error': form.$submitted && !formData.category.id}"
ng-click="showCategoryModal()">
<span class="item-label" translate>COMMON.CATEGORY</span>
<span class="badge badge-royal" ng-bind-html="formData.category.name"></span>&nbsp;
<i class="gray icon ion-ios-arrow-right"></i>
</a>
<div class="form-errors"
ng-show="form.$submitted && !formData.category.id">
<div class="form-error">
<span translate="ERROR.FIELD_REQUIRED"></span>
</div>
</div>
<!-- title -->
<div class="item item-input item-floating-label"
ng-class="{'item-input-error': form.$submitted && form.title.$invalid}">
<span class="input-label" translate>MARKET.EDIT.RECORD_TITLE</span>
<input type="text" placeholder="{{'MARKET.EDIT.RECORD_TITLE_HELP'|translate}}"
name="title"
id="market-record-title"
ng-model="formData.title"
ng-minlength="5"
required>
</div>
<div class="form-errors"
ng-show="form.$submitted && form.title.$error"
ng-messages="form.title.$error">
<div class="form-error" ng-message="required">
<span translate="ERROR.FIELD_REQUIRED"></span>
</div>
<div class="form-error" ng-message="minlength">
<span translate="ERROR.FIELD_TOO_SHORT"></span>
</div>
</div>
<div class="item item-input item-floating-label">
<span class="input-label" translate>MARKET.EDIT.RECORD_DESCRIPTION</span>
<textarea placeholder="{{'MARKET.EDIT.RECORD_DESCRIPTION_HELP'|translate}}"
ng-model="formData.description"
rows="8" cols="10"></textarea>
</div>
<!-- price -->
<div class="item item-input item-floating-label item-button-right"
ng-class="{'item-input-error': form.$submitted && form.price.$invalid}"
>
<div class="input-label">{{::'MARKET.EDIT.RECORD_PRICE' | translate}} (<span ng-bind-html="formData.currency| currencySymbol:useRelative"></span>)</div>
<input type="number" name="price" placeholder="{{::'MARKET.EDIT.RECORD_PRICE_HELP' | translate}} ({{formData.currency | currencySymbolNoHtml:useRelative}})"
ng-model="formData.price"
number-float>
<span class="gray button button-block icon ion-arrow-swap hidden-xs hidden-sm" ng-click="unitPopover.show($event)">
</span>
<span class="gray button button-block button-clear button-icon visible-xs visible-sm" ng-click="unitPopover.show($event)">
<i class="icon ion-android-more-vertical"></i>
</span>
</div>
<div class="form-errors"
ng-show="form.$submitted && form.price.$error"
ng-messages="form.price.$error">
<div class="form-error" ng-message="numberFloat">
<span translate="ERROR.FIELD_NOT_NUMBER"></span>
</div>
<div class="form-error" ng-message="numberInt">
<span translate="ERROR.FIELD_NOT_INT"></span>
</div>
</div>
<!--dev class="item item-icon-right ink"
ng-show="formData.price"
ng-click="openCurrencyLookup()" >
<span class="item-label gray" translate>MARKET.EDIT.RECORD_CURRENCY</span>
<span class="badge badge-royal">{{formData.currency}}</span>&nbsp;
<i class="gray icon ion-ios-arrow-right"></i>
</dev-->
<div class="item item-floating-label" ng-if="location.enable">
<span class="input-label" translate>MARKET.EDIT.RECORD_LOCATION</span>
<div class="item-input-inset">
<label class="item-input-wrapper">
<input type="text" placeholder="{{'MARKET.EDIT.RECORD_LOCATION_HELP'|translate}}" ng-model="formData.location">
</label>
<button class="button button-small button-positive" ng-click="localize()" ng-if="location.enable">
<i class="icon ion-pinpoint"></i>
</button>
</div>
</div>
<div class="item item-input item-floating-label" ng-if="!location.enable">
<span class="input-label" translate>MARKET.EDIT.RECORD_LOCATION</span>
<textarea placeholder="{{'MARKET.EDIT.RECORD_LOCATION_HELP'|translate}}" ng-model="formData.location"></textarea>
</div>
<!-- buttons -->
<div class="item padding hidden-xs hidden-sm text-right">
<button class="button button-clear button-dark ink" ng-click="cancel()" type="button" translate>
COMMON.BTN_CANCEL
</button>
<button class="button button-positive button-raised ink" type="submit" ng-if="!id" translate>
COMMON.BTN_PUBLISH
</button>
<button class="button button-assertive button-raised ink" type="submit" ng-if="id" translate>
COMMON.BTN_SAVE
</button>
</div>
</div>
</form>
</div>
<div class="col col-20 hidden-xs hidden-sm">&nbsp;</div>
</div>
</div>
</ion-content>
</ion-view>
<ion-view left-buttons="leftButtons">
<ion-nav-title>
<span translate>MARKET.SEARCH.TITLE</span>
</ion-nav-title>
<ion-content class="lookupForm padding no-padding-xs" scroll="true"
bind-notifier="{ rebind:$root.settings.useRelative }">
<form ng-submit="doSearch()">
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="text"
placeholder="{{'MARKET.SEARCH.SEARCH_HELP'|translate}}"
ng-model="search.text"
ng-model-options="{ debounce: 650 }"
ng-change="doSearch()">
</label>
<!-- options -->
<ng-include src="'plugins/es/templates/market/lookup_options.html'"></ng-include>
</form>
<div class="padding-top padding-xs" style="display: block; height: 60px;">
<div class="pull-left">
<h4
ng-if="!search.loading && search.lastRecords && search.results.length" translate>
MARKET.SEARCH.LAST_RECORDS
</h4>
<h4
ng-if="!search.loading && !search.lastRecords && (search.text.length || search.options != null)" translate>
COMMON.RESULTS_LIST
</h4>
</div>
</div>
<div class="center" ng-if="search.loading">
<ion-spinner icon="android"></ion-spinner>
</div>
<div class="padding assertive" ng-if="!search.loading && search.results.length===0 && search.options != null" translate>
COMMON.SEARCH_NO_RESULT
</div>
<div class="list animate-ripple"
ng-if="!search.loading && search.results.length">
<a ng-repeat="rec in search.results"
class="item no-padding-bottom no-padding-top"
ui-sref="app.market_view_record({id: rec.id, title: rec.urlTitle})">
<div class="card card-record stable-bg ink padding-top">
<div class="card-item item-thumbnail-left item-text-wrap padding-right">
<i class="item-image" ng-if="rec.thumbnail" style="background-image: url('{{::rec.thumbnail.src}}')"></i>
<i class="item-image ion-speakerphone" ng-if="!rec.thumbnail"></i>
<h2 ng-bind-html="rec.title"></h2>
<h4 class="gray">
<span ng-if="rec.location">
<i class="icon ion-location"></i>
<span ng-bind-html="rec.location"></span>
</span>
<span ng-show="rec.time">
<span ng-show="rec.location">|</span>
{{::rec.time | formatFromNow}}
</span>
</h4>
<h3 class="gray text-wrap" ng-bind-html="rec.description | truncText:200" ng-if="rec.description"></h3>
<div ng-if="rec.picturesCount > 1"
class="badge badge-balanced badge-picture-count">{{::rec.picturesCount}}&nbsp;<i class="icon ion-camera"></i>
</div>
</div>
<div class="card-footer" style="height: 45px">
&nbsp;
<div class="badge badge-price badge-calm" ng-if="rec.type=='offer'">
<i class="cion-market-offer"></i>
<span ng-if="rec.price" ng-bind-html=":rebind:rec.price|formatAmount:{currency: rec.currency}"></span>
<span ng-if="!rec.price" translate>MARKET.TYPE.OFFER</span>
</div>
<div class="badge badge-energized badge-price" ng-if="rec.type=='need'">
<i class="cion-market-need"></i>
{{'MARKET.TYPE.NEED'|translate}}
</div>
</div>
</div>
</a>
</div>
<ion-infinite-scroll
ng-if="!search.loading && search.hasMore"
spinner="android"
on-infinite="showMore()"
distance="1%">
</ion-infinite-scroll>
</ion-content>
<button id="fab-add-market-record bu"
class="button button-fab button-fab-bottom-right button-assertive icon ion-compose visible-xs visible-sm spin"
ng-click="showNewRecordModal()">
</button>
</ion-view>
<ion-view left-buttons="leftButtons">
<ion-nav-title>
<span translate>MARKET.SEARCH.TITLE</span>
</ion-nav-title>
<ion-content class="lookupForm padding no-padding-xs"
bind-notifier="{ rebind:$root.settings.useRelative }">
<button class="button button-small button-positive button-clear ink pull-right padding-right hidden-sm hidden-xs"
ng-click="showNewRecordModal()">
<i class="icon ion-compose"></i>
{{'MARKET.COMMON.BTN_NEW_AD' | translate}}
</button>
<form ng-submit="doSearch()">
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="text"
class="visible-xs visible-sm"
placeholder="{{'MARKET.SEARCH.SEARCH_HELP'|translate}}"
ng-model="search.text"
ng-model-options="{ debounce: 650 }"
ng-change="doSearch()">
<input type="text"
class="hidden-xs hidden-sm"
placeholder="{{'MARKET.SEARCH.SEARCH_HELP'|translate}}"
id="marketSearchText"
ng-model="search.text"
on-return="doSearch()">
</label>
<!-- options -->
<ng-include src="'plugins/es/templates/market/lookup_options.html'"></ng-include>
</form>
<div class="padding-top padding-xs" style="display: block; height: 60px;">
<div class="pull-left" ng-if="!search.loading">
<h4
ng-if="search.lastRecords && search.results.length" translate>
MARKET.SEARCH.LAST_RECORDS
</h4>
<h4
ng-if="!search.lastRecords && (search.text.length || search.options != null)" translate>
COMMON.RESULTS_LIST
</h4>
</div>
<div class="hidden-xs hidden-sm pull-right">
<a class="button button-text button-small ink icon cion-market-offer"
ng-class="{'button-text-positive': search.type=='offer'}"
ng-click="setAdType('offer')">
{{'MARKET.SEARCH.BTN_OFFERS' | translate}}
</a>
&nbsp;
<a class="button button-text button-small ink icon cion-market-need"
ng-class="{'button-text-positive': search.type=='need'}"
ng-click="setAdType('need')">
{{'MARKET.SEARCH.BTN_NEEDS' | translate}}
</a>
&nbsp;
<button class="button button-small button-stable ink"
ng-click="doSearch()">
{{'COMMON.BTN_SEARCH' | translate}}
</button>
</div>
</div>
<div class="center" ng-if="search.loading">
<ion-spinner icon="android"></ion-spinner>
</div>
<div class="padding assertive" ng-if="!search.loading && search.results.length===0 && search.options != null" translate>
COMMON.SEARCH_NO_RESULT
</div>
<div class="list animate-ripple"
ng-if="!search.loading && search.results.length">
<a ng-repeat="rec in search.results track by rec.id"
class="item item-record item-border-large ink padding-xs"
ui-sref="app.market_view_record({id: rec.id, title: rec.urlTitle})">
<div class="row row-record">
<div class="col item-text-wrap item-thumbnail-left">
<img ng-src="{{::rec.thumbnail.src}}" ng-if="rec.thumbnail">
<i class="item-image ion-speakerphone" ng-if="!rec.thumbnail"></i>
<h2 ng-bind-html="rec.title"></h2>
<h4 class="gray">
<i class="icon ion-location" ng-if="rec.location"></i>
<span ng-bind-html="rec.location"></span>
</h4>
<h4 class="gray" ng-if="rec.time">
<i class="icon ion-clock" ></i>
{{::rec.time | formatFromNow}}
</h4>
<span ng-if="rec.picturesCount > 1"
class="badge badge-balanced badge-picture-count">{{::rec.picturesCount}}&nbsp;<i class="icon ion-camera"></i></span>
</div>
<div class="col col-20">
<h3 class="gray" ng-if="rec.category" ng-bind-html="rec.category.name"></h3>
<div class="badge badge-price badge-calm" ng-if="rec.price">
<i class="cion-market-offer"></i>
<span ng-bind-html=":rebind:rec.price|formatAmount:{currency: rec.currency}"></span>
</div>
<div class="badge badge-energized badge-price" ng-if="!search.type && !rec.price && rec.type=='need'">
<i class="cion-market-need"></i>
{{'MARKET.TYPE.'+rec.type|upper|translate}}
</div>
</div>
<div class="col hidden-sm hidden-xs">
<h3 class="gray text-wrap" ng-bind-html="rec.description | truncText:500" ng-if="rec.description"></h3>
</div>
</div>
</a>
</div>
<ion-infinite-scroll
ng-if="!search.loading && search.hasMore"
spinner="android"
on-infinite="showMore()"
distance="10%">
</ion-infinite-scroll>
</ion-content>
<button id="fab-add-market-record"
class="button button-fab button-fab-bottom-right button-assertive icon ion-compose hidden-md hidden-lg spin"
ng-click="showNewRecordModal()">
</button>
</ion-view>
<div class="item item-toggle dark" ng-if="!search.lastRecords">
<span translate>MARKET.SEARCH.BTN_OPTIONS</span>
<label class="toggle toggle-royal">
<input type="checkbox" ng-model="search.options">
<div class="track">
<div class="handle"></div>
</div>
</label>
</div>
<span class="item item-icon-right" ng-click="showCategoryModal()" ng-if="search.options">
<span translate>COMMON.CATEGORY</span>
<span class="badge badge-royal badge-text-wrap" ng-bind-html="search.category.name"></span>&nbsp;
<i class="gray icon ion-ios-arrow-right"></i>
</span>
<span class="item item-button-right" ng-if="search.options && location.enable">
<span translate>MARKET.SEARCH.BTN_AROUND_ME</span>
<label class="toggle toggle-royal">
<input type="checkbox" ng-model="search.localize">
<div class="track">
<div class="handle"></div>
</div>
</label>
</span>
<span class="item item-button-right" ng-if="search.options && !location.enable">
<span translate>MARKET.SEARCH.LOCATION</span>
<div class="item-input-inset">
<label class="item-input-wrapper">
<input type="text" placeholder="{{'MARKET.SEARCH.LOCATION_HELP'|translate}}"
ng-model="search.location"
ng-model-options="{ debounce: 350 }"
ng-change="doSearch()"/>
</label>
</div>
</span>
<ion-modal-view>
<ion-header-bar class="bar-positive">
<button class="button button-clear" ng-click="closeModal()" translate>COMMON.BTN_CANCEL</button>
<h1 class="title" translate>MARKET.TYPE.TITLE</h1>
</ion-header-bar>
<ion-content class="lookupForm">
<div class="list padding">
<h3 translate>MARKET.TYPE.SELECT_TYPE</h3>
<button class="button button-block button-stable icon icon-left cion-market-offer"
ng-click="closeModal('offer')"
translate>MARKET.TYPE.OFFER</button>
<button class="button button-block button-stable icon icon-left cion-market-need"
ng-click="closeModal('need')"
translate>MARKET.TYPE.NEED</button>
</div>
</ion-content>
</ion-modal-view>
<ion-popover-view class="popover-unit">
<ion-content scroll="false">
<div class="list">
<a class="item item-icon-left"
ng-class="{ 'selected': !useRelative}"
ng-click="setUseRelative(false)">
<i class="icon" ng-class="{ 'ion-ios-checkmark-empty': !useRelative}"></i>
<i ng-bind-html="formData.currency | currencySymbol:false"></i>
</a>
<a class="item item-icon-left"
ng-class="{ 'selected': $parent.useRelative}"
ng-click="setUseRelative(true)">
<i class="icon" ng-class="{ 'ion-ios-checkmark-empty': useRelative}"></i>
<i ng-bind-html="formData.currency | currencySymbol:true"></i>
</a>
</div>
</ion-content>
</ion-popover-view>
<ion-popover-view class="fit has-header">
<ion-header-bar>
<h1 class="title" translate>MARKET.VIEW.MENU_TITLE</h1>
</ion-header-bar>
<ion-content scroll="false">
<div class="list item-text-wrap">
<a class="item item-icon-left positive ink"
ng-if="!canEdit && formData.price && formData.type == 'offer'"
ng-click="buy()">
<i class="icon ion-card"></i>
{{'MARKET.COMMON.BTN_BUY_DOTS' | translate}}
</a>
<a class="item item-icon-left ink"
ng-click="showSharePopover($event)">
<i class="icon ion-android-share-alt"></i>
{{'COMMON.BTN_SHARE' | translate}}
</a>
<a class="item item-icon-left assertive ink "
ng-if="canEdit"
ng-click="delete()">
<i class="icon ion-trash-a"></i>
{{'COMMON.BTN_DELETE' | translate}}
</a>
</div>
</ion-content>
</ion-popover-view>
<ion-view left-buttons="leftButtons" class="market view-record">
<ion-nav-title>
<span translate>MARKET.VIEW.TITLE</span>
</ion-nav-title>
<ion-nav-buttons side="secondary">
<button class="button button-bar button-icon button-clear visible-xs visible-sm" ng-click="edit()" ng-if="canEdit">
<i class="icon ion-android-create"></i>
</button>
<button class="button button-bar button-icon button-clear icon ion-android-more-vertical visible-xs visible-sm"
ng-click="showActionsPopover($event)">
</button>
</ion-nav-buttons>
<ion-content scroll="true">
<div class="row no-padding">
<div class="col col-20 hidden-xs hidden-sm">&nbsp;</div>
<div class="col no-padding">
<div class="center padding" ng-if="loading">
<ion-spinner icon="android"></ion-spinner>
</div>
<ion-list class="animate-fade-slide-in item-text-wrap no-padding-xs">
<div class="item item-text-wrap" ng-class="{'item-thumbnail-left': thumbnail}">
<img ng-src="{{thumbnail.src}}" ng-if="thumbnail">
<h1 class="padding-top" ng-bind-html="formData.title"></h1>
<h2 class="gray hidden-xs">
<a ng-if="formData.location" ui-sref="app.market_lookup({location:formData.location})">
<i class="icon ion-location"></i>
<span ng-bind-html="formData.location"></span>
</a>
<span ng-if="formData.location && formData.category.name">&nbsp;|&nbsp;</span>
<a ng-if="formData.category.name" ui-sref="app.market_lookup({category:formData.category.id})">
<i class="icon ion-flag"></i>
<span ng-bind-html="formData.category.name"></span>
</a>
</h2>
<h4 class="hidden-xs">
<i class="icon ion-clock"></i>
<span translate>COMMON.SUBMIT_BY</span>
<a ng-class="{'positive': issuer.uid, 'gray': !issuer.uid}"
ui-sref="app.wot_identity({pubkey:issuer.pubkey, uid: issuer.name||issuer.uid})">
<ng-if ng-if="issuer.uid">
<i class="icon ion-person"></i>
{{issuer.name||issuer.uid}}
</ng-if>
<span ng-if="!issuer.uid">
<i class="icon ion-key"></i>
{{issuer.pubkey|formatPubkey}}
</span>
</a>
<span>
{{formData.time|formatFromNow}}
<span class="gray hidden-xs">|
{{formData.time | formatDate}}
</span>
</span>
</h4>
<div class="badge badge-balanced">
<span>{{'MARKET.TYPE.'+formData.type|upper|translate}}</span>
</div>
</div>
<div class="item visible-xs no-padding-top no-padding-bottom">
<h2 class="gray">
<a ng-if="formData.location" ui-sref="app.market_lookup({location:formData.location})">
<i class="icon ion-location"></i>
<span ng-bind-html="formData.location"></span>
</a>
<br/>
<a ng-if="formData.category.name" ui-sref="app.market_lookup({category:formData.category.id})">
<i class="icon ion-flag"></i>
<span ng-bind-html="formData.category.name"></span>
</a>
</h2>
<h4>
<i class="icon ion-clock"></i>
<span translate>COMMON.SUBMIT_BY</span>
<a ng-class="{'positive': issuer.uid, 'gray': !issuer.uid}"
ui-sref="app.wot_identity({pubkey:issuer.pubkey, uid: issuer.name||issuer.uid})">
<ng-if ng-if="issuer.uid">
<i class="icon ion-person"></i>
{{issuer.name||issuer.uid}}
</ng-if>
<span ng-if="!issuer.uid">
<i class="icon ion-key"></i>
{{issuer.pubkey|formatPubkey}}
</span>
</a>
<span>
{{formData.time|formatFromNow}}
<span class="gray hidden-xs">|
{{formData.time | formatDate}}
</span>
</span>
</h4>
</div>
<!-- Buttons bar-->
<div class="item large-button-bar hidden-xs hidden-sm">
<button class="button button-stable button-small-padding icon ion-android-share-alt"
ng-click="showSharePopover($event)">
</button>
<button class="button button-calm ink-dark"
ng-click="buy()"
ng-if="!canEdit && formData.price && formData.type == 'offer'">
{{'MARKET.COMMON.BTN_BUY' | translate}}
</button>
<button class="button button-stable icon-left ink-dark"
ng-if="canEdit"
ng-click="delete()">
<i class="icon ion-trash-a assertive"></i>
<span class="assertive"> {{'COMMON.BTN_DELETE' | translate}}</span>
</button>
<button class="button button-calm icon-left ion-android-create ink"
ng-if="canEdit"
ng-click="edit()">
{{'COMMON.BTN_EDIT' | translate}}
</button>
</div>
<ion-item>
<h2>
<span class="text-keep-lines" ng-bind-html="formData.description"></span>
</h2>
</ion-item>
<span class="item item-icon-left item-button-right" ng-if="formData.price">
<i class="icon ion-pricetag"></i>
<span class="dark" ng-bind-html="formData.price | formatAmount:{currency:formData.currency}"></span>
</span>
<div class="lazy-load">
<!-- pictures -->
<ng-include src="'plugins/es/templates/common/view_pictures.html'"></ng-include>
<!-- comments -->
<ng-include src="'plugins/es/templates/common/view_comments.html'"></ng-include>
</div>
</ion-list>
</div>
<div class="col col-20 hidden-xs hidden-sm">&nbsp;</div>
</div>
</ion-content>
</ion-view>
...@@ -40,28 +40,6 @@ ...@@ -40,28 +40,6 @@
</ng-if> </ng-if>
<!-- Main section -->
<ng-if ng-if="enable && extensionPoint === 'menu-main'">
<!-- registry
<ion-item menu-close class="item item-icon-left"
active-link="active"
active-link-path-prefix="#/app/registry"
href="#/app/registry">
<i class="icon ion-ios-book"></i>
<span translate>MENU.REGISTRY</span>
</ion-item>-->
<!-- market
<ion-item menu-close class="item item-icon-left"
active-link="active"
active-link-path-prefix="#/app/market"
href="#/app/market">
<i class="icon ion-speakerphone"></i>
<span translate>MENU.MARKET</span>
</ion-item>-->
</ng-if>
<!-- User section --> <!-- User section -->
<ng-if ng-if="enable && extensionPoint === 'menu-user'" class="visible-xs visible-sm"> <ng-if ng-if="enable && extensionPoint === 'menu-user'" class="visible-xs visible-sm">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment