feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- Base: wintercms/winter branch 1.2 (full framework) - Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS - Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication - Partials: hero (offline-first), features, modes (offline/nube toggle), screenshots, pricing (3 planes), comparison, FAQ, CTA - Plugin VivesPOS.Site with ContactForm - Dockerfile: PHP 8.2 Apache, port 80, healthcheck - Added winter/wn-pages, blog, sitemap, seo plugins - Active theme set to vivespos
This commit is contained in:
77
modules/system/assets/ui/js/chart.meter.js
Normal file
77
modules/system/assets/ui/js/chart.meter.js
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* The goal meter plugin.
|
||||
*
|
||||
* Applies the goal meter style to a scoreboard item.
|
||||
*
|
||||
* Data attributes:
|
||||
* - data-control="goal-meter" - enables the goal meter plugin
|
||||
* - data-value - sets the value, in percents
|
||||
*
|
||||
* JavaScript API:
|
||||
* $('.scoreboard .goal-meter').goalMeter({value: 20})
|
||||
* $('.scoreboard .goal-meter').goalMeter(10) // Sets the current value
|
||||
*/
|
||||
+function ($) { "use strict";
|
||||
|
||||
var GoalMeter = function (element, options) {
|
||||
var
|
||||
$el = this.$el = $(element),
|
||||
self = this;
|
||||
|
||||
this.options = options || {};
|
||||
|
||||
this.$indicatorBar = $('<span/>').text(this.options.value + '%')
|
||||
this.$indicatorOuter = $('<span/>').addClass('goal-meter-indicator').append(this.$indicatorBar)
|
||||
|
||||
$('p', this.$el).first().before(this.$indicatorOuter)
|
||||
|
||||
window.setTimeout(function(){
|
||||
self.update(self.options.value)
|
||||
}, 200)
|
||||
}
|
||||
|
||||
GoalMeter.prototype.update = function(value) {
|
||||
this.$indicatorBar.css('height', value + '%')
|
||||
}
|
||||
|
||||
GoalMeter.DEFAULTS = {
|
||||
value: 50
|
||||
}
|
||||
|
||||
// GOALMETER PLUGIN DEFINITION
|
||||
// ============================
|
||||
|
||||
var old = $.fn.goalMeter
|
||||
|
||||
$.fn.goalMeter = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
var data = $this.data('oc.goalMeter')
|
||||
var options = $.extend({}, GoalMeter.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
||||
|
||||
if (!data)
|
||||
$this.data('oc.goalMeter', (data = new GoalMeter(this, options)))
|
||||
else
|
||||
data.update(option)
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.goalMeter.Constructor = GoalMeter
|
||||
|
||||
// GOALMETER NO CONFLICT
|
||||
// =================
|
||||
|
||||
$.fn.goalMeter.noConflict = function () {
|
||||
$.fn.goalMeter = old
|
||||
return this
|
||||
}
|
||||
|
||||
// GOALMETER DATA-API
|
||||
// ===============
|
||||
|
||||
|
||||
$(document).render(function () {
|
||||
$('[data-control=goal-meter]').goalMeter()
|
||||
})
|
||||
|
||||
}(window.jQuery);
|
||||
Reference in New Issue
Block a user